vsftpd实例:匿名访问共享+系统用户访问控制

  • 来源:网络
  • 更新日期:2020-07-13

摘要:建站服务器 FTP环境实例: 某公司由于业务发展需求,现需要在公司内部搭建一台FTP服务器!该公司有数个部门(IT FD HR)和N名员工(fus1 fus2 fus

建站服务器

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


新网虚拟主机