VSFTP 配置用户名密码方式访问[测试通过]

实例 :公司内部现在有一台 FTP  和 WEB  服务器,FTP  的功能主要用于维护公司的网站内容,包括上传文件、创建目录、更新网页等等。公司现有两个部门负责维护任务,他们分别使用 team1 和 team2 帐号进行管理。先要求仅允许 team1  和 team2  帐号登录 FTP  服务器,但不能登录本地系统,并将这两个帐号的根目录限制为/var/www/html,不能进入该目录以外的任何目录。 ftp和www web服务器相结合。 

www web 服务器根目录:/var/www/html 

只允许:team1 和 team2 两用户可以上传,vsftp 禁止匿名。 

 分析: 

将 FTP  和 WEB  服务器做在一起是企业经常采用的方法,这样方便实现对网站的维护,为了增强安

全性,首先需要使用仅允许本地用户访问,并禁止匿名用户登录。其次使用chroot功能将team1和

team2锁定在/var/www/html目录下。如果需要删除文件则还需要注意本地权限。 

 

解决方案: 

(1)建立维护网站内容的 ftp帐号 team1和 team2并禁止本地登录,然后设置其密码。 

# useradd -s /sbin/nologin team1          #创建 team1 用户,并禁止登录系统。 

# useradd -s /sbin/nologin team2          #创建 team2 用户,并禁止登录系统。 

# echo "123456" | passwd --stdin team1 #设置 team1 用户密码。 

Changing password for user team1. 

passwd: all authentication tokens updated successfully. 

# echo "123456" | passwd --stdin team2 #设置 team2 用户密码。 

Changing password for user team2. 

passwd: all authentication tokens updated successfully. 

(2)配置 vsftpd.conf  主配置文件并作相应修改 

#yum install -y vsftpd

# cp /etc/vsftpd/vsftpd.conf  /etc/vsftpd/vsftpd.conf.bak    #备份的 FTP 配置文件,以便需要还原时覆盖当前的 FTP 配置文件。 

# vim /etc/vsftpd/vsftpd.conf    #编辑 FTP 配置文件,修改如下内容:(未提及内容保持不变)

anonymous_enable=NO    #禁止匿名用户登录 
local_enable=YES      #允许本地用户登录
local_root=/var/www/html    #新增配置,设置本地用户的根目录为/var/www/html  。 
chroot_list_enable=YES     #取消#注释,激活 chroot 功能。 
chroot_list_file=/etc/vsftpd/chroot_list    #取消#注释,设置锁定用户在根目录中的列表文件。此文件存放要锁定的用户名。 
allow_writeable_chroot=YES      #新增配置,允许锁定的用户有写的权限。

修改完成后保存并退出。 

(3)建立/etc/vsftpd/chroot_list文件,添加 team1和 team2帐号 

# touch /etc/vsftpd/chroot_list   #创建 chroot_list 文件。 

# ll !$ 

ll /etc/vsftpd/chroot_list 

-rw-r--r-- 1 root root 0 Nov 10 17:08 /etc/vsftpd/chroot_list 

# vim /etc/vsftpd/chroot_list     #写入以下内容,一行一个用户名。 

team1 

team2

(4)创建目录修改本地权限 

# mkdir -p /var/www/html/    #创建/var/www/html/目录

# ll -d /var/www/html/    #以长格式查看/var/www/html/目录权限,-d 选项用于查看目录本身,不包含目录下的文件。 

drwxr-xr-x. 2 root root 4096 Oct    6    2011 /var/www/html/ 

# chmod -R o+w /var/www/html/    #赋予/var/www/html/目录和该目录下所有文件的写权限。 

# ll -d /var/www/html/             #以长格式查看/var/www/html/目录权限

drwxr-xrwx. 2 root root 4096 Oct    6    2011 /var/www/html/ 

(5)重启 vsftpd  服务使配置生效 

# systemctl restart vsftpd 

# cp /etc/passwd /var/www/html/    #随意复制一个文件放到FTP根目录下,便于测试。

(6)测试 

客户端用 lftp 登陆查看: 

# lftp 192.168.1.63 -u team1,123456 

lftp [email protected]:~> ls 

-rw-r--r--        1 0                0                        1384 Jul 30 01:56 passwd 

lftp [email protected]:/> 

能列出ftp目录中文件,说明配置成功!

补充:大家和我一样照着做,但是测试时是不是提示却是这样的结果:

[root@CentOS7-63 ~]# lftp 192.168.3.63 -u team1,123456

lftp [email protected]:~> ls          

ls: 登录失败: 530 Login incorrect.              

lftp [email protected]:~> 

分析一下,这个是提示530,账号密码错误,但是创建时候没错呀!应该是哪里没配置对。

经过学神老师的提醒,让我查一下配置文件中是不是有pam_service_name=vsftpd

让我注释去掉,去编辑/etc/pam.d/vsftpd这个PAM认证文件修改认证顺序!

解决如下:

vim /etc/pam.d/vsftpd 

查找这行,将这行注释掉

auth       required    pam_shells.so

修改后的样子:

#auth       required    pam_shells.so

再次重启vsftpd服务试试,是不是可以了!

版权声明:
作者:WaterBear
链接:https://l-t.top/1728.html
来源:雷霆运维
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>