Как ограничить пользователя одной папкой и не позволить ему удалить его папку

28

У меня есть сервер Ubuntu на digitalocean, и я хочу предоставить кому-то папку для своего домена на моем сервере, моя проблема в том, что я не хочу, чтобы этот пользователь видел мои папки или файлы или мог удалить их папку.

Как я могу ограничить этого пользователя в своей папке и не дать ему выйти и посмотреть другие файлы / каталоги?

Бадр
источник
Вы можете использовать отдельные учетные записи пользователей для этой цели.
Мартин фон Виттих
Или, может быть, Jailkit
FloHimself
chmod не является хорошим решением, потому что я не могу использовать его для всех папок на моем сервере, которые я использовал, прежде чем он сможет переместить свою папку
badr
На самом деле я понятия не имею о группе, потому что раньше не пользовался ею. Можете ли вы объяснить мне, в чем ее польза?
Badr
Другой способ - serverfault.com/questions/497011/… .
СЛМ

Ответы:

26

Я решил свою проблему следующим образом:

Создать новую группу

$ sudo addgroup exchangefiles

Создайте каталог chroot

$ sudo mkdir /var/www/GroupFolder/
$ sudo chmod g+rx /var/www/GroupFolder/

Создайте каталог для записи в группе

$ sudo mkdir -p /var/www/GroupFolder/files/
$ sudo chmod g+rwx /var/www/GroupFolder/files/

Отдай их обоих новой группе

$ sudo chgrp -R exchangefiles /var/www/GroupFolder/

после этого я пошел /etc/ssh/sshd_configи добавил в конец файла:

Match Group exchangefiles
  # Force the connection to use SFTP and chroot to the required directory.
  ForceCommand internal-sftp
  ChrootDirectory /var/www/GroupFolder/
  # Disable tunneling, authentication agent, TCP and X11 forwarding.
  PermitTunnel no
  AllowAgentForwarding no
  AllowTcpForwarding no
  X11Forwarding no

Теперь я собираюсь добавить нового пользователя с именем Обамы в мою группу:

$ sudo adduser --ingroup exchangefiles obama

Теперь все сделано, поэтому нам нужно перезапустить службу ssh:

$ sudo service ssh restart

обратите внимание: пользователь теперь не может ничего делать из fileкаталога, я имею в виду, что весь его файл должен находиться в папке «Файл».

Бадр
источник
1
Я переключился пользователей , как sudo su - obamaи до сих пор он может видеть чужие файлы @badr
Alper
11

Ограничения - это разумная проблема, и она должна определяться последовательно. Что вы можете сделать, это определить ограниченную оболочку для пользователя в качестве оболочки по умолчанию .

Например, установка /bin/rksh(ограниченный kornshell) вместо предопределенной оболочки пользователя в качестве оболочки по умолчанию для этого пользователя в /etc/profile.

ПРИМЕЧАНИЕ: если исполняемый файл с таким именем не существует в вашей системе, то создайте жесткую ссылку ln /bin/ksh /bin/rkshи kshпо ее имени определите, является ли она ограниченной или нет.

Ограничено оболочка будет (например) предотвращает делать cdкоманду, или указав команду с /(явно заданным путем) в вызове, и он запрещает менять PATH, SHELLили ENVпеременный, и выходные переназначения также запрещены.

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

Janis
источник
Этот ответ будет намного проще, чем настройка среды chroot, поэтому я проголосовал за него.
Ажрей
5

Команда chrootпозволяет вам создать ограниченный корень для пользователя, в этом вопросе объясняется понятие chrootи как его использовать.

Обновление: поиск тюрьмы chroot, установленной на цифровом океане , приводит к дальнейшей документации, специфичной для их среды. Вот пара, которая, я думаю, связана с тем, что вам может понадобиться.

Как настроить среды Chroot для тестирования на Ubuntu 12.04 VPS

Как разрешить ограниченный доступ по SSH для пользователя chroot

Вот тот, который относится к джейлкиту , который предложил FloHimself .

X Тянь
источник
да, они объясняют это, но они не объясняют, как его использовать, я попытался с некоторой похвалой, но вот что я получаю: chroot: не удалось выполнить команду '/ bin / bash': такого файла или каталога нет
badr
1
Да, но теперь вы слышали о chroot-тюрьме, вы могли бы провести больше исследований, я обновил ответ с некоторыми ссылками на документы по Digital Ocean, которые дают дополнительные объяснения с учетом их среды.
X Тянь