Как работают local_umask и file_open_mode?

15087
OrangeTux

У меня были некоторые проблемы с разрешениями файлов, когда локальные пользователи загружали свои файлы через vsftp на сервер.

Я хотел, чтобы файлы имели все 766 разрешений. После долгих проб и ошибок я обнаружил, что должен был установить настройки следующим образом:

local_umask=011 file_open_mode=0777 

Но я не знаю, почему это приводит к 766 разрешениям. Кто-нибудь может объяснить это?

9

3 ответа на вопрос

10
Ignacio Vazquez-Abrams

Vsftpd daemeon будет создавать права доступа к файлам в 0777 . Из этого вычитается local_umask( 0011 ). Umask по существу удаляет разрешения, которые вы не хотите, чтобы пользователи имели. Это приводит к тому, что права доступа к файлу пользователя будут установлены на 0766 .

Для получения дополнительной информации см. Эту статью о правах доступа к файлам .

Да, я понял это, я знаю хитрость. Но как это работает? Почему я не могу установить только 766? OrangeTux 11 лет назад 2
1
Timo Reimann

The umask value is subtracted from the open mode setting. If you don't provide a custom umask value, the default one (077) is used, leading to a result you don't want.

-1
Fernando Kosh

Вы получаете это разрешение, потому что:

1) Установив local_umask = 011, вы указываете vsftp установить:

0: чтение, запись и выполнение 1: чтение и запись 1: чтение и запись

Это равно chmod 766.

2) Значения file_open_mode = 0777 не анализируются,

Здесь вы можете найти очень хорошее объяснение того, что такое umask и как его использовать: https://www.cyberciti.biz/tips/understanding-linux-unix-umask-value-usage.html

Это не ответ на вопрос. (1) ОП хочет, чтобы файлы были защищены 766, а не 666, поэтому вы обращаетесь к неправильному сценарию. (2) OP имеет конфигурацию, которая работает. Вопрос в том, почему это работает. Вы не обращались к этому. Scott 6 лет назад 0
Хорошо, @ Скотт, отредактировал ответ. Fernando Kosh 6 лет назад 0

Похожие вопросы