Могу ли я создать пользователя SSH, который может получить доступ только к определенному каталогу?

45

У меня есть виртуальный частный сервер, к которому я могу подключиться, используя SSH со своей учетной записью root, имея возможность выполнять любую команду linux и, очевидно, получать доступ ко всей области диска.

Я хотел бы создать другую учетную запись пользователя, которая могла бы получить доступ к этому серверу также по SSH, но только к определенному каталогу, например /var/www/example.com/

Например, представьте, что этот пользователь имеет ОГРОМНЫЙ файл error.log (500 МБ), расположенный в /var/www/example.com/logs/error.log папке. При доступе к этому файлу с помощью FTP ему необходимо загрузить 500 МБ, чтобы просмотреть последние строки журнала, но я бы хотел, чтобы он был в состоянии выполнить что-то вроде этого:

tail error.log

Поэтому мне нужно, чтобы он имел доступ к серверу по SSH, но я не хочу предоставлять ему доступ ко всем серверным областям.

Как я могу это сделать?

Ричард Родригес
источник

Ответы:

29

chroot Пользователь.


Обновить:

В статье TechRepublic Винсента Данена говорится:

С выпуском OpenSSH 4.9p1 вам больше не нужно полагаться на сторонние хаки или сложные настройки chroot, чтобы ограничить пользователей своими домашними каталогами или предоставить им доступ к сервисам SFTP.

Отредактируйте / etc / ssh / sshd_config (/ etc / sshd_config в некоторых дистрибутивах) и установите следующие параметры:

Subsystem     sftp   internal-sftp
Match Group sftp
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

Убедитесь, что директива «Match» находится в конце файла. Это говорит OpenSSH, что все пользователи в группе sftp должны быть привязаны к своему домашнему каталогу (который% h представляет в команде ChrootDirectory

Для всех пользователей, которых вы хотите использовать в chroot, добавьте их в группу sftp, используя:

# usermod -G sftp joe
# usermod -s /bin/false joe
# chown root:root /home/joe
# chmod 0755 /home/joe

Приведенная выше команда usermod добавит пользователя joe в группу sftp и установит для его оболочки значение / bin / false, чтобы они абсолютно не могли получить доступ к оболочке. Команды chown и chmod устанавливают необходимые разрешения для каталога. С этими установленными разрешениями пользователю будет разрешено загружать и скачивать файлы, но он не сможет создавать каталоги или файлы в корневом каталоге.

Хронирование учетных записей оболочки немного сложнее, так как требует, чтобы определенные файлы устройств и оболочка были доступны в домашнем каталоге пользователя. Следующие команды создадут очень простую систему chroot в Mandriva Linux:

# mkdir /chroot
# cd /chroot
# mkdir {bin,dev,lib}
# cp -p /bin/bash bin/
# cp -p /lib/{ld-linux.so.2,libc.so.6,libdl.so.2,libtermcap.so.2} lib/
# mknod dev/null c 1 3
# mknod dev/zero c 1 5
# chmod 0666 dev/{null,zero}
# mkdir -p /chroot/home/joe

С учетом вышесказанного пользователь joe может войти в ssh и будет ограничен chroot. К сожалению, это мало что дает, но дает представление о том, как это можно настроить. В зависимости от того, что вы хотите предоставить, вам нужно будет установить дополнительные библиотеки и двоичные файлы.


Сайт сообщества Ubuntu сообщает

Создание chroot

  1. Установите пакеты dchroot и debootstrap.

  2. Как администратор (то есть с помощью sudo) создайте новый каталог для chroot. В этой процедуре /var/chrootбудет использоваться каталог . Для этого введите sudo mkdir /var/chroot в командной строке.

  3. Как администратор, откройте /etc/schroot/schroot.confв текстовом редакторе. Типа cd /etc/schroot, а затем gksu gedit schroot.conf. Это позволит вам редактировать файл.

  4. Добавьте следующие строки в, schroot.confа затем сохраните и закройте файл. Замените your_usernameна ваше имя пользователя.

    [lucid] description = Ubuntu Lucid location = / var / chroot priority = 3 users = your_username groups = sbuild root-groups = root

Откройте терминал и введите:

sudo debootstrap --variant=buildd --arch i386 lucid /var/chroot/ \ 
http://mirror.url.com/ubuntu/

Это создаст базовую «установку» Ubuntu 10.04 (Lucid Lynx) в chroot. Для загрузки пакетов может потребоваться некоторое время. Примечание: вы можете заменить lucid версией Ubuntu по вашему выбору. Примечание. Вы должны изменить вышеуказанное mirror.url.comс помощью URL-адреса действительного локального архивного зеркала. Основной chroot теперь должен быть создан. Введите, sudo chroot /var/chroot чтобы перейти к корневой оболочке внутри chroot.

Настройка chroot

Есть несколько основных шагов, которые вы можете предпринять, чтобы настроить chroot, предоставляя такие средства, как разрешение DNS и доступ к ним /proc.

Примечание: введите эти команды в оболочке, которая находится за пределами chroot.

Введите следующую команду, чтобы смонтировать /proc файловую систему в chroot (необходим для управления процессами):

sudo mount -o bind /proc /var/chroot/proc  

Введите следующее, чтобы разрешить DNS-разрешение изнутри chroot (требуется для доступа в Интернет):

sudo cp /etc/resolv.conf /var/chroot/etc/resolv.conf 

Очень немногие пакеты установлены по умолчанию в chroot (даже sudo не установлен). Используйте apt-get install package_nameдля установки пакетов.

RedGrittyBrick
источник