安裝vsftpd:
[root@localhost ~]# yum install -y vsftpd db4-utils
這裏安裝兩個軟件包,同時會把依賴的包安裝上。其中db4-utils用來生成密碼庫文件。
由於21端口被pure-ftpd所佔用,需要用killall殺死:
[root@localhost ~]# killall pure-ftpd
[root@localhost ~]# killall pure-ftpd
pure-ftpd: 沒有進程被殺死
[root@localhost ~]# /etc/init.d/vsftpd start (啓動vsftpd)
爲 vsftpd 啓動 vsftpd: [確定]
[root@localhost ~]# netstat -lnp (查看端口占用情況)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 8134/vsftpd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1093/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1169/master
tcp 0 0 0.0.0.0:35353 0.0.0.0:* LISTEN 984/rpc.statd
tcp 0 0 :::49810 :::* LISTEN 984/rpc.statd
tcp 0 0 :::22 :::* LISTEN 1093/sshd
tcp 0 0 ::1:25 :::* LISTEN 1169/master
udp 0 0 0.0.0.0:40590 0.0.0.0:* 984/rpc.statd
udp 0 0 0.0.0.0:68 0.0.0.0:* 1357/dhclient
udp 0 0 127.0.0.1:736 0.0.0.0:* 984/rpc.statd
udp 0 0 :::36546 :::* 984/rpc.statd
[root@localhost ~]# passwd user3
更改用戶 user3 的密碼 。
新的 密碼: (LIUHONG521)
重新輸入新的 密碼:
passwd: 所有的身份驗證令牌已經成功更新。
在客戶端登錄lftp:
[root@qiangge ~]# lftp [email protected]
口令:
lftp [email protected]:~>
在服務端查看user3的家目錄:
[root@localhost ~]# grep user3 /etc/passwd (查看家目錄)
user3:x:500:500::/home/user3:/bin/bash
[root@localhost ~]# ls /home/user3
[root@localhost ~]# touch /home/user3/1122.txt (創建文件)
[root@localhost ~]# mkdir /home/user3/aabb (創建目錄)
[root@localhost ~]# ls /home/user3
1122.txt aabb
在ftp的客戶端查看:
因爲客戶端課一進入到任意的目錄下,進行任意的操作,所以這是非常危險的,我們應該創建虛擬的用戶映射,這樣才能更加安全:
1、在配置文件中做限制亦可:
[root@localhost ~]# vim /etc/vsftpd/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_local_user=YES (將前面的#去掉)
#chroot_list_enable=YES
# (default follows)
#chroot_list_file=/etc/vsftpd/chroot_list
#
# You may activate the "-R" option to the builtin ls. This is disabled by
保存之後,重新啓動:
[root@localhost ~]# /etc/init.d/vsftpd restart
關閉 vsftpd: [確定]
爲 vsftpd 啓動 vsftpd: [確定]
登錄lftp客戶端:
[root@qiangge ~]# lftp [email protected]
口令:
lftp [email protected]:~> cd /etc
cd `/etc' [正在發送命令...]
cd:
Access Failed:550 Failed to change directoyr. (/etc)
lftp [email protected]:/>
lftp [email protected]:/>
因爲被限制了,所以只能在當前目錄下操作,總之ftp使用系統的用戶是不太安全的,所以我們使用虛擬用戶的映射是必不可少的。
創建虛擬用戶:
[root@localhost ~]# useradd virftp -s /sbin/nologin
[root@localhost ~]# vim /etc/vsftpd/vfstpd_login (虛擬用戶存放的用戶名和密碼)
test1 (用戶名)
111222aaa (密碼)
test2
111222bbb
~
~
:wq
[root@localhost ~]# chmod 600 /etc/vsftpd/vsftpd_login (權限更改,只允許root可以看)
vsftpd使用的密碼文件不是明文的,需生成對應的庫文件:
[root@localhost ~]# db_load -T -t hash -f /etc/vdftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db
建立虛擬賬號相關的目錄以及配置文件:
[root@localhost ~]# mkdir /etc/vsftpd/vsftpd_user_conf
[root@localhost ~]# cd /etc/vsftpd/vsftpd_user_conf
創建跟用戶名對應的配置文件:
[root@localhost vsftpd_user_conf]# vim test1
local_root=/home/virftp/test1 (限定家目錄)
anonymous_enable=NO (匿名用戶是否可用)
write_enable=YES (是否可寫)
local_umask=022
anon_upload_enable=NO (匿名用戶是否可上傳)
anon_mkdir_write_enable=NO (匿名用戶是否可創建)
idle_session_timeout=600
data_connection_timeout=120
max_clients=10
max_per_ip=5
local_max_rate=50000 (傳輸速度)
說明:
local_root爲該賬號的家目錄,anonymous_enable用來限定是否允許匿名賬號登錄,若爲NO表示不允許匿名賬號登錄,write_enable=YES 表示可寫,local_umask指定umask值。
[root@localhost vsftpd_user_conf]# mkdir /home/virftp/test1 (創建test1)
[root@localhost vsftpd_user_conf]# chown -R virftp:virftp/home/virftp/test1 (修改權限,修改爲所映射的用戶)
[root@localhost vsftpd_user_conf]# vim /etc/pam.d/vsftpd (認證相關的配置文件,用什麼方式去認證)
在最開頭添加兩行 :
auth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login //如果是64位系統則改爲/lib64/security/pam_userdb.so
account sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login //如果是64位系統則改爲/lib64/security/pam_userdb.so
附加:[root@localhost vsftpd_user_conf]# uname -a
Linux localhost 2.6.32-431.el6.i686 #1 SMP Fri Nov 22 00:26:36 UTC 2013 i686 i686 i386 GNU/Linux
查看系統位數,是32還是64.
修改全局配置文件/etc/vsftpd.conf
#vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES改爲anonymous_enable=NO
#anon_upload_enable=YES 改爲 anon_upload_enable=NO
#anon_mkdir_write_enable=YES 改爲 anon_mkdir_write_enable=NO
再增加
chroot_local_user=YES
guest_enable=YES
guest_username=virftp
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vsftpd_user_conf
啓動vsftpd服務/etc/init.d/vsftpd restart
如果服務啓動不了,很可能是前面的pure-ftpd服務還沒有關閉。測試過程和前面的pure-ftpd一樣。另外,如果用戶登錄不了,請查看一下/var/log/secure日誌。