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, но я не хочу предоставлять ему доступ ко всем серверным областям.

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

2 ответа2

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 для установки пакетов.

16

ИМХО, ваш лучший выбор - установить ssh chroot jail, то есть минимальную среду bash в /var/www/example.com/ dir. Для этого вы можете выполнить:

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .