Как ограничить доступ через sftp

Материал из База знаний проекта Russian Fedora

Перейти к: навигация, поиск

Многие задавались вопросом- Как ограничить доступ пользователю через sftp только одной домашней папкой Решение очень простое, работает в openssh начиная с версии 4.9:

Добавляем пользователя

groupadd -r sftpusers
useradd tom -g sftpusers

Все возможные ошибки связаны с тем, что неверно выставлены права на ChrootDirectory, либо неверно выставлены владелец

useradd -G sftpusers -s /bin/false -d /home/user1 user1
mkdir /home/user1
chown root.user1 /home/user1
chmod 750 /home/user1

После выполнения этой команды у вас должны быть следующие права на ChrootDirectory:

drwxr-x--- 3 root user1 4096 Май  4 01:16 /home/user1

Т.е записывать в ChrootDirectory пользователь ничего не сможет, поэтому необходимо создать внутри нее еще одну папку /home/user1/files и уже на нее дать необходимые права, например 770 .

Обратите внимание, что /etc/ssh/sshd_config - конфиг сервера, а /etc/ssh/ssh_config - конфигурационный файл клиента!

После этого меняем в /etc/ssh/sshd_config подсистему:

-Subsystem sftp /usr/lib/openssh/sftp-server
+Subsystem sftp internal-sftp

Подсистему меняем для того, чтобы когда пользователь оказался в своей директории он мог пользоваться sftp. Если этого не сделать, то внутрь директории необходимо будет положить все файлы, необходимые для работы стандартной оболочки shell ( т.е сам shell, /usr/lib/openssh/sftp-server и наконец некоторые файлы из /dev, как сказано в мануале: "/dev nodes such as null(4), zero(4), stdin(4), stdout(4), stderr(4), arandom(4) and tty(4) devices." )

Далее добавляем в /etc/ssh/sshd_config следующее:


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

После изменений перезапускаем сервер:

service sshd restart

Ошибки, возникают если:

Поиск ошибок:

Выставляем в /etc/ssh/sshd_config

LogLevel Debug

Рестартуем сервер:

service sshd restart

После этого смотрим в /var/log/secure


http://blog.antage.name/posts/sftp-chroot-%D0%B2-%D0%B4%D0%BE%D0%BC%D0%B0%D1%88%D0%BD%D1%8E%D1%8E-%D0%BF%D0%B0%D0%BF%D0%BA%D1%83.html http://www.gossamer-threads.com/lists/openssh/dev/44657