vsftp 服務器的用戶有兩種
1.匿名用戶
不需要密碼,可以直接訪問ftp服務器的公開資料,通常只允許下載一般用於共享一些資料。
用戶名:anonymous (有些版本可以爲空)
密碼:(空)
登陸後的默認路徑: /var/ftp
2.系統用戶
系統中的普通用戶和超級用戶
用戶名:user(系統中的用戶名 或者 root)
密碼: 和系統中一致
登陸後的默認路徑: /home/user
用戶訪問控制:
訪問控制 設置 在vsftpd 的配置文件中,默認路徑爲: /etc/vsftpd/vsftpd.conf (修改前最好先備份)
上邊寫的 兩種用戶是否能正常訪問 FTP服務器 都受配置文件的控制。
配置文件中與用戶控制有關的字段如下:
anonymous_enable 匿名用戶訪問許可 YES 表示允許匿名訪問,NO 表示不能匿名訪問(或者直接用#註釋掉)
local_enable = YES 允許本地用戶訪問
write_enable = YES 允許上傳
#anon_upload_enable=YES 允許匿名用戶上傳
#anon_mkdir_write_enable=YES 允許匿名用戶創建目錄 此兩項一般情況下 都設置爲禁止
userlist_enable = YES
userlist_feny = YES
userlist_file = /etc/vsftpd/user_list
/etc/vsftpd/user_list 文件中指定的用戶不能訪問FTP服務器
例如 : 按照以上配置,我將Kevin用戶寫入 /etc/vsftpd/user_list , 當再用Kevin用戶登錄時會顯示如下提示,沒有權限,登陸失敗。
此外還有一個 限制用戶登錄的 文件 /etc/vsftpd/ftpusers, 當Kevin被寫入 /etc/vsftpd/ftpusers(沒有寫入/etc/vsftpd/user_list)時,用Kevin登陸會是如下提示:
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
當按照以下配置時只有寫入 user_list的用戶才能訪問FTP服務器。
即使是root也不例外。
這裏有一個有意思的問題:當userlist_deny = NO Kevin 用戶寫入 user_list 的同時 也寫入 ftpusers中 會是什麼情況?具體情況如下:
及按照 /etc/vsftpd/ftpusers 文件的限制 禁止用戶登錄。
chroot 限制
當用普通用戶登錄FTP 服務器的時候 會發現 cd / 的時候 是可以切換到Linux的根目錄的,如下:
這是非常危險的, 此時 pwd 會發現 你是可以看到整個文件系統的(有權限的)
chroot_local_user=YES 在FTP服務中,用戶把自己的宿主目錄當作根目錄,及其他目錄是可不見的,設置過程如下
[root@Mr vsftpd]# vi ./vsftpd.conf
將 的註釋取消掉,再登陸FTP服務器 pwd 會發現 自己的 宿主目錄編程了 根目錄。
設置指定的用戶不執行chroot
創建 /etc/vsftpd/chroot_list 文件,並將Kevin寫入,退出保存,重啓vsftpd服務器後,使用Kevin用戶登錄FTP pwd
發現 自己仍然是在 自己的宿主目錄下,並沒有把自己的宿主目錄當作是根目錄。
其他一些配置項
ftpd_banner=Welcome to the FTP service. //登陸FTP服務器時的歡迎信息,(可以掩蓋使用的ftp服務器的版本)
如下爲沒有歡迎信息,及註釋掉 ftpd_banner=
如下是沒有註釋掉的情況
idle_session_timeout=600 #10分鐘無操作,將自動斷開連接
max_clients=50 #總的併發連接數爲50
max_per_ip=3 #每臺客戶機的最大連接數爲3
listen_port=10010 #指定非標準端口 , 此時登陸時需要 ftp 192.168.176.128:10010
anon_max_rate=100000 #匿名用戶最大傳輸速率爲100KB/s
xferlog_enable=YES #打開FTP記錄日誌
xferlog_std_format=YES #日誌採用標準格式
xferlog_file=/var/log/xferlog #日誌保存位置