我刚刚在 GoDaddy 上获得了一个虚拟专用服务器。我获得了简单控制面板。似乎没有办法通过此控制面板创建来宾 ftp 用户,我被告知必须通过 SSH 创建。我有一个名为 Putty 的程序,它可以通过 SSH 登录到服务器。我熟悉登录,但有人知道要使用哪些命令来创建来宾 ftp 用户并授予他们对特定文件夹的读写权限吗?
问候 gourav
答案1
以下是有关如何在 CentOS Linux 中创建用户、安装 vsftpd 以及配置 chroot 的概述。
创建用户并设置密码:
[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 ~]#
请注意,useradd 的“-s /sbin/nologin”选项将允许用户通过 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。