Як додати ssh користувача, який має лише права доступу до певної папки?


17

Як додати ssh користувача, який має лише права доступу до певної папки?

useradd -d /var/www/xyz.com.tr/musteri  -s /bin/bash -g sshd musteri

Я створив користувача, який називається musteri. Я встановив його домашню папку та групу. Отже, я хочу інтегрувати musteriкористувачів у "/var/www/xyz.com.tr/musteri". Я не хочу, щоб він мав доступ до іншої папки.


Ви хочете, щоб користувач мав повний доступ до оболонки або лише протоколи копіювання файлів, такі як sftp та rsync?
Жил 'ТАК - перестань бути злим'

Якщо останній, ви можете розглядати scponlyяк оболонку, можливо, що працює в chrootрежимі, щоб обмежити йому доступ до цього каталогу та ніде більше.
Шадур

1
@Gilles - я хочу отримати доступ через sftp. Але я не хочу, щоб він мав доступ до іншої папки.
Cell-o

1
@ Cell-o: Якщо вам потрібно лише декілька протоколів передачі файлів, а не оболонок, використовуйте chroot плюс scponly або rssh (Google scponly chrootабо rssh chrootмає призвести вас до howtos).
Жил 'ТАК - перестань бути злим'

Як щодо використання ACL?
fpmurphy

Відповіді:


19

Здається, ви хочете, щоб ваш müşteriler мав доступ до передачі файлів до папки, не надаючи їм оболонок. Це добре, тому що, як вказував binfalse , давати людям снаряди з обмеженим доступом є складним, оскільки снарядам для доступу до всіх речей, розкиданих по системі, просто потрібно працювати.

Щоб надати SFTP доступ до певної папки, ви можете зробити щось подібне.

  1. Додайте до групи нову групу, скажімо, "sftponly".
  2. Додайте будь-яких користувачів вашої системи, які мали б обмежити права на цю групу. Ви також можете надати їм обмежені оболонки типу / bin / true, але це не потрібно.
  3. Змініть файл ssh config (зазвичай /etc/ssh/sshd_config) за допомогою цих рядків
    Підсистема sftp Internal-sftp

    Зіставити групу sftponly
        ChrootDirectory% h
        ДозволитиTCP для переадресації немає
        X11 Передача ні
        ForceCommand Internal-sftp

Це активізує підсистему sftp всередині SSH та змусить членів цієї системної групи використовувати лише цю систему під час входу в систему. Це також додасть їх до своїх домашніх каталогів. Ви можете змінити це в підпапку своїх домашніх директорій, а також на щось подібне, ChrootDirectory %h/musteri_sftpщоб вони не змогли побачити решту своїх системних файлів, але входитимуть безпосередньо у спеціальну підпапку своєї домашньої папки.

Колай гельсин.


Öncelikle teşekkürler. ;) Як ви вже згадували, я створив SFTP.But, у мене є проблема щодо iptables.Ось моє правило. -> RH-Firewall-1-INPUT -m стан - держава NEW -m tcp -p tcp --dport 21 -j ACCEPT
Cell-o

1
Birşey değil. У той час як FTP використовує порт 21, SFTP - це протокол, схожий на ftp , який працює над каналом SSH, тому він буде використовувати порт SSH, який за замовчуванням становить 22
Калеб,

Зауважте, що ви також повинні знайти та прокоментувати будь-яку раніше існуючу команду підсистеми (наприклад, підсистема sftp / usr / lib / openssh / sftp-сервер)
CnrL

Вирішив мою проблему І дізнався кілька зручних турецьких фраз! Бонус!
eimajent що

2

На мою думку, це дуже важко, якщо не неможливо. Коли користувач підключається через SSH, йому, принаймні, потрібна оболонка, у вашому випадку - bash. Для виконання /bin/bashйому потрібні дозволи на доступ /bin. bashсамому потрібно прочитати деякі матеріали з /etc(наприклад /etc/bash.bashrc), тому користувачеві також потрібен доступ /etc. Якщо припустити, що користувач не хоче бачити лише в цьому каталозі, він може прочитати файл, але для виконання, наприклад, vimйому також потрібен доступ /usr/bin.
Це лише невелика демонстрація, є ще деякі залежності, наприклад, я не знаю, що буде, якщо користувач не матиме доступу до нього /tmp.

Вам варто подумати над своїм наміром. Ви просто хочете, щоб хтось мав доступ для читання / запису до частини вашого веб-сервісу? Тоді ви можете встановити щось на зразок FTP для експорту певного каталогу до цього користувача. Тож він може читати / записувати ці файли без доступу до SSH.
Ще одним приємним рішенням буде сховище. Наприклад, встановіть GIT-репо і дозвольте користувачу його клонувати. Він може зробити свої зміни локально і надіслати вам виправлення. Ви можете вирішити, застосовувати цей патч чи ні, відкат баггі-патчів також дуже простий.


rbashпокликаний робити саме це.
bahamat

Ця річ називається обмеженою оболонкою . Але оскільки Cell-o хоче лише дозволяти передачу файлів, це не правильний інструмент.
Жил 'ТАК - перестань бути злим'
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.