Я знаю, що це питання вже обговорювалося, але, читаючи дописи, я не міг зрозуміти відповіді, тому що одні сказали "так, 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 середовища btw) - додати конкретну конфігурацію у
pam.d/sshdфайл
З іншого боку, я прочитав:
Клієнт і сервер OpenSSH SFTP передають дозволи (як розширення) та створюють віддалений файл з дозволами на локальній стороні. 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 можна визначити, я можу уявити, що я роблю неправильно в своїх тестових конфігураціях.
Буду вдячний за досвідчені відгуки.
Дякую.