Дозволи на написання користувачем SFTP


10

У мене налаштування лише для sftp користувачів:

Match Group sftponly
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

Я отримую таке повідомлення у своєму secure.log:

fatal: bad ownership or modes for chroot directory

З ключовим словом відповідності входять деякі матеріали безпеки з ним ... каталоги повинні володіти root, а каталоги повинні бути chmod 755 (drwxr-xr-x). Таким чином, користувачеві неможливо мати дозволи на запис у папки, якщо він доступний лише для кореневого користувача та встановлений для непридатного запису для груп через безпеку ssh.

Хтось знає про гарну роботу навколо?


Чи мають користувачі chrooted свої ChrootDirectory? Чи можуть вони отримати доступ до нього?
Джон У. Сміт

Відповіді:


2

У мене такі ж настройки на нашому сервері. Ми використовуємо таку ж конфігурацію SSHD. Домашні каталоги користувачів належать root, і всередині них є папки documentsта public_htmlналежать відповідні користувачі. Потім користувачі входять за допомогою SFTP та записують у ці папки (а не безпосередньо в домашню). Оскільки SSH для них заборонено, він прекрасно працює. Ви можете налаштувати, які каталоги будуть створені для нових користувачів у / etc / skel / (принаймні, у openSUSE, я не так знайомий з іншими дистрибутивами).

Іншою можливістю буде ACL ( документація openSUSE ) - вона може додати дозвіл на запис відповідного користувача для його домашнього каталогу.


1
Для мене в Debian Jessie (8.10) встановлення ACL в будинку користувача не працює. Коли користувач намагається увійти за допомогою SFTP, він отримуєpacket_write_wait: Connection to 10.0.0.42 port 22: Broken pipe
Дрю Чапін

7

Нещодавно ми знайшли рішення, яке виглядає так:

/ etc / ssh / sshd_config:

...

Subsystem sftp internal-sftp

Match Group sftponly
    ChrootDirectory /home
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand internal-sftp

Дозволи довідника:

root@server:~ # chown root:root /home
root@server:~ # chmod 111 /home
root@server:~ # chmod 700 /home/*

Тепер він /homeзадовольняє вимогам ChrootDirectoryі не може бути перелічений обмеженими користувачами, але sftponlyкористувачі не зможуть увійти, якщо їх домашні каталоги налаштовані як зазвичай ( /home/$LOGNAME): в умовах, що захищаються, їх домашні каталоги знаходяться не всередині, /homeа безпосередньо під корінь ( /).

обхід 1

Встановіть будинки обмежених користувачів, як вони відображаються під chroot:

root@server:~ # usermod -d /username username

застереження 1

Якщо хтось із необмежених користувачів або якийсь сценарій адміністрування використовує розширення bash's tilde, як ~usernameвоно розшириться до /usernameтеперішнього часу, що не означає, що мається на увазі.

Також адміністратор, який створює sftponlyкористувачів, повинен пам’ятати про використання домашнього не за замовчуванням. Розв’язується зі сценарієм. Який адміністратор повинен пам’ятати, щоб використовувати.

обхід 2

Це альтернатива попередній, яку ми закінчили використовувати:

root@server:~ # ln -s . /home/home

Тобто створити симпосилання всередині /homeвласного ім’я. Тепер під chroot /home/usernameвказується на той самий каталог, що і без chroot. Для обмеженого користувача, який увійшов у систему за допомогою sftp, він виглядає як /username. Цей каталог можна писати для власника (обмежений користувач). Користувач з обмеженими можливостями не може перелічити батьківські та домашні каталоги жодного з братів і сестер за іменем.

Єдине, що особливе у sftponlyкористувача, - це його участь у sftponlyгрупі. З нами було легше впоратися, ніж із способом вирішення проблеми 1.

застереження 2

  1. Ви не можете мати користувача з іменем "home" з домашнім каталогом /home/home
  2. Ви повинні бути обережними зі сценаріями, які переходять /homeієрархію та слідують за посиланнями.

Привіт артм чи будь-який інший читач, я знаю, що це старий пост, але ви можете допомогти мені зрозуміти обхід 2, будь ласка? У мене є користувач (ftpuser), якого потрібно ув'язнити в домашній каталог (/ home / ftpuser /), це я можу отримати, але / home / ftpuser, звичайно, має бути 755. Мені потрібен ftpuser, щоб я міг створювати файли над папками у своєму домашньому каталозі. яке символьне посилання мені потрібно створити, і яке значення повинен мати мій ChrootDirectory?
Нахабний

4

Потрібно створити структуру всередині домашнього каталогу користувача, як, наприклад, в пані та зовні. Ці режиси повинні належати користувачеві, і там він зможе розміщувати та отримувати файли.


0

Ви повинні створити таку структуру каталогу:

/ додому / користувача

/ home / user / home / user <- справжній режисер, до якого користувач матиме доступ

Необов'язково:

/home/user/.ssh/authorized_keys <- якщо ви хочете аутентифікувати відкритий ключ


0

Посилаючись на розділ «Дозволи до каталогу» у відповіді від @artm (який я щойно перевірив) .. Я виявив:

root@server:~ # chmod 111 /home <- Does not work

Це не дозволяє з'єднанню sftp працювати над ubuntu, виконуючи лише дозволи на все, тобто 111.

Я виявив, що:

root@server:~ # chmod 555 /home

Працює з підключенням до sftp з дозволами Read and Execute, тобто 555. Не впевнений, чи відрізняються різні смаки debian від інших, але це те, що працює на моїй установці ubuntu.


0

Створюючи користувача, ви повинні встановити право власності chownна кожен dir для кожного користувача.

Наприклад:

sudo chown usertest:groupsftp /home/rootsftp/usertest
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.