Я следовал этому руководству { http://john.parnefjord.se/node/62 } для установки другого пользователя (joeuser) в группу www-data, но демаскировка не устанавливается, несмотря на эти изменения. Папка в /var/www/example.com/ теперь принадлежит группе www-data, но только пользователь www-data может ее изменять. Я следил и повторно выполнял каждый шаг, упомянутый в этом руководстве.
Я раскомментировал оператор echo в следующем скрипте:
#!/bin/bash
#/bin/echo `/bin/date` > /tmp/sftp-test.txt
#/bin/echo 'Starting SFTP server from wrapper script to set correct umask...' >> /tmp/sftp-test.txt
umask 0002;
/usr/lib/openssh/sftp-server
Но ничего не отображается / не регистрируется. Думаю, это означает, что скрипт не запускается. Как теперь отследить, что происходит, когда joeuser входит в систему? На сервере работает Ubuntu 11.4.
Вы правы, это означает, что скрипт вообще не запускается, что означает, что umask не устанавливается, поэтому файл / папки не будут созданы с правильными разрешениями.
Это в системе Ubuntu?
Не могли бы вы опубликовать вывод ls -l /usr/lib/openssh/
и cat /etc/ssh/sshd_config | grep Subsystem
Обновить: Я действительно заставил это работать, переименовав sftp-server
к sftp-server.orig
а затем создать сценарий с именем sftp-server
с этим в нем:
#!/bin/bash
umask 002
/usr/lib/openssh/sftp-server.orig
Обязательно chmod +x
. Я также перезапустил ssh
услуги, но в этом случае, вероятно, не было необходимости.
Тем не менее, я обнаружил, что в openssh 5.4 есть опция для установки sftp umask, поэтому в будущем может быть менее хакерский способ сделать это, но сервер Ubuntu Lucid, на котором я это пробовал, был версии 5.3.
Кроме того, я подключился с помощью ноутбука с Ubuntu Maverick с помощью клиента Nautilus sftp. Он будет создавать каталоги с правильной umask, но НЕ будет создавать файлы с правильной umask. Я подозреваю, что это проблема, связанная с тем, что клиент Nautilus принудительно использует маску umask для созданных файлов, и может работать правильно при использовании такого клиента, как filezilla или winscp. Обновить: Я только что проверил, что файлы, скопированные с помощью winscp, имеют правильные права доступа. Это прискорбно для клиента Nautilus sftp.
Вы также можете попробовать что-то вроде этого: http://en.positon.org/post/A-solution-to-the-umask-problem%3A-inotify-to-force-permissions