У меня были некоторые проблемы с разрешениями файлов, когда локальные пользователи загружали свои файлы через vsftp на сервер.
Я хотел, чтобы файлы имели все 766 разрешений. После долгих проб и ошибок я обнаружил, что должен был установить настройки следующим образом:
local_umask=011 file_open_mode=0777
Но я не знаю, почему это приводит к 766 разрешениям. Кто-нибудь может объяснить это?
3 ответа на вопрос
10
Ignacio Vazquez-Abrams
Vsftpd daemeon будет создавать права доступа к файлам в 0777 . Из этого вычитается local_umask( 0011 ). Umask по существу удаляет разрешения, которые вы не хотите, чтобы пользователи имели. Это приводит к тому, что права доступа к файлу пользователя будут установлены на 0766 .
Да, я понял это, я знаю хитрость. Но как это работает? Почему я не могу установить только 766?
OrangeTux 12 лет назад
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 не анализируются,
Это не ответ на вопрос. (1) ОП хочет, чтобы файлы были защищены 766, а не 666, поэтому вы обращаетесь к неправильному сценарию. (2) OP имеет конфигурацию, которая работает. Вопрос в том, почему это работает. Вы не обращались к этому.
Scott 7 лет назад
0
Хорошо, @ Скотт, отредактировал ответ.
Fernando Kosh 7 лет назад
0