歡迎您光臨本站 註冊首頁

問一個vsftpd本地用戶登錄的問題

←手機掃碼閱讀     火星人 @ 2014-03-04 , reply:0

問一個vsftpd本地用戶登錄的問題

在RHEL52上配置vsftpd,開啟本地用戶登錄功能。然後創建一個用戶,名字是ftp,設置密碼,shell是nologin。之後發現用這個用戶無法登陸,530 Login incorrect. 但是root可以

之後配置文件加入了userlist_deny等配置,明確哪些本地用戶不允許登錄,這樣用這個「ftp」用戶就可以了。

請問默認情況下,vsftpd不允許本地普通用戶登錄么?

附上配置文件內容:

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
nopriv_user=nobody
async_abor_enable=YES
listen=YES
connect_from_port_20=YES
xferlog_std_format=YES
pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=YES
userlist_file=/etc/vsftpd/user_list
tcp_wrappers=YES
ftp_username=ftp
local_root=/DataRepository/
chroot_local_user=YES
anon_other_write_enable=YES
anon_umask=022

另外我設置了nopriv_user=nobody。但是ps的結果,vsftpd的進程依然是root。

請各位指點一下,多謝!
《解決方案》

我理解這是不是vsftpd的一個安全特性。

在沒有明確userlist之前,不允許除root之外的任何用戶登錄ftp。以此來強制大家在使用本地用戶驗證的時候啟用userlist功能。
《解決方案》

有了解vsftp的安全特性的大俠,給確認一下?
《解決方案》


另外我設置了nopriv_user=nobody。但是ps的結果,vsftpd的進程依然是root。

請各位指點一下,多謝!


這是進程和子進程的問題。

主進程雖然是以root用戶在運行,但是當客戶端訪問該服務時,並不是該進程直接對客戶端提供服務,而是會以一個nopriv_user來負責與用戶建立網路連接,這一點可以通過ps aux 和 netstat -antp 仔細觀察得到,你可以先從客戶端連接到該 ftp 伺服器,然後在伺服器上使用上述命令觀察建立連接的進程,必然是nobody。

放心吧。

[ 本帖最後由 youhuai 於 2009-11-2 19:41 編輯 ]
《解決方案》

在RHEL52上配置vsftpd,開啟本地用戶登錄功能。然後創建一個用戶,名字是ftp,設置密碼,shell是nologin。之後發現用這個用戶無法登陸,530 Login incorrect. 但是root可以

之後配置文件加入了userlist_deny等配置,明確哪些本地用戶不允許登錄,這樣用這個「ftp」用戶就可以了。

請問默認情況下,vsftpd不允許本地普通用戶登錄么?


對於你的環境我不完全了解,在沒有開啟selinux,同時vsftpd 是系統安裝好以後的默認配置的話,我測試了centos 5.2和rhel 5.1,沒有發現你說的問題。

建議你仔細檢查系統中的其他環境與設置。比如 passwd 與 shadow文件之類的。

[ 本帖最後由 youhuai 於 2009-11-2 20:05 編輯 ]
《解決方案》

原帖由 Maxshine 於 2009-10-15 09:58 發表 http://linux.chinaunix.net/bbs/images/common/back.gif
在RHEL52上配置vsftpd,開啟本地用戶登錄功能。然後創建一個用戶,名字是ftp,設置密碼,shell是nologin。之後發現用這個用戶無法登陸,530 Login incorrect. 但是root可以

之後配置文件加入了userlist_deny ...


這個也是出於安全才這麼設計,具體你得參考APUE(Unix系統高級編程有關進程編程章節),守護進程是root身份,而fork出來子進程的身份是nobody,這種設計模式apache也在使用。
使用pstree可以觀察到:

vsftpd(27210)───vsftpd(5700)───vsftpd(5702)

這是一次連接的進程截圖。
vsftpd(27210)  守護進程root
vsftpd(5700)    子進程nobody(接受客戶發過來的ftp指令)
vsftpd(5702)     上一個子進程的子進程,匿名用戶登錄時它的身份ftp,本地帳戶登錄它的身份是本地帳戶名。給客戶發送數據。



nopriv_user
用於指定一個用戶, 當 vsftpd 要切換到無許可權狀態時, 使用此用戶. 注意這最好是一個專用用戶, 而不是用戶 nobody. 在大多數機器上, 用戶 nobody 被用於大量重要的事情.vsftpd默認是nobody.

[ 本帖最後由 blueswxs 於 2009-11-12 10:11 編輯 ]

[火星人 ] 問一個vsftpd本地用戶登錄的問題已經有633次圍觀

http://coctec.com/docs/service/show-post-20011.html