Назад | Перейти на главную страницу

Нужна помощь - ограничьте доступ пользователя sftp для других пользователей главная-> подпапка

Мне удалось найти большую помощь с заключением пользователя в тюрьму в его собственную домашнюю папку и ограничением их только 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.