У меня есть пользователь myuser, которому разрешено подключаться только по ssh через sftp. Я бы хотел, чтобы этот пользователь всегда создавал файлы с помощью rwx-rwx-rx и всегда принадлежал группе apache. Я пытался выполнить часть прав доступа к файлам с помощью umask, но в umask файлы и каталоги получают разные разрешения для одного и того же umask. Помощь приветствуется.
1 ответ
Фон
Это вечная проблема 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
чтобы "поймать" изменения ранее.
Группа должна быть унаследована от родительского каталога, не так ли?