Я хочу установить разрешение по умолчанию для всех файлов в папке, включая вновь загруженные, на определенное значение, скажем, 644, вместо того, чтобы делать "chmod 644" все время.
Есть ли команда, делающая это возможным?
Я хочу установить разрешение по умолчанию для всех файлов в папке, включая вновь загруженные, на определенное значение, скажем, 644, вместо того, чтобы делать "chmod 644" все время.
Есть ли команда, делающая это возможным?
В качестве альтернативы, вы можете установить umask для всех имен входа sftp в файле конфигурации sshd (/etc/ssh/sshd_config в моем окне Debian). Для этого добавьте -u 022
в строку подсистемы sftp следующим образом:
Subsystem sftp /usr/lib/openssh/sftp-server -u 022
С man sftp-server
:
-u umask
Sets an explicit umask(2) to be applied to newly-created files and directo‐
ries, instead of the user's default mask.
Я потратил много времени на поиск более полного ответа на этот вопрос. Настройка другого umask для sftp - это хорошо, но это не универсальный ответ, поскольку umask ограничивает только разрешения и не предоставляет дополнительных. Какие именно разрешения получит файл, загруженный через sftp, зависит также от прав доступа к исходному файлу и от клиента, используемого для загрузки.
Например, я установил umask на своем сервере (OpenSSH, на сервере Red Hat) sftp на 0002, но если я загружу текстовый файл с разрешениями 0600 в исходную систему с помощью клиента OpenSSH sftp, он все равно будет иметь 0600 разрешений в пункте назначения. В частности, это означает, что я не могу, насколько мне известно, гарантировать, что файлы, загружаемые на этот сервер sftp, вообще имеют какие-либо групповые разрешения, что, в свою очередь, означает, что я также не могу использовать списки управления доступом (ACL) для расширения разрешений другим пользователям или группам. ,
Попробовать два метода, которые могли бы решить эту проблему, хотя в обоих случаях это более обходные пути, чем решения:
Я наткнулся на сообщение в блоге на positon.org, в котором хорошо объясняется опция inotify, с примерами и даже сценариями инициализации. Лучше всего читать там, но в случае, если сайт исчезнет, ключевая команда:
inotifywait -mrq -e CREATE --format %w%f /tmp/mytest/ | while IFS= read -r FILE; do chmod g=u "$FILE"; done
Как бы это ни было хорошо, я все равно был бы очень заинтересован в том, чтобы с помощью функции или хитрости получить тот же результат в sftp или, по крайней мере, в оболочке, без привлечения отдельных утилит.
Файлы разрешений создаются в зависимости от вашего umask
. Чтобы получить 644 разрешения, установите значение umask 022 (umask 022
).
Чтобы сделать это изменение постоянным, поместите эту команду в удаленные серверы ~/.profile
(в зависимости от вашей оболочки).
.Profile будет находиться в домашнем каталоге вашей учетной записи пользователя. Когда вы войдете в ssh, вы будете находиться в вашем домашнем каталоге, но вы также можете заставить оболочку перейти в ваш домашний каталог, набрав:
cd
Если вы используете Linux и ваша пользовательская оболочка - bash, как и большинство людей, у вас, вероятно, не будет .profile, но у вас могут быть .bash_profile и .bashrc. Установите umask в любом из этих файлов, а не создавайте .profile.