Назад | Перейти на главную страницу

Как мне создать гостя ftp-пользователя и предоставить доступ к определенной подпапке с помощью SSH?

У меня только что появился виртуальный выделенный сервер в GoDaddy. Получил Простую панель управления. Похоже, что нет способа создать гостя ftp-пользователя через эту панель управления, и мне сказали, что он должен быть создан через SSH. У меня есть программа Putty, которая может входить на сервер через SSH. Я знаком с входом в систему, но знает ли кто-нибудь, какие команды нужно использовать для создания гостевого ftp-пользователя и предоставления им доступа для чтения и записи к определенной папке?

С уважением, гурав

Вот обзор того, как создать пользователя, установить vsftpd и настроить chroot в CentOS Linux.

Создание пользователя и установка пароля:

[root@server ~]# useradd -s /sbin/nologin ftpuser
[root@server ~]# passwd ftpuser
Changing password for user ftpuser.
New UNIX password: 
Retype new UNIX password: 
passwd: all authentication tokens updated successfully.
[root@server ~]#

Обратите внимание, что параметр «-s / sbin / nologin» для useradd позволит пользователю подключаться через FTP, но запретит им доступ через SSH.

Установка FTP-сервера:

[root@server ~]# yum install vsftpd
Total download size: 141 k
Is this ok [y/N]: y
Downloading Packages:
vsftpd-2.0.5-16.el5_6.1.i386.rpm                         | 141 kB     00:00     
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : vsftpd                                                   1/1 

Installed:
  vsftpd.i386 0:2.0.5-16.el5_6.1                                                

Complete!
[root@server ~]#

Добавление директивы для блокировки локальных пользователей в их домашних каталогах:

[root@server ~]# echo "chroot_local_user=YES" >> /etc/vsftpd/vsftpd.conf 
[root@server ~]#

Запуск FTP-сервера:

[root@server ~]# /etc/init.d/vsftpd start
Starting vsftpd for vsftpd:                                [  OK  ]
[root@server ~]#

Здесь я создал тестовый файл в домашнем каталоге пользователя:

[root@server ~]# touch /home/ftpuser/testfile
[root@server ~]#

И, наконец, подключился по FTP:

[root@server ~]# ftp localhost
Connected to localhost.localdomain.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (localhost:root): ftpuser
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/"
ftp> dir
227 Entering Passive Mode (127,0,0,1,231,117)
150 Here comes the directory listing.
-rw-r--r--    1 0        0               0 May 04 13:29 testfile
226 Directory send OK.
ftp>

Вы можете видеть, что пользователю сообщают, что он находится в "/", когда на самом деле он находится в своем домашнем каталоге / home / ftpuser, который был создан, когда мы создали пользователя. Им не разрешено подниматься на более высокий уровень в файловой системе:

ftp> pwd
257 "/"
ftp> cd ..
250 Directory successfully changed.
ftp> pwd
257 "/"
ftp> ls
227 Entering Passive Mode (127,0,0,1,163,240)
150 Here comes the directory listing.
-rw-r--r--    1 0        0               0 May 04 13:29 testfile
226 Directory send OK.
ftp>

И им не разрешено подключаться через SSH:

[root@server ~]# ssh ftpuser@localhost
ftpuser@localhost's password: 
Last login: Wed May  4 08:38:54 2011 from localhost.localdomain
This account is currently not available.
Connection to localhost closed.
[root@server ~]#

Бонус: настройте vsftpd для запуска при загрузке:

[root@server ~]# chkconfig vsftpd on
[root@server ~]#

Наконец, я не уверен, что у GoDaddy по умолчанию включен SELinux на своих серверах. Если они это сделают, вы можете получить эту ошибку при попытке войти в систему с вашим пользователем FTP:

[root@server ~]# ftp localhost
Connected to localhost.localdomain.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (localhost:root): ftpuser
331 Please specify the password.
Password:
500 OOPS: chroot
Login failed.
ftp>

SELinux - это дополнительный уровень списков ACL, встроенный в систему, чтобы обеспечить очень детальные параметры безопасности, но он немного сложен. Многие люди отключают его, и я бы порекомендовал вам сделать это, если вы только начинаете. Вот как вы временно установите его в разрешающий режим:

[root@server ~]# setenforce 0
[root@server ~]#

И если вы хотите сделать это навсегда, вы можете отредактировать / etc / sysconfig / selinux.