linux下ftp服务阶段实验(2)


2.创建只允许本地用户登陆vsftpd服务器,所有本地用户只能上传不能下载,本地用户共同的根目录是/user/ftp,可以删除自己上传的文件,但不能删除别人上传的文件,而且不能切换根目录,允许root访问,root可以切换目录,但禁止用户haha访问FTP服务


1.修改vsftpd主配置文件

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf

anonymous_enable=NO                                   #禁止匿名用户登录
local_root=/var/ftp/                                  #定义本地用户所有用户的根目录
chroot_local_user=YES                                 #将本地用户禁锢在自己的家目录 
chroot_list_enable=YES                                #列表中的用户不被禁锢自己的家目录
chroot_list_file=/etc/vsftpd/chroot_list              #定义列表文件路径
userlist_deny=NO                                      #允许user_list中的用户登录
download_enable=NO                                    #不允许下载

下面的命令可查看配置文件有效参数

[root@localhost vsftpd]# grep -v ^# /etc/vsftpd/vsftpd.conf |grep -v ^$

 

2.修改/etc/vsftpd/chroot_list文件,让root可以切换目录

[root@localhost vsftpd]# vim /etc/vsftpd/chroot_list
[root@localhost vsftpd]# cat /etc/vsftpd/chroot_list

root   #添加root用户,让root可以切换目录

3.注释掉/etc/vsftpd/ftpusers所有用户,并添加haha用户到其中

[root@localhost vsftpd]# vim /etc/vsftpd/ftpusers
[root@localhost vsftpd]# cat /etc/vsftpd/ftpusers

# Users that are not allowed to login via ftp
#上面注释的表明在这里声明的用户不被允许登录ftp
#root
#bin
...
haha

4.添加三个用户xixi、haha、hehe,密码都设置为123

[root@localhost ~]# useradd xixi
[root@localhost ~]# echo "123"|passwd xixi  --stdin

Changing password for user xixi.

 passwd: all authentication tokens updated successfully.

[root@localhost ~]# useradd haha
[root@localhost ~]# echo "123"|passwd haha  --stdin
[root@localhost ~]# useradd hehe
[root@localhost ~]# echo "123"|passwd hehe  --stdin

5.修改/etc/vsftpd/user_list文件

[root@localhost ~]# vim /etc/vsftpd/user_list
[root@localhost ~]# tail -3 /etc/vsftpd/user_list

#在此文件中的用户才可以登录,root也在里面,显示的是添加的新建的两个用户xixi和hehe
nobody
xixi
hehe

 

6.ftp根目录给其他用户加上wt权限,重启vsftpd服务

[root@localhost ~]# chmod o+wt /var/ftp

#保证本地其他用户可写,并不能删除其他用户的文件

[root@localhost ~]# ll -ld /var/ftp/
drwxr-xrwt. 3 root root 4096 Jul 30 03:16 /var/ftp/

#重启服务

[root@localhost ~]# service vsftpd restart
Shutting down vsftpd:                                      [FAILED]
Starting vsftpd for vsftpd:                                [  OK  ]

7.验证用户登录

 #测试匿名用户登录

[root@localhost ~]# ftp 192.168.1.88        #登录ftp服务器

 Connected to 192.168.1.88 (192.168.1.88).
220 (vsFTPd 2.2.2)
Name (192.168.1.88:root): ftp
530 Permission denied.
Login failed.                                   #匿名用户被拒绝登录

 

 #测试haha用户登录

[root@localhost ~]# ftp 192.168.1.88

 Connected to 192.168.1.88 (192.168.1.88).
220 (vsFTPd 2.2.2)
Name (192.168.1.88:root): haha

530 Permission denied.
Login failed.                        #用户haha被拒绝登录
ftp> 

 

 #测试xixi用户登录

[root@localhost ~]# ftp 192.168.1.88

Connected to 192.168.1.88 (192.168.1.88).
220 (vsFTPd 2.2.2)
Name (192.168.1.88:root): xixi
331 Please specify the password.
Password:
230 Login successful.                 #xixi登录成功
Remote system type is UNIX.
Using binary mode to transfer files.

ftp> !ls                            #查看本地目录
anaconda-ks.cfg  Desktop  Documents  Downloads install.log  

install.log.syslog  Music Pictures  Public  Templates  Videos
ftp> ls.                                #查看ftp服务器上的文件
drwxr-xr-x    2 0        0            4096 Mar 02  2012 pub.
ftp> put install.log
local: install.log remote: install.log
227 Entering Passive Mode (192,168,1,88,241,219).
150 Ok to send data.
226 Transfer complete                    #上传成功.
37842 bytes sent in 0.000242 secs (156371.90 Kbytes/sec)
ftp> rename install.log 123
ftp> ls
-rw-r--r--    1 501      501         37842 Jul 29 20:05 123
drwxr-xr-x    2 0        0            4096 Mar 02  2012 pub
ftp> get 123    
local: 123 remote: 123
227 Entering Passive Mode (192,168,1,88,132,118).
550 Permission denied.              #下载失败
ftp> cd /root   
550 Failed to change directory.      #切换目录失败

 

#测试root用户登录

[root@localhost ~]# ftp 192.168.1.88

Connected to 192.168.1.88 (192.168.1.88).
220 (vsFTPd 2.2.2)
Name (192.168.1.88:root): root 
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.             #root用户登录成功
Using binary mode to transfer files.
ftp> ls
-rw-r--r--    1 501      501         37842 Jul 29 20:05 123
drwxr-xr-x    2 0        0            4096 Mar 02  2012 pub
ftp> get 123
local: 123 remote: 123
227 Entering Passive Mode (192,168,1,88,119,153).
550 Permission denied.                     #下载失败
ftp> put install.log
local: install.log remote: install.log
227 Entering Passive Mode (192,168,1,88,241,219).
150 Ok to send data.
226 Transfer complete                     #上传成功.
ftp> pwd
257 "/var/ftp"
ftp> cd /root
250 Directory successfully changed.       #成功切换目录
ftp> pwd
257 "/root"

 

#测试hehe用户登录

ftp> [root@localhost ~]# ftp 192.168.1.88

Connected to 192.168.1.88 (192.168.1.88).
220 (vsFTPd 2.2.2)
Name (192.168.1.88:root): hehe
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.              #hehe登录成功
Using binary mode to transfer files. 
ftp> ls
-rw-r--r--    1 0        0           37842 Jul 29 20:08 123
-rw-r--r--    1 501      501         37842 Jul 29 20:10 install.log
drwxr-xr-x    2 0        0            4096 Mar 02  2012 pub
ftp> delete install.log             #删除其他用户文件失败
550 Delete operation failed.
ftp> cd /root                     #切换目录失败
550 Failed to change directory.