文章目錄
1. vsftpd配置
vsftpd配置
/etc/pam.d/vsftpd //vsftpd用戶認證配置文件
/etc/vsftpd/ //配置文件目錄
/etc/vsftpd/vsftpd.conf //主配置文件
//匿名用戶(映射爲ftp用戶)的共享資源位置是/var/ftp
//系統用戶通過ftp訪問的資源位置爲用戶的家目錄
//虛擬用戶通過ftp訪問的資源位置爲給虛擬用戶指定的映射成爲的系統用戶的家目錄
1.1 安裝vsftpd
[root@yusyang ~]# yum -y install vsftpd
1.2 vsftpd的配置文件vsftpd.conf的參數
vsftpd常見的配置參數:
參數 | 作用 |
---|---|
anonymous_enable=YES | 啓用匿名用戶登錄 |
anon_upload_enable=YES | 允許匿名用戶上傳 |
anon_mkdir_write_enable=YES | 允許匿名用戶創建目錄,但是不能刪除 |
anon_other_write_enable=YES | 允許匿名用戶創建和刪除目錄 |
local_enable=YES | 啓用本地用戶登錄 |
write_enable=YES | 允許本地用戶有寫權限 |
local_umask=022 | 通過ftp上傳文件的默認遮罩碼 |
chroot_local_user=YES | 禁錮所有的ftp本地用戶於其家目錄中 |
chroot_list_enable=YES | 開啓禁錮文件列表 需要與chroot_list_file參數一起使用 |
chroot_list_file=/etc/vsftpd/chroot_list | 指定禁錮列表文件路徑 在此文件裏面的用戶將被禁錮在其家目錄中 |
allow_writeable_chroot=YES | 允許被禁錮的用戶家目錄有寫權限 |
xferlog_enable=YES | 是否啓用傳輸日誌,記錄ftp傳輸過程 |
xferlog_std_format=YES | 傳輸日誌是否使用標準格式 |
xferlog_file=/var/log/xferlog | 指定傳輸日誌存儲的位置 |
chown_uploads=YES | 是否啓用改變上傳文件屬主的功能 |
chown_username=whoever | 指定要將上傳的文件的屬主改爲哪個用戶 此用戶必須在系統中存在 |
pam_service_name=vsftpd | 指定vsftpd使用/etc/pam.d下的 哪個pam配置文件進行用戶認證 |
userlist_enable=YES | 是否啓用控制用戶登錄的列表文件: 默認爲/etc/vsftpd/user_list文件 |
userlist_deny=YES | 是否拒絕userlist指定的列表文件中存在的用戶登錄ftp |
max_clients=# | 最大併發連接數 |
max_per_ip=# | 每個IP可同時發起的併發請求數 |
anon_max_rate | 匿名用戶的最大傳輸速率,單位是“字節/秒” |
local_max_rate | 本地用戶的最大傳輸速率,單位是“字節/秒” |
dirmessage_enable=YES | 啓用某目錄下的.message描述信息 假定有一個目錄爲/upload,在其下創建一個文件名爲.message, 在文件內寫入一些描述信息,則當用戶切換至/upload目錄下時會自動顯示.message文件中的內容 |
message_file | 設置訪問一個目錄時獲得的目錄信息文件的文件名,默認是.message |
idle_session_timeout=600 | 設置默認的斷開不活躍session的時間 |
data_connection_timeout=120 | 設置數據傳輸超時時間 |
ftpd_banner=“Welcome to chenlf FTP service.” | 定製歡迎信息,登錄ftp時自動顯示 |
2. 配置匿名用戶ftp
2.1 關閉防火牆
[root@yusyang ~]# systemctl stop firewalld
[root@yusyang ~]# setenforce 0
2.2 配置vsftpd.conf文件配置
[root@yusyang ~]# vim /etc/vsftpd/vsftpd.conf
......
anonymous_enable=YES //允許匿名用戶登錄
anon_upload_enable=YES //允許匿名用戶上傳
anon_mkdir_write_enable=YES //允許匿名用戶創建目錄,但是不能刪除
......
[root@yusyang ~]# systemctl restart vsftpd //重新啓動vsftpd服務
3. 配置虛擬用戶ftp
3.1 關閉防火牆
[root@yusyang ~]# systemctl stop firewalld
[root@yusyang ~]# setenforce 0
3.2 配置虛擬用戶
//創建文本格式的用戶名、密碼列表,例如若要添加兩個用戶tom、jerry,密碼分別爲123、456
[root@yusyang ~]# cat >/etc/vsftpd/vu.list <<EOF
> tim
> 123
> jerry
> 456
> EOF
//安裝db4工具
[root@wangqing ~]# yum -y install db4*
//將剛創建的文本格式用戶名、密碼文件使用db4工具轉換成數據庫文件
[root@wangqing ~]# db_load -T -t hash -f /etc/vsftpd/vu.list /etc/vsftpd/vu.db
//上面的-T表示轉換,-t表示加密方式使用hash算法加密
//爲提高虛擬用戶帳號文件的安全性,應將文件權限設置爲600,以避免數據外泄
[root@wangqing ~]# chmod 600 /etc/vsftpd/vu.*
[root@wangqing ~]# ll /etc/vsftpd/vu.*
-rw-------. 1 root root 12288 Aug 2 15:53 /etc/vsftpd/vu.db
-rw-------. 1 root root 18 Aug 2 15:50 /etc/vsftpd/vu.list
//添加虛擬用戶的映射帳號、創建ftp根目錄。例如要將使用的ftp根目錄設置爲/var/ftp, \
//映射帳號的名稱爲vftp,可以執行以下操作
[root@wangqing ~]# useradd -d /var/ftp -s /sbin/nologin vftp
[root@wangqing ~]# chmod 755 /var/ftp/
[root@wangqing ~]# ll -d /var/ftp/
drwxr-xr-x. 2 vftp vftp 62 Aug 2 15:56 /var/ftp/
//爲虛擬用戶建立PAM認證
[root@wangqing ~]# cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
[root@yusyang ~]# cat > /etc/pam.d/vsftpd<<EOF
> #%PAM-1.0
> auth required pam_userdb.so db=/etc/vsftpd/vu
> account required pam_userdb.so db=/etc/vsftpd/vu
> EOF
//修改vsftpd配置文件,添加虛擬用戶支持
[root@wangqing ~]# echo 'guest_enable=YES' >> /etc/vsftpd/vsftpd.conf
[root@wangqing ~]# echo 'guest_username=vftp' >> /etc/vsftpd/vsftpd.conf
//爲不同的虛擬用戶建立獨立的配置文件
[root@wangqing ~]# echo 'user_config_dir=/etc/vsftpd/vusers_dir' >> /etc/vsftpd/vsftpd.conf
[root@wangqing ~]# echo 'allow_writeable_chroot=YES' >> /etc/vsftpd/vsftpd.conf
//在/etc/vsftpd/vusers_dir目錄中爲每個虛擬用戶分別建立配置文件
[root@wangqing ~]# mkdir /etc/vsftpd/vusers_dir
//設置tom用戶可上傳文件、創建目錄
[root@wangqing ~]# echo 'anon_upload_enable=YES' >> /etc/vsftpd/vusers_dir/tom
[root@wangqing ~]# echo 'anon_mkdir_write_enable=YES' >> /etc/vsftpd/vusers_dir/tom
//設置jerry用戶只有默認的下載權限,只需要創建一個名爲jerry的空文件即可
[root@localhost ~]# touch /etc/vsftpd/vusers_dir/jerry
//注意:虛擬用戶是通過匿名訪問的,所以必須開啓匿名訪問功能!!!
//啓動服務
[root@localhost ~]# systemctl start vsftpd
3.3 客戶端測試
[root@localhost ~]# ftp 192.168.80.128
Connected to 192.168.80.128 (192.168.80.128).
220 (vsFTPd 3.0.2)
Name (192.168.80.128:root): tim
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/"
ftp> cd .. //驗證是否鎖定用戶目錄
250 Directory successfully changed.
ftp> pwd
257 "/"
ftp> mkdir tim
257 "/tim" created
ftp> ls
227 Entering Passive Mode (192,168,80,128,173,152).
150 Here comes the directory listing.
drwx------ 2 1031 1031 6 Nov 07 09:10 tim
226 Directory send OK.
4.創建系統用戶ftp
4.1 創建用戶
[root@yusyang ~]# useradd tom
[root@yusyang ~]# echo '123456' |passwd --stdin tom
4.2 關閉防火牆
[root@yusyang ~]# systemctl stop firewalld
[root@yusyang ~]# setenforce 0
4.3 配置vsftpd.conf
[root@yusyang ~]# vim /etc/vsftpd/vsftpd.conf
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/home/tom
allow_writeable_chroot=YES
//重啓服務
[root@yusyang ~]# systemctl restart vsftpd
4.4 驗證本地用戶是否被禁錮和是否可以創建
[root@localhost ~]# ftp 192.168.80.128
Connected to 192.168.80.128 (192.168.80.128).
220 (vsFTPd 3.0.2)
Name (192.168.80.128: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> cd ..
250 Directory successfully changed.
ftp> pwd
257 "/"
ftp> ls
227 Entering Passive Mode (192,168,80,128,226,125).
150 Here comes the directory listing.
226 Directory send OK.
ftp> mkdir kl
257 "/kl" created
ftp> ls
227 Entering Passive Mode (192,168,80,128,149,95).
150 Here comes the directory listing.
drwxr-xr-x 2 1031 1031 6 Nov 07 11:16 kl
226 Directory send OK.