плохое владение или режимы для компонента каталога chroot


57

Я создал пользователя MY_USER. Установите его домашний каталог в / 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

Если я удалил 2 строки из sshd_config, пользователь сможет успешно войти в систему. Конечно, он может получить доступ ко всему серверу. В чем проблема? Я даже пытался прикрепить RESTRICTED_DIR к руту (когда я где-то читал, что кто-то решил эту проблему, делая это). Не повезло..

Ответы:


73

От на manстранице :

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

Я предполагаю, что один или несколько каталогов на пути не соответствуют этим требованиям (мое подозрение wwwпринадлежит или доступно для записи вашему веб-пользователю, а не root).
Вернитесь и следуйте инструкциям, убедившись, что требования, выделенные жирным курсивом , выполнены.


Это сводит меня с ума. Я сделал "chown root: root -R / var / www"; "chmod 775 -R / var / www /"; msgstr "usermod -a -G root www-data". Но я все еще не могу войти через MY_USER
MultiformeIngegno

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

2
Хорошо! Решаемые. Я установил уровень в chroot. Затем я дал 777 пермисин оригинальному chrooted_dir. Это работает :)
MultiformeIngegno

1
Несмотря на то, что написано на man-странице, и даже с группой, настроенной на «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

Это работает, но я не могу загружать новые файлы в каталог, я могу только изменять файлы, созданные ранее с учетной записью root и владельцем.
длопезгонзалес

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.