Я создал пользователя 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 на root (поскольку я где-то читал, что кто-то решил эту же проблему, сделав это). Не повезло..
Из в man
страница:
ChrootDirectory
Задает путь к каталогу, в который после аутентификации будет использоваться chroot (2). Все компоненты пути должны быть корневыми каталогами, которые не доступны для записи другим пользователям или группам.. После chroot sshd (8) меняет рабочий каталог на домашний каталог пользователя.
Я предполагаю, что один или несколько каталогов на пути не соответствуют этим требованиям (я подозреваю, что www
принадлежит или доступен для записи вашему веб-пользователю, а не root).
Вернитесь назад и следуйте инструкциям, убедившись, что требования выше в жирный курсив которые встретились.
Каталог 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
group и иметь режим 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.
После устранения неполадок сегодня я понял, что 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/