一步一步学会linux之三 :vsftpd的 应用举例

                            一步一步学会linux之三 :vsftpd的 应用举例

                                  一、用户控制
先见一个保存用户数据的文件

/etc/ftpusers
tom
jack
默认是拒绝这些用户登陆的(上面分别死tom 和jack两个用户) 但可以通过修改/etc/pam.d/ftp中的sense值为allow 就表示只允许登陆的用户如下:

————————————————————————————————————————————
[root@service root]# more /etc/pam.d/ftp
#%PAM-1.0
auth       required     /lib/security/pam_listfile.so item=user sense=deny file=/etc/
ftpusers onerr=succeed
auth       required     /lib/security/pam_unix.so shadow nullok
auth       required     /lib/security/pam_shells.so
account    required     /lib/security/pam_unix.so
session    required     /lib/security/pam_unix.so
—————————————————————————————————————————————我们先来分析一下auth       required     /lib/security/pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed 这一句

其中 /lib/security/pam_listfile.so是调用这个模块用来检测登陆进来的用户是不是记记载在/etc/ftpusers中的用户

而item=user 很明显是说明要检测的是用户

sense=deny则是处理方法deny就是就是拒绝的意思了


 我有个用户名字叫 redhat在默认条件下条件下是可以登陆ftp服务器的我把它加入/etc/ftpusers 后看看情况哦

#echo "redhat" >> /etc/ftpusers


有时候 你只想允许某部分人登陆ftp服务器 那么 你可以通过修改/etc/pam.d/ftp中的sense值为allow 就表示只允许登陆的用户,那么你在 /etc/ftpusers 文件加入的 用户就表示访问的 没在文件内的用户都被拒绝

                                  二、建立ftp的虚拟用户

 

1 建立虚拟用户users.txt
name1
123
name2
123
#db_load -T -t hash -f users.txt /etc/vsftpd_login.db
#chmod 600 /etc/vsftpd_login.db

2 修改/etc/pam.d/ftp 增加
auth required pam_userdb.so db=/etc/vsftpd_login
account required pam_userdb.so db=/etc/vsftpd_login

操作如下:

————————————————————————————————————
#%PAM-1.0
#auth       required    /lib/security/pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
#auth       required    /lib/security/pam_unix.so shadow nullok
#auth       required    /lib/security/pam_shells.so
#account    required    /lib/security/pam_unix.so
#session    required    /lib/security/pam_unix.so
auth required pam_userdb.so db=/etc/vsftpd_login
account required pam_userdb.so db=/etc/vsftpd_login
_________________________________________________________________________
注意:我把其他都注释掉了是为了防干扰 pam的课题在以后我们再慢慢讨论

 

3 建立虚拟账号用户
就算我们建立了虚拟账号但始终还是要用的linux系统本身的用户所以必须建一个用户与虚拟用户相关联
(可以理解成一个实际用户对应多个虚拟用户)

useradd vuser

4 编辑vsftpd.conf配置文件 禁止匿名用户登录(启用虚拟账号一定要把匿名用户关掉)
凡是与匿名用户有关的anon都要关掉(这里要说明下我把下面有NO的语句都注释了结果可以用匿名登陆)

anonymous_enable=NO    //允许匿名用户登陆
local_enable=YES        //允许本地用户登陆 如果这个不打开的话 uid 500以下的人都被访问拒绝
write_enable=NO        //允许客户端写命令
anon_upload_enable=NO  //允许匿名用户上传文件
anon_mkdir_write_enable=NO //允许匿名用户创建目录 这个最好不要打开否则会带来不可预测的后果
dirmessage_enable=YES        //允许使用目录的消息
ftpd_banner=Welcome to weihua0722's FTP service.   //登陆欢迎辞词
ls_recurse_enable=YES  //允许使用ls -R命令
listen=YES 
guest_enable=YES
guest_username=vuser 这个是刚刚加的账号名

好了现在我们开始用tom虚拟账户测试下:

[root@service root]# ftp 192.168.0.2
Connected to 192.168.0.2 (192.168.0.2).
220 (vsFTPd 2.0.5)
Name (192.168.0.2:root): tom
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/"
ftp> quit
221 Goodbye.

注意这时候tom 用的其实是/home/vuser 目录而所有者是vuser用户
[root@service root]# ls -ld /home/vuser
drwx------    2 vuser    vuser        4096 Mar 10 10:06 /home/vuser

大家都注意到/home/vuser不能被其他人所见,所以我们还要修改下权限

[root@service root]# chmod o+r /home/vuser
[root@service root]# ls -ld /home/vuser
drwx---r--    2 vuser    vuser        4096 Mar 10 10:06 /home/vuser

这样用虚拟用户登陆的ftp的人都可以下载和看到ftp目录的内容了而且比较安全


                    三:如何有选择的把用户限制在家目录中呢?

我们要自己建一个文件,在/etc目录中
#touch /etc/vsftpd.chroot_list
以beinan和nanbei这两个用户限制在他们所在的家目录中,而其它的FTP用户不做此限制。

在vsftpd.chroot_list这个文件中,把beinan和nanbei添上去就行,注意,每个用户占一行。
beinan
nanbei
然后改/etc/vsftpd/vsftpd.conf文件,找如下的两行

#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd.chroot_list

把前面的#号去掉,也就是这样的
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

如果没有这样的两行,就可以自己添加上去也是一样的。
___________________________________________________________
下面有个地方是要注意下的 vsftpd.conf 中 有段是这么说的
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
# chroot_list_enable=YES
# (default follows)
# chroot_list_file=/etc/vsftpd.chroot_list

很显然如果chroot_local_user=YES(将本地用户锁定在家里面)
那么
vsftpd.chroot_list 里面的用户就是不被限制在家中的意思

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值