Мне удалось найти большую помощь с заключением пользователя в тюрьму в его собственную домашнюю папку и ограничением их только sftp, но я работаю над более продвинутым решением.
Что я пытаюсь сделать и не могу найти никаких документов, так это то, что я хочу ограничить доступ к sftp для пользователя, но предоставить им доступ к папке сайта внутри домашней папки другого пользователя.
Два пользователя - u1 и u2, две домашние папки - / home / u1 & / home / u2. U1 имеет веб-сайт в подпапке - / home / u1 / public_html / site1 / Я хочу поместить u2 в тюрьму в папку site1 пользователя u1 выше. Мог бы использовать некоторую помощь в этом.
Примечания: - Я не могу использовать что-то вроде vsftpd, потому что моя система довольно хорошо заблокирована. - chown папки site1 пользователя u1 - это u1: www-data, и я хотел бы сохранить его таким образом, если это возможно. Я читал, что для chroot папка должна принадлежать root: root, но я думаю, это испортит ситуацию на стороне веб-сервера. - Если мне нужно использовать vsftpd, мне просто нужна помощь в понимании того, как одновременно обеспечить безопасность системы.
Заранее спасибо за вашу помощь.
ОБНОВЛЕНИЕ1:
добавил пользователя u2
настроить приватные ключи ssh
изменил владельца / home / u2 на root: root
изменил файл / etc / ssh / sshd_config:
#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp -u 0002
Match User u2
ChrootDirectory /home/u2
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
добавлен u2 в группу www-data
добавлена папка / home / u2 / site1
связал папку u1, к которой мне нужен доступ u2, с помощью этой команды:
sudo mount --bind /home/u1/public_html/site1/public /home/u2/site1
изменил все разрешения для всех файлов / папок в / home / u2 / site1, чтобы включить права записи для группы:
chmod -R 775 /home/u2/site1
сделать все будущие файлы / папки принадлежащими www-data:
chmod g+s /home/u2/site1/
переключился на обоих пользователей и сделал новые файлы / папки разрешениями на запись группы:
umask 002
зашел в u2 /home/u2/.bashrc И /home/u2/.profile и добавил umask 002 в конце каждого файла
Все работает - u2 не может использовать ssh, но может использовать sftp и может видеть только / home / u2 и выше. НО, я все еще не могу получить какие-либо новые файлы / папки для автоматического разрешения групповой записи. Любая помощь была бы замечательной. Спасибо.
ОБНОВЛЕНИЕ2:
Хорошо, сделал пару тестов. Странные результаты:
создал папку через sftp с u2 под названием test, и у нее были разрешения rwxr-sr-x (755, верно?), и он смог войти в sftp как u1 и смог войти в эту папку, но не загрузить файл, но смог удалить эту папку.
Как u1 я смог загрузить файл, и его разрешения стали rw-rw-r-- (664), как мы и пытались сделать. Также как u1 я создал папку с именем test2, и она предоставила разрешения rwxrwsr-x (775), как мы и хотели.
Как u2 я могу загрузить sftp в папку 2 и загрузить файл, но разрешения по-прежнему rw-r - r-- (644), но МОГУ удалить его с помощью u1 sftp.
Я думаю, что что-то происходит с тюрьмой или что-то с учетной записью u2, не позволяющей запускать определенную службу, или что-то, что позволит правильной umask закрепиться. Мысли?
ОБНОВЛЕНИЕ3
Хорошо, попробовал что-то, и это сработало. Путаница точно! Надеюсь, кто-нибудь сможет объяснить, почему это сработало.
В файле / etc / ssh / sshd_config я закомментировал строку ForceCommand internal-sftp и перезапустил ssh, и это сработало. Счастлив, но сбит с толку. Спасибо.
Match User u2
ChrootDirectory /home/u2
X11Forwarding no
AllowTcpForwarding no
#ForceCommand internal-sftp
Если пользователю u2 нужен только доступ /home/u1/public_html/site1
через SFTP и не имеет доступа к системе каким-либо другим способом: вы можете предоставить ему этот каталог в качестве домашнего каталога и следовать обычным процедурам chroot.
Альтернативно:
Linux bind
mount позволяет вам сопоставить одну часть существующей файловой системы со вторым местом в вашем дереве каталогов. Привязка монтирования не изменяет права доступа к файловой системе.
mkdir /home/u2/site1
mount -t bind /home/u1/public_html/site1 /home/u2/site1
Пользователь u2 все еще может быть привязан к chroot, и если разрешения файловой системы позволили бы ему писать в / home / u1 / public_html / site1, он теперь может получить доступ к этому местоположению на / home / u2 / site1 из своего chroot.