Я знаю, что этот вопрос уже обсуждался, но, читая посты, я не мог понять ответы, потому что некоторые говорили: «Да, umask может работать», а другие говорят: «Команда openSSH put всегда сохраняет разрешения».
Прежде всего, чтобы уточнить:
- Я использую OpenSSH 5.9 на RHEL 6.2
- Я настроил привязанный SFTP-сервер, используя
internal-sftp
подсистему,-u 0002
для umask - Я точно не использую опцию
-p
или-P
Из того, что я прочитал с одной стороны: есть много способов определить umask для SFTP-передач:
- вариант
-u
изinternal-sftp
(илиsftp-server
), так как OpenSSH 5.4 - создайте оболочку для
sftp-server
(в которой мы явно устанавливаем umask - кстати, это не подходит для chrooted окружения) - добавить конкретную конфигурацию в
pam.d/sshd
файл
С другой стороны, я прочитал:
SFTP-клиент и сервер OpenSSH передают разрешения (как расширение) и создают удаленный файл с разрешениями на локальной стороне. AFAICT, нет способа отключить это поведение.
Итак, я сделал следующий тест:
На моем клиенте я создал файл MYFILE
и каталог MYDIR
с разрешениями 600 и 700.
Затем с помощью sftp
команд:
mkdir => the new directory has permissions following the umask (OK)
put MYFILE => MYFILE has same permissions as on client (KO)
put -r MYDIR => MYDIR has same permissions as on client (KO)
Если изменить разрешения MYFILE
и MYDIR
на стороне клиента, и загрузить снова, я получаю новые разрешения на стороне сервера.
Я pam.d
тоже попробовал решение, но оно ничего не изменило.
Так что теперь я в замешательстве:
Из того, что я тестировал, и из части того, что я читал, я бы сказал, что OpenSSH всегда сохраняет права доступа. Но так как есть много сообщений, в которых говорится, что можно определить umask, я могу представить, что я сделал неправильную вещь в своих тестовых конфигурациях.
Буду признателен за опытную обратную связь.
Спасибо.
The server SHOULD NOT apply a 'umask'
применяется только тогда, когда клиент отправляет информацию о правах доступа . Когда клиент не отправляет информацию о правах доступа, он намерен применить umask!