Как работают local_umask и file_open_mode?
У меня были некоторые проблемы с разрешениями файлов, когда локальные пользователи загружали свои файлы через vsftp на сервер.
Я хотел, чтобы файлы имели все 766 разрешений. После долгих проб и ошибок я обнаружил, что должен был установить настройки следующим образом:
local_umask=011
file_open_mode=0777
Но я не знаю, почему это приводит к 766 разрешениям. Кто-нибудь может объяснить это?
3 ответа
Демон vsftpd создаст права доступа к файлу как 0777. Из этого local_umask
(0011) вычитается. Umask по существу удаляет разрешения, которые вы не хотите, чтобы пользователи имели. Это приводит к тому, что права доступа к файлу пользователя будут установлены на 0766.
Для получения дополнительной информации см. Эту статью о правах доступа к файлам.
Значение umask вычитается из настройки открытого режима. Если вы не предоставите пользовательское значение umask, будет использовано значение по умолчанию (077), что приведет к нежелательному результату.
Вы получаете это разрешение, потому что:
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