Як створити користувача FTP із конкретним / dir / доступом лише на установці Centos / linux


44

Тож я перебуваю на установці VPS - CentOS Linux. У мене на сервері vsFTPd. В даний час у мене є доступ до сервера через мого кореневого користувача, але зараз я намагаюся створити нового користувача з FTP доступом до певного каталогу лише на сервері, я зробив наступне:

1. mkdir /var/www/mydomain.com
2. mkdir /var/www/mydomain.com/html
3. useradd <-username>
4. passwd <-username>
5. chown –R <-username> /var/www/mydomain.com
5. groupadd <-groupname>
6. gpasswd -a <-username> <-groupname>
7. chgrp -R <-groupname> /var/www/mydomain.com
8. chmod -R g+rw /var/www/mydomain.com

Що я намагаюся зробити, це створити користувача, щоб ТОЛЬКО мати доступ /var/www/mydomain.com - я помітив, що користувач правильно входить у потрібну папку, однак користувач може потім переглядати "назад" до інших каталогів. Я хочу, щоб користувач тримався у певній папці і не міг "переглядати" назад .

Будь-які ідеї?

Я знайшов різні статті про хронування, але просто не зрозумів, як використовувати їх у кроках, включених вище.


digitalocean.com/community/tutorials/… Ви можете слідкувати за цим, щоб вирішити свою проблему
Джек

для тих , хто перебуває на Ubuntu 18 Оце конкретної версії digitalocean.com/community/tutorials / ...
Гній

Відповіді:


39

Це досить просто.

У файл vsftpd.conf слід додати наступну опцію

chroot_local_user=YES

Документація всередині файлу конфігурації сама собою пояснює:

# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().

Це означає, що користувач просто матиме доступ до папки, яку ви налаштували як ДОМАШНЄЮ користувача. Нижче я маю приклад запису користувача passwd:

upload_ftp:x:1001:1001::/var/www/sites/:/bin/bash

Встановіть домашній каталог користувача за допомогою наступної команди

usermod -d /var/www/my.domain.example/ exampleuser

Примітка. У моєму прикладі цей користувач також є дійсним користувачем для деяких запланованих завдань всередині Linux. Якщо у вас немає такої потреби, замініть оболонку користувача на, /sbin/nologinа не на bash.


Привіт nwildner! Велике спасибі, що знайшли час, щоб відповісти мені на це. Тож у мій файл vsftpd.conf ive додав наступний рядок "chroot_local_user = ТАК" - тоді, як я розумію, мені потрібно додати рядок, подібний до того, який ви показуєте моєму користувачеві? Повинен визнати, що я не зовсім впевнений, що писати там із прикладом, який ви надаєте. "1001" тощо. що це? Припустимо, мого користувача називають: "im_a_linux_noob", а каталог для цього користувача: "/var/www/mydomain.com" - як би це виглядало?
користувач1231561

І чи зможу я це зробити без додаткових кроків того, що я зробив на своїй посаді? Отже, роблячи 1-8, а потім додаючи те, що ви описуєте, слід робити трюк?
користувач1231561

Привіт. Наведений вище приклад - це лише рядок (модифікований, звичайно) /etc/passwdфайлу, який представляє користувача, який називається upload_ftp, 1001: 1001 - його ідентифікатор користувача та ідентифікатор групи, / var / www / sites - домашній каталог користувача (і параметр, з якого читається vsftpd) та / bin / bash, оболонка. Можливо , що не вистачає у вашому випадку є домашній каталог для користувача, і вона може бути вирішена за допомогою наступної команди: usermod -d /var/www/mydomain.com <username>. Ура :)

3
Так, велике спасибі Хоча одне питання. Це добре працює вхід через звичайний FTP, проте коли я входжу як SFTP - тоді я можу переглянути ще раз - будь-які ідеї?
користувач1231561

1
Звичайно, тому що sftp обробляє ваш ssh-сервер, а не ваш ftp-сервер. По-сирому: SFTP = SSH + FTP; FTPS = FTP + SSL. Тут є тема про sftp, і я процитую її для дублювання теми aviod нормально? ;) unix.stackexchange.com/a/64541/34720

6

Після зміни конфігурації на включення chroot_local_user=YES

Ви можете змінити оболонку користувача /usr/sbin/nologinтак, щоб, якщо пароль витік, ви зменшили певний ризик (встановіть і домашній каталог). Оболонку потрібно також вказати /etc/shells, або автентифікація не вдасться.

usermod -d /var/www/my.domain.example -s / usr / sbin / nologin exampleuser

-d, --home HOME_DIR Новий каталог користувачів. Якщо задано параметр -m, вміст поточного домашнього каталогу буде переміщено до нового домашнього каталогу, який створюється, якщо він ще не існує.

-s, --shell SHELL Ім'я нової оболонки для входу користувача. Якщо встановити це поле порожнім, система вибирає оболонку для входу за замовчуванням.

https://security.appspot.com/vsftpd/FAQ.txt


4

Нижче наведено кроки, щоб налаштувати користувача та дозволити користувачеві отримати доступ лише через FTP (тобто не SSH), а також обмежити доступ до певного каталогу (домашнього користувача) у proftpd :

  1. Додати нового користувача: adduser newusername

  2. Встановити пароль: passwd newusername

  3. Змініть домашній каталог користувача з типового на нову папку:

    usermod -d /target/directory username

  4. Відредагуйте shellsфайл: vi /etc/shellsі додайте /dev/nullв кінці

  5. Змініть newusernameзапис у passwdфайлі: vi /etc/passwdдодати /./перед newusernameтим, щоб запис виглядав так:

    newusername:x:502:502::/home/ftp/./newusernamehomedirectory/:/dev/null

    Деталі для кроків 4 і 5 тут:

  6. Відредагуйте /etc/proftpd/proftpd.confфайл і не коментуйте рядокDefaultRoot ~


-4

Встановіть права доступу до кореневої папки на 711 за допомогою кореневого облікового запису.


-4

Виконайте цю команду:

useradd -d ftp_user:chown 711 /etc/init.d/

2
Спробуйте розширити свою посаду, щоб мати принаймні корисне пояснення чи документацію.
HalosGhost

Це жахлива відповідь. Ви фактично надаєте користувачу ftp повний доступ до каталогу /etc/init.d/ - повне безумство. 711 пояснено - permissions-calculator.org/decode/0711
Tisch
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.