vsftpd服務器配置(主目錄下分目錄,不同用戶對同一目錄權限不同,虛擬用戶)100%成功--ok
=================================================
說明:1.vsftpd啟停,不能用老命令:service vsftpd restart
要用新命令:systemctl start vsftpd.service
不然,老命令找不到vsftpd這個服務
2.我的服務器是阿里雲ECS,盡量不要從ECS里雲訪問,會報錯:425 Security: Bad IP connecting
這表明我這個服務器所在網段里,也有其它ftp,所有會出錯
3.盡量使用FTP工具去登錄使用。
本文有參考以下文檔,一並致謝:
https://blog.csdn.net/Gavin_dinggengjia/article/details/7538118
https://www.linuxidc.com/Linux/2015-06/118443.htm
http://blog.sina.com.cn/s/blog_3edc5e2e0102vzv8.html
https://www.jianshu.com/p/59e6d657ec60 (基礎)
另單獨的,沒測試過:
https://www.cnblogs.com/linuxMA/p/11526928.html
這2個也經典:
https://blog.csdn.net/whyAholic/article/details/117279249
https://blog.csdn.net/kxwinxp/article/details/78595044
==安裝開始===============================================
一、業務對FTP服務器的需求:
總路徑/home/download
第一類賬戶及文件夾權限:
admin_root:/home/download/下的所有文件夾及文件具有上傳、下載、刪除權限
admin_001:/home/download/admin_001/下的文件具有上傳、下載、刪除權限
admin_002:/home/download/admin_002/下的文件具有上傳、下載、刪除權限
admin_003:/home/download/admin_003/下的文件具有上傳、下載、刪除權限
admin_004:/home/download/admin_004/下的文件具有上傳、下載、刪除權限
第二類賬戶及文件夾權限:
download_root:/home/download/下的所有文件夾及文件具有下載權限
download_001:/home/download/admin_001/下的文件具有下載權限
download_002:/home/download/admin_002/下的文件具有下載權限
download_003:/home/download/admin_003/下的文件具有下載權限
download_004:/home/download/admin_004/下的文件具有下載權限
為滿足上述需求,考慮使用FTP服務器的虛擬用戶方式實現。
二、具體配置環境及流程如下:
環境:CentOS Linux release 7.0
10.190.104.88
(一)、安裝vsftp
yum -y install vsftpd
rpm -ql vsftpd
配置文件路徑應為/etc/vsftpd/
啟動服務:
service vsftpd start
在win計算機窗口里輸入ftp://10.190.104.88或使用瀏覽器、Filezilla輸入也可以,查看到pub文件夾則服務安裝成功。
如果是,資源瀏覽器,需要關閉ie-Internet選項--高級--被動ftp,這個選項。
這個是初次安裝后的默認配置介紹:
http://blog.chinaunix.net/uid-25324849-id-223413.html
(二)、使用虛擬用戶來實現指定功能的過程;
1、首先創建一個本地系統用戶abcde並指定其家目錄,並建立相應的子目錄;
useradd -d /home/download abcde -s /sbin/nologin
mkdir -p /home/download/admin_001
mkdir -p /home/download/admin_002
mkdir -p /home/download/admin_003
mkdir -p /home/download/admin_004
chown -R abcde: /home/download
chmod 755 /home/download
chmod 755 /home/download/*
2、創建用戶數據文件:(一行賬號一行密碼,不要有空行,不要有空格)
所有密碼此處示例設為123456。
vim /etc/vsftpd/userlist.txt
admin_root
123456
admin_001
123456
admin_002
123456
admin_003
123456
admin_004
123456
download_root
123456
download_001
123456
download_002
123456
download_003
123456
download_004
123456
生成數據文件:
db_load:一般系統都有安裝,db4,db4-devel,db4-utils ,如果沒有的話可以安裝:
yum -y install db4*
然后生成數據文件
db_load -T -t hash -f /etc/vsftpd/userlist.txt /etc/vsftpd/userlist.db
生成之后可將userlist.txt刪除或備份。
3、修改數據文件訪問權限:
chmod 600 /etc/vsftpd/userlist.db
4、修改pam配置:
vim /etc/pam.d/vsftpd
將原來的全部注釋掉,加入:
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/userlist
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/userlist
注意:db=/etc/vsftpd/userlist 后面的.db必須去掉,默認會自動匹配*.db文件,
這里只需要給數據文件名,就行了。
64位機需要使用lib64(這里折騰了好久,有的是lib有的是lib64);
5、創建本地系統用戶abcde對應的虛擬賬戶:
虛擬用戶需要通過本地系統用戶來實現各種操作,因此要放在系統用戶的同名文件夾下。
mkdir /etc/vfstpd/abcde
cd /etc/vfstpd/abcde
每一個虛擬用戶都要有一個同名的文件,文件里記載其權限以及可操作的目錄;
本例如下執行,兩個>>和<<之間不要有空格:
先創建有上傳下載權限的用戶:
cat >>admin_root<<EOF
anon_world_readable_only=NO
write_enable=YES
anon_mkdir_write_enable=YES
anon_upload_enable=YES
anon_other_write_enable=YES
local_root=/home/download
EOF
cat >>admin_001<<EOF
anon_world_readable_only=NO
write_enable=YES
anon_mkdir_write_enable=YES
anon_upload_enable=YES
anon_other_write_enable=YES
local_root=/home/download/admin_001
EOF
cat >>admin_002<<EOF
anon_world_readable_only=NO
write_enable=YES
anon_mkdir_write_enable=YES
anon_upload_enable=YES
anon_other_write_enable=YES
local_root=/home/download/admin_002
EOF
cat >>admin_003<<EOF
anon_world_readable_only=NO
write_enable=YES
anon_mkdir_write_enable=YES
anon_upload_enable=YES
anon_other_write_enable=YES
local_root=/home/download/admin_003
EOF
cat >>admin_004<<EOF
anon_world_readable_only=NO
write_enable=YES
anon_mkdir_write_enable=YES
anon_upload_enable=YES
anon_other_write_enable=YES
local_root=/home/download/admin_004
EOF
再創建只有下載權限的用戶:
cat >>download_root<<EOF
anon_world_readable_only=NO
local_root=/home/download
EOF
cat >>download_001<<EOF
anon_world_readable_only=NO
local_root=/home/download/admin_001
EOF
cat >>download_002<<EOF
anon_world_readable_only=NO
local_root=/home/download/admin_002
EOF
cat >>download_003<<EOF
anon_world_readable_only=NO
local_root=/home/download/admin_003
EOF
cat >>download_004<<EOF
anon_world_readable_only=NO
local_root=/home/download/admin_004
EOF
6、設置配置文件vsftpd.conf
vim /etc/vsftpd/vsftpd.conf
修改內容如下:
listen=YES
connect_from_port_20=YES
anonymous_enable=NO
local_enable=YES
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
guest_enable=YES
guest_username=abcde
virtual_use_local_privs=YES
allow_writeable_chroot=YES
pam_service_name=vsftpd
user_config_dir=/etc/vsftpd/abcde
local_umask=022
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
vim /etc/vsftp/chroot_list
里面啥也不寫。
7、重新啟動vsftpd
service vsftpd restart
三、測試,需要包括的內容:
所有用戶只能進入自己家目錄不能進入上一級目錄;
admin_root對於/home/download下的所有文件夾具有上傳、下載、刪除權限;
admin_001~admin_004對於/home/download/下的同名文件夾具有上傳、刪除權限,無其他權限;
download_root對於/home/download下的所有文件夾具有下載權限,不能上傳或刪除任何內容,不能對其他任何文件夾操作;
download_001~download_004對於/home/download/下的admin_001~admin_004文件夾分別具有下載權限,不能上傳或刪除任何內容,不能對其他任何文件夾操作。
四、可能出現的問題
1、無法登陸1
解決方法:
(1)檢查ftp根目錄目錄是否存在;
(2)檢查上面設置的各個路徑是否正確;
(3)查看ftp根目錄的owner屬主是否是abcde
如果不是則需要:
chown -R abcde: /home/download
2、無法登陸2
可能是/etc/pam.d/vsftp的問題,
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/login
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/login
將lib64改為lib試試,或者可以將sufficient改為acquired試試;
3、權限不對
可以看一下chroot_list里面要不要把哪些用戶寫進去。
五、日常維護
(1)更新帳號,先修改userlist.txt,再執行db_load
db_load -T -t hash -f /etc/vsftpd/userlist.txt /etc/vsftpd/userlist.db
(2)更新/etc/vsftpd/abcde/下不同用戶對應的權限
(3)重啟vsftpd
systemctl start vsftpd.service
==安裝完成 ===============================================