2

У меня есть пользователь myuser, которому разрешено подключаться только по ssh через sftp. Я бы хотел, чтобы этот пользователь всегда создавал файлы с помощью rwx-rwx-rx и всегда принадлежал группе apache. Я пытался выполнить часть прав доступа к файлам с помощью umask, но в umask файлы и каталоги получают разные разрешения для одного и того же umask. Помощь приветствуется.

1 ответ1

2

Фон

Это вечная проблема sftp и обмена файлами. Это связано с тем, что полученные разрешения основаны на исходном разрешении файла на стороне пользователя, а аргумент umask (-u) не форсирует такие разрешения, а только удаляет нежелательные разрешения. Это означает, что только если пользователь пытается загрузить файл с разрешением 0777 , он применяется и сокращается до 0775 . В противном случае это просто осталось как было. Например, если у пользователя есть файл, сохраненный в его файловой системе с разрешением 0700 , он также появится после загрузки как 0700 .

Решение

Недавно мы решили эту проблему в Fedora, применив патч, требующий точного разрешения для новых загруженных файлов с помощью ключа -m на sftp-server . Это основано на этой ошибке:

https://bugzilla.mindrot.org/show_bug.cgi?id=1844

Это доступно в текущей версии CentOS 7.2. Из журнала изменений:

 - Add sftp option to force mode of created files (#1197989)

Временное решение

Не существует другого элегантного решения, кроме некоторого периодически запускаемого скрипта (от cron), который исправляет неправильные разрешения. Это будет одна строчка в bash, но я думаю, вы можете подумать о некоторых. Я могу подробнее остановиться на этом, если вам интересно.

Или вы можете использовать inotify чтобы "поймать" изменения ранее.


Группа должна быть унаследована от родительского каталога, не так ли?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .