歡迎您光臨本站 註冊首頁

vsftp能在虛擬帳號和本地帳號同時登錄!

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

vsftp能在虛擬帳號和本地帳號同時登錄!

記得有朋友曾經問過vsftpd可不可以同時使用系統用戶和虛擬用戶,我當時回答不可以。
對PAM了解不夠,所以這個答案是錯誤的。
今天想起這個問題,決定做個試驗來看看,事實證明是可以的。
我先了解了一PAM,看了這個文檔,
www.linuxmine.com/5214.html
知道了PAM的驗證模塊是可以串在一起的,通過控制標誌(control-flag)來控制。
文檔里也給出了類似的一個例子。
為了打開匿名FTP,需要使用以下的配置命令代替默認的配置(OTHER):
# ftpd; add  ftp-specifics. These lines enable anonymous ftp over
# standard UNIX  access (the listfile entry blocks access to
# users listed in  /etc/ftpusers)
#
ftpd auth sufficient /usr/lib/security/pam_ftp.so
ftpd auth required /usr/lib/security/pam_unix_auth.so use_first_pass
ftpd auth required /usr/lib/security/pam_listfile.so
onerr=succeed  item=user sense=deny file=/etc/ftpusers
由於需要忽略默認的配置入口,所以第二行是必須要有的。這還是一個層疊模塊的例子。使用sufficient控制標誌,表示如果這個模塊驗證通過,就 不必使用後面的層疊模塊進行驗證了;use_first_pass表示使用為前面的模塊(pam_ftp)輸入的密碼。
我的試驗環境:
RedHat AS 4
vsftpd-2.0.1-5
pam-0.77-65.1
vsftpd使用的pam文件
auth sufficient pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient pam_userdb.so db=/etc/vsftpd/vsftpd_login

auth  required pam_listfile.so item=user sense=deny file=/etc/vsftpd.ftpusers  onerr=succeed
auth required pam_stack.so service=system-auth
auth  required pam_shells.so
account required pam_stack.so service=system-auth
session required pam_stack.so service=system-auth
可以看出前面兩行是對虛擬用戶的驗證,後面是對系統用戶的驗證。
對虛擬用戶的驗證使用了sufficient這個控制標誌。
這個標誌的含義是如果這個模塊驗證通過,就不必使用後面的層疊模塊進行驗證了;但如果失敗了,
就繼續後面的認證,也就是使用系統真實用戶的驗證。
vsftpd.conf的內容(部分)
pam_service_name=vsftpd.mixed
listen=YES
tcp_wrappers=YES
local_enable=YES
guest_enable=YES
guest_username=ftp
listen_port=2121
如果加上anonymous_enable=YES,匿名用戶也是可以登錄的。
這樣的話,就可以同時支持匿名用戶,系統真實用戶和虛擬用戶了。
《解決方案》

我也在配置虛擬帳戶,現在發現虛擬帳戶和本地帳戶都能登陸ftp了,但是以本地帳戶root登陸時,許可權怎麼變得跟虛擬帳戶(vsftpdguest)一樣小了。
我的配置:
# Standalone mode
listen=NO
max_clients=200
max_per_ip=4
# Access rights
anonymous_enable=YES
local_enable=YES
local_root=/
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
# Security
anon_world_readable_only=NO
user_config_dir=/etc/vsftpd/vsftpd_user_conf/
connect_from_port_20=YES
hide_ids=YES
pasv_min_port=50000
pasv_max_port=60000
# Features
xferlog_enable=YES
ls_recurse_enable=NO
ascii_download_enable=NO
async_abor_enable=YES
# Performance
#one_process_model=YES
idle_session_timeout=120
data_connection_timeout=300
accept_timeout=60
connect_timeout=60
anon_max_rate=50000
guest_enable=YES
guest_username=vsftpdguest
#virtual_use_local_privs=YES
《解決方案》

這是因為配置文件里
guest_enable=YES
guest_username=vsftpdguest
的原因。
所有的ftp用戶都映射到了vsftpdguest這個用戶。
同時使用系統用戶和虛擬用戶驗證只是一種試驗,似乎並不適合實際環境中使用。

[火星人 ] vsftp能在虛擬帳號和本地帳號同時登錄!已經有473次圍觀

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