Фон

Фон

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

решение1

Фон

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

Решение

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

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, чтобы «перехватить» изменения раньше.


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

Связанный контент