vsftpd实例:匿名访问共享+系统用户访问控制
FTP环境实例:
某公司由于业务发展需求,现需要在公司内部搭建一台FTP服务器!该公司有数个部门(IT FD HR)和N名员工(fus1 fus2 fus3 fus4 fus5 fus6 fus7 fus8 fus9)使用该服务器!为了保障系统和其他数据的安全,要求用户只能访问FTP服务根目录(/var/ftp)以下的数据;要求根目录下有一个公共目录,该目录所有人都可以访问,并且具有上传下载权限;根目录下还要有每个部门的工作目录,并且仅限该部门的员工访问;在各部门目录下要有一个仅限该部门员工使用的公共目录,还要有每个员工的工作目录,员工目录要求只能该员工自己访问;创建一个特权用户(manager),该用户可以访问根目录下的任何公共目录,并且具有上传下载的权限!为了方便特权用户访问,要求在每个部门的目录被访问时有该部门的提示信息;为了显示人文精神,在用户登录FTP服务器时,要显示欢迎信息!另外,要求匿名用户可以访问,并且所有访问FTP服务器的账户都不能登录到系统!
思路:
1、安装FTP服务器软件,设置SELinux访问权限
2、测试环境是否可用,备份主配置文件
3、创建用户组和用户及其所属目录
4、修改服务器配置文件进行访问控制
5、修改目录访问权限控制访问
6、重启服务并设置开机启动
步骤:
第一步:安装vsftpd软件
[root@feng ~]# yum install vsftpd -y
第二步:设置SELinux安全访问
[root@feng ~]#getsebool -a | grep ftp
[root@feng ~]#setsebool allow_ftpd_full_access 1
第三步:测试环境是否运行正常
[root@feng ~]# service vsftpd start
[root@feng ~]# firefox ftp://127.0.0.1
另:安装ftp客户端测试:
[root@feng ~]# yum install ftp -y
(匿名用户(ftp/anonymous)登录不需要密码)
第四步:备份主配置文件
[root@feng ~]# mkdir -p /backup/vsftpd
[root@feng ~]# cp -p /etc/vsftpd/vsftpd.conf /bachup/vsftpd/vsftpd.conf
第五步:创建用户组及其部门目录
[root@feng ~]# groupadd IT
[root@feng ~]# groupadd FD
[root@feng ~]# groupadd HR
[root@feng ~]# mkdir -p /var/ftp/OU_{IT,FD,HR}
第六步:创建用户及其属主目录
[root@feng ~]# for name in fus{1..3}
> do
> useradd -s /sbin/nologin -d /var/ftp/OU_IT/$name -G IT -m $name
> echo 123456 | passwd --stdin $name
> done
[root@feng ~]# for name in fus{4..6}
> do
> useradd -s /sbin/nologin -d /var/ftp/OU_FD/$name -G FD -m $name
> echo 123456 | passwd --stdin $name
> done
[root@feng ~]# for name in fus{7..9}
> do
> useradd -s /sbin/nologin -d /var/ftp/OU_HR/$name -G HR -m $name
> echo 123456 | passwd --stdin $name
> done
第七步:创建特权用户
[root@feng ~]# useradd -G IT,HR,FD -d /var/ftp/manager -s /sbin/nologin manager
[root@feng ~]# echo 123456 | passwd --stdin manager
第八步:检查用户属性
[root@feng ~]# for name in fus{1..9}; do id $name; done
[root@feng ~]# id manager
第九步:修改服务器主配置文件
[root@feng ~]# cat /etc/vsftpd/vsftpd.conf | grep -vE "^$|#"
anonymous_enable=YES //允许匿名用户登录
local_enable=YES //允许系统用户登录
write_enable=YES //启用全局写权限
local_umask=022 //系统用户权限掩码
anon_umask=022 //匿名用户权限掩码
anon_upload_enable=YES //允许匿名用户上传
anon_mkdir_write_enable=YES //允许匿名用户创建目录
dirmessage_enable=YES //开启目录访问提示
message_file=.message //定义目录访问提示文件
xferlog_enable=YES //开启用户访问日志记录
xferlog_file=/var/log/vsftpd.log //定义日志记录文件的位置及名称(需要自己创建)
xferlog_std_format=YES //定义日志记录的文件格式
connect_from_port_20=YES //定义服务器的连接端口
idle_session_timeout=600 //当超过600s无交互时断开会话
data_connection_timeout=120 //当超过120s无数据时断开传输通道
banner_file=/etc/vsftpd/banner //定义登录提示文件banner的位置
chroot_local_user=YES //锁定用户访问权限到家目录
ls_recurse_enable=YES //允许用户使用ls命令
listen=YES //定义vsftpd工作模式为standalone
pam_service_name=vsftpd //开启vsftpd的PAM认证
userlist_enable=YES //开启userlist访问控制
userlist_deny=NO //仅限userlist中的用户访问(双重否定等于肯定)
tcp_wrappers=YES //开启TCP访问控制(hosts.allow和hosts.deny)
local_root=/var/ftp //锁定系统用户访问的根目录
no_anon_password=YES //匿名用户访问时提示输入密码,可直接访问
第十步:创建主配置文件中定义的文件
vsftpd.log:
[root@feng ~]# touch /var/log/vsftpd.log
banner:
[root@feng ~]# vi /etc/vsftpd/banner
[root@feng ~]# cat /etc/vsftpd/banner
-------------------------------------
Hellow,everyone
welcome to FTPServer!
Good luck!
-------------------------------------
.message:
[root@feng ~]# echo "welcome to IT." > /var/ftp/OU_IT/.message
[root@feng ~]# echo "welcome to FD." > /var/ftp/OU_FD/.message
[root@feng ~]# echo "welcome to HR." > /var/ftp/OU_HR/.message
user_list:
[root@feng ~]# for name in fus{1..9}; do echo $name; done > /etc/vsftpd/user_list
[root@feng ~]# echo ftp >> /etc/vsftpd/user_list
[root@feng ~]# echo manager >> /etc/vsftpd/user_list
第十一步:设置文件目录访问权限
ftp目录的访问权限:
[root@feng ~]# chown root:ftp /var/ftp/
[root@feng ~]# tree /var/ftp
/var/ftp/ 目录权限 目录所有者 目录属组 目录
├── manager drwx------ manager manager manager
├── OU_IT drwxr-x--- root IT OU_IT
│ ├── fus1 drwx------ fus1 fus1 fus1
│ ├── fus2 drwx------ fus2 fus2 fus2
│ ├── fus3 drwx------ fus3 fus3 fus3
│ └── pub_it drwxrwx--- root IT pub_it
├── OU_FD drwxr-x--- root FD OU_FD
│ ├── fus4 drwx------ fus4 fus4 fus4
│ ├── fus5 drwx------ fus5 fus5 fus5
│ ├── fus6 drwx------ fus6 fus6 fus6
│ └── pub_fd drwxrwx--- root FD pub_it
├── OU_HR drwxr-x--- root HR OU_H
│ ├── fus7 drwx------ fus7 fus7 fus7
│ ├── fus8 drwx------ fus8 fus8 fus8
│ ├── fus9 drwx------ fus9 fus9 fus9
│ └── pub_hr drwxrwx--- root HR pub_it
└── pub drwxrwxr-x root ftp pub
第十二步:重启服务,使配置文件生效
[root@feng ~]# ps -ef | grep vsftpd (获取vsftpd进程的PID-2784)
[root@feng ~]# kill -HUP 2784 (2784=vsftpd的进程号)
第十三步:设置vsftpd开机启动
[root@feng ~]# chkconfig vsftpd on