快速部署FTP
一、安装软件包
[root@CentOS6 ~]$yum install vsftpd #服务器安装软件包
[root@CentOS6 ~]$yum install ftp #客户端安装软件包
二、准备虚拟账号
(1)生成账号数据库文件
[root@CentOS6 ~]$cd /etc/vsftpd/
[root@CentOS6 /etc/vsftpd]$vim /etc/vsftpd/vusers.txt
tom #奇数行为虚拟账号
123123 #偶数行为密码
jerry
123123
[root@CentOS6 /etc/vsftpd]$db_load -T -t hash -f vusers.txt vusers.db
-T 允许应用程序能够将文本文件转译载入进数据库
-t 指定转译载入数据库类型
hash 使用hash加密
-f 指定账户文本文件
(2)创建pam配置文件
[root@CentOS6 /etc/vsftpd]$vim /etc/pam.d/vsftpd.db
auth required pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers
db后指定的是生成的数据库文件,只是省略了后缀
(3)准备系统账号及其ftp服务根目录
[root@CentOS6 /etc/vsftpd]$useradd -d /var/ftproot -s /sbin/nologin vuser
[root@CentOS6 /etc/vsftpd]$chmod 755 /var/ftproot
-d 指定家目录
-s 指定shell类型
并给创建的根目录设置权限
(4)配置vsftpd
[root@CentOS6 /etc/vsftpd]$vim /etc/vsftpd/vsftpd.conf
pam_service_name=vsftpd.db
guest_enable=YES
guest_username=vuser
指定pam模块
开启虚拟帐号映射
指定映射系统账号
三、测试服务连通性
(1)关闭SElinux
[root@CentOS6 /etc/vsftpd]$setenforce 0
[root@CentOS6 /etc/vsftpd]$getenforce
Permissive
(2)关闭防火墙
[root@CentOS6 ~]$service iptables stop
[root@CentOS6 ~]$service iptables status
iptables: Firewall is not running.
(3)重载服务
[root@CentOS6 /etc/vsftpd]$service vsftpd reload
Starting vsftpd for vsftpd: [ OK ]
(4)在客户端测试连通
[root@CentOS6 ~]$ftp 172.18.46.162 #尝试IP登录指定ftp服务器
Connected to 172.18.46.162 (172.18.46.162).
220 (vsFTPd 2.2.2)
Name (172.18.46.162:root): tom #输入虚拟账号
331 Please specify the password.
Password: #输入对应密码
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
登录成功
五、配置不同虚拟账户权限
(一)创建账号配置目录
[root@CentOS6 /etc/vsftpd]$mkdir /etc/vsftpd/vusers.d
[root@CentOS6 /etc/vsftpd]$vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vusers.d
在vsftp主配置文件中制定配置目录位置
(二)准备各账号配置文件
[root@CentOS6 /etc/vsftpd]$touch vusers.d/tom
[root@CentOS6 /etc/vsftpd]$touch vusers.d/jerry
[root@CentOS6 /etc/vsftpd]$vim vusers.d/tom
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
[root@CentOS6 /etc/vsftpd]$vim vusers.d/jerry
local_root=/app/ftproot
tom账号设置:允许上传 允许创建 允许删除修改
jerry账号设置:指定默认根目录
(三)基于新根目录给映射系统账号授以响应权限
[root@CentOS6 /etc/vsftpd]$setfacl -m u:vuser:rwx /app/ftproot
[root@CentOS6 /etc/vsftpd]$getfacl /app/ftproot/
getfacl: Removing leading '/' from absolute path names
/# file: app/ftproot/
/# owner: root
/# group: root
user::rwx
user:vuser:rwx
group::r-x
mask::rwx
other::r-x
六、最终测试结果
(1)测试tom账户权限
[root@CentOS6 ~]$ftp 172.18.46.162
Connected to 172.18.46.162 (172.18.46.162).
220 (vsFTPd 2.2.2)
Name (172.18.46.162:root): tom
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls #查看
227 Entering Passive Mode (172,18,46,162,129,48).
150 Here comes the directory listing.
drwxr-xr-x 2 0 0 4096 Oct 11 07:12 check
226 Directory send OK.
ftp> put /app/46-reset.sh 46-reset.sh #测试上传权限
local: /app/46-reset.sh remote: 46-reset.sh
227 Entering Passive Mode (172,18,46,162,176,251).
150 Ok to send data.
226 Transfer complete.
1872 bytes sent in 0.0883 secs (21.19 Kbytes/sec)
ftp> mkdir shiyan #测试创建权限
257 "/shiyan" created
ftp> ls
227 Entering Passive Mode (172,18,46,162,63,153).
150 Here comes the directory listing.
-rw------- 1 501 501 1872 Oct 11 09:22 46-reset.sh
drwxr-xr-x 2 0 0 4096 Oct 11 07:12 check
drwx------ 2 501 501 4096 Oct 11 09:22 shiyan
226 Directory send OK.
ftp> rmdir shiyan #测试删除权限
250 Remove directory operation successful.
ftp> ls
227 Entering Passive Mode (172,18,46,162,251,143).
150 Here comes the directory listing.
-rw------- 1 501 501 1872 Oct 11 09:22 46-reset.sh
drwxr-xr-x 2 0 0 4096 Oct 11 07:12 check
226 Directory send OK.
(2)测试jerry账号区别设置
[root@CentOS6 ~]$ftp 172.18.46.162
Connected to 172.18.46.162 (172.18.46.162).
220 (vsFTPd 2.2.2)
Name (172.18.46.162:root): jerry
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls #查看,登录根目录不同于tom账号
227 Entering Passive Mode (172,18,46,162,247,140).
150 Here comes the directory listing.
drwxr-xr-x 2 0 0 4096 Oct 11 07:13 show
226 Directory send OK.