22 февраля 2009

Настройка umask для sftp сессии

Столкнулся с тем, что при работе по sftp не действует параметр umask, прописанный в профиле пользователя ~/.bash_profile. Файлы создаются с umask установленным в системе по умолчанию.

Связано это с тем, что для сессии sftp создается non-login non-interactive shells. Для такой оболочки настройки берутся из файла ~/.bashrc. Чтобы изменить umask для sftp сессии редактируем файл ~/.bashrc следующим образом - находим и комментируем следующую строку (строка находится в начале файла):
#[ -z "$PS1" ] && return
Вместо неё пишем следующий код (значение umask ставите которое вам нужно):
if [ -z "$PS1" ]; then
umask 0007
return
fi
После этого соединяемся по sftp, создаем директорию и смотрим с какими правами она создана:
sftp> mkdir test
sftp> ls -l
...
drwxrwx--- 2 user user 4096 Feb 22 16:57 test
...
Видим, что права соотвествуют установленному параметру umask 0007.

Также можно почитать:

2 коммент.:

Drkwv 10 января 2011 г. в 17:24  

Сделал как вы написали. Подключился через sshfs. Делаю touch random.txt. Права 0711, а должны были бы быть 0770 раз umask 0007. Написал umask вообще в начале .bashrc - все та же картина. Добавил umask в fuse-опцию sshfs - на клиенте сразу везде 0770, на сервере как продолжали создаваться 0711, так и продолжают создаваться. Что-нибудь еще можно попробовать?

Сергей Афонькин 11 января 2011 г. в 21:07  

Drkwv, какой шел у пользователя на сервере? Может не bash, а какой-то другой? В моем примере подключение через sftp, а не через sshfs. При umask 0007 файлы создаются с правами 0660, а директории с правами 0770.

Отправить комментарий

  © Blogger template Blue Surfing by Ourblogtemplates.com 2008

Наверх