開發中有個需求,需要在服務器開通一個FTP賬號給其他人用,讓他們上傳東西到我們的服務器。但是又不能讓他們訪問主機的其他目錄,所以用到vsftpd這個東西。
我們的主機系統是RHEL 9 ,自帶了 vsftpd,如果你的系統沒有vsftpd,先自行安裝一個,可以上網搜索如何安裝。
設置步驟:
1.假設需要建立FTP登陸用戶名爲test。被限制路徑爲/home/test
2.linux建立用戶 :
useradd -d /home/test test //增加用戶test,並制定test用戶的主目錄爲/home/test
passwd test //爲test設置密碼
3.權限設置
a.關閉用戶test telnet權限,使其不能通過ssh登陸,只能通過vsftpd的調用登陸
usermod -s /sbin/nologin test
b.vsftpd調用系統驗證用戶登錄時的bin目錄
usermod -s /bin/bash test
c.usermod -d /home/test test 更改用戶test的主目錄爲/home/test
4.限制用戶只能訪問/home/test,不能訪問其他路徑
修改/etc/vsftpd/vsftpd.conf如下:
chroot_list_enable=YES //限制訪問自身目錄
# (default follows)
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list
保存退出
5.修改 /etc/vsftpd/vsftpd.chroot_list (將受限制的用戶添加進去,每個用戶名一行)
在第一行加上 test
6 重啓vsFTPd服務器
/etc/init.d/vsftpd restart 或者 service vsftpd restart
7.如果需要允許用戶修改密碼,但是又沒有telnet登錄系統的權限:
usermod -s /usr/bin/passwd test //用戶telnet(SSH)後將直接進入改密界面
可能出現問題
1.vsftp 500 OOPS: cannot change directory
在終端輸入命令:
setsebool -P ftpd_disable_trans 1
service vsftpd restart
這樣每次重啓機器都可以了·
原因就在SELinux。
2.連接時出現
530 Login incorrect
這種情況多數是配置用戶的問題,網上的解決方法不一
如果出現這種情況,再執行一次
usermod -s /bin/bash test 試試
目錄 /bin/bash 一定要存在