如何创建来宾 ftp 用户并授予其使用 SSH 访问特定子文件夹的权限?

如何创建来宾 ftp 用户并授予其使用 SSH 访问特定子文件夹的权限?

我刚刚在 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。

相关内容