Чи можу я створити SSH користувача, який може отримати доступ лише до певного каталогу?


45

У мене є віртуальний приватний сервер, до якого я можу підключитися до використання SSH з моїм кореневим обліковим записом, маючи змогу виконувати будь-яку команду 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

Переконайтеся, що в кінці файлу є директива "Збіг". Це говорить про 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 може вторгнутись і обмежиться chroot. На жаль, це не дуже добре, але це дає вам уявлення про те, як це можна налаштувати. Залежно від того, що ви хочете надати, вам потрібно буде встановити додаткові бібліотеки та бінарні файли.


На сайті спільноти Ubuntu йдеться

Створення хроту

  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] опис = Ubuntu Lucid location = / var / chroot пріоритет = 3 користувача = your_username groups = побудувати 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для встановлення пакетів.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.