неправильне володіння або режими для компонента каталогу chroot


57

Я створив користувача MY_USER. Встановіть його домашній dir на / var / www / RESTRICTED_DIR, який є шлях, до якого він повинен бути обмежений. Потім я відредагував sshd_config і встановив:

Match user MY_USER
  ChrootDirectory /var/www/RESTRICTED_DIR

Потім я перезапустив ssh. Зробив власника MY_USER (і власника групи) RESTRICTED_DIR, і підтвердив його 755. Я отримую

Accepted password for MY_USER
session opened for user MY_USER by (uid=0)
fatal: bad ownership or modes for chroot directory component "/var/www/RESTRICTED_DIR"
pam_unix(sshd:session): session closed for user MY_USER

Якщо я видалив два рядки з sshd_config, користувач може успішно увійти. Звичайно, він може отримати доступ до всіх серверів. В чому проблема? Я навіть намагався пригнічувати RESTRICTED_DIR до root (коли я десь читав, що хтось вирішує цю проблему, роблячи це). Не вдалося..

Відповіді:


73

Від на manсторінці :

ChrootDirectory
Вказує ім'я шляху каталогу для chroot (2) до після аутентифікації. Усі компоненти імені шляху повинні бути корінними каталогами, які не можна записувати будь-яким іншим користувачем чи групою . Після chroot sshd (8) змінює робочий каталог на домашній каталог користувача.

Моя здогадка, що один або кілька каталогів на шляху не відповідають цим вимогам (я підозрюю, що wwwвін належить або записується вашим веб-користувачем, а не root).
Поверніться та виконайте вказівки, переконавшись, що вимоги, зазначені вище жирним курсивом , виконуються.


Це зводить мене з розуму. Я зробив "chown root: root -R / var / www"; "chmod 775 -R / var / www /"; "usermod -a -G кореневі www-дані". Але я все ще не можу увійти в систему з MY_USER
MultiformeIngegno

1
Вимога знаходиться на шляху компонентів ( /, /var, /var/www, і /var/www/RESTRICTED_DIRвсе вони повинні відповідати вимогам безпеки вище). Це справжній chroot (перегляньте сторінку чоловіка) - домашній каталог вашого користувача повинен існувати в chroot , як це потрібно /binі всі інші речі, які знадобляться вашому користувачеві ...
voretaq7,

2
Гаразд! Вирішено. Я встановив chrooted dir на рівень. Тоді я дав 777 perms оригінальному chrooted_dir. Це працює :)
MultiformeIngegno

1
Незважаючи на те, що написано на сторінці, і навіть із групою, встановленою на "root", мені довелося встановити дозвіл gw до того, як це запрацює (Ubuntu 14.04). На сторінці сторінки повинно бути сказано, що всі компоненти імені шляху мають бути корінними каталогами, які не можна користуватися іншим користувачем або будь-якою групою sudo chown root:root -R /path/to/home; sudo chmod 755 -R /path/to/home
mmell

3
Я знаю, що це досить старе, але замість того, щоб змінювати дозволи для /var/wwwпрямого шляху, які можуть зламати apache, вам буде набагато краще, щоб ваш каталог sftp було іншим шляхом, а потім скористатися картою URL-адрес в Apache, щоб вказати на інший каталог . Перегляньте документацію тут httpd.apache.org/docs/2.4/urlmapping.html у розділіFiles Outside DocumentRoot
Даніель,

32

Каталог ChrootDirectory повинен належати root та мати режим 755:

sudo chown root:root /var/www/RESTRICTED_DIR
sudo chmod 755 /var/www/RESTRICTED_DIR

Гаразд, тепер усі файли в файлі /var/www/RESTRICTED_DIRповинні бути власниками MY_USER, які повинні належати до www-dataгрупи, і мати режим 775, щоб дозволити групові дозволи, як це:

sudo usermod -a -G www-data MY_USER
sudo chown MY_USER:www-data /var/www/RESTRICTED_DIR/*
sudo chmod 775 -R /var/www/RESTRICTED_DIR/*

ПРИМІТКА. Пам'ятайте, що це хороша практика, дозволяючи доступ лише до папки htdocs, якщо ви налаштовуєте apache.


3
Досить впевнений, що це має бути sudo usermod -a -G www-data MY_USERтак, як група повинна прийти після-G
sMyles

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

3

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

Нижче не вийшло:

$ ls -ld /mnt/synology03/files/
dr-xr-xr-x 1 root root 156 Oct  8 20:10 /mnt/synology03/files/
$ ls -ld /mnt/synology03
drwxr-xr-x 7 root root 4096 Oct  1 21:26 /mnt/synology03
$ ls -ld /mnt
drwxr-xr-x 6 root root 4096 Feb  8 10:01 /mnt
$ ls -ld /
drwxr-xr-x 24 root root 4096 Jan 14 09:22 /

Як тільки я це зафіксував, мій chroot почав працювати.

$ sudo chmod 755 /mnt/synology03/files/
$ ls -ld /mnt/synology03/files/
drwxr-xr-x 1 root root 156 Oct  8 20:10 /mnt/synology03/files/
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.