為什么要使用虛擬用戶:匿名帳戶可以很好的保證FTP服務器的安全性,但是,對匿名用戶的權限管理不夠靈活.如果想對訪問FTP的帳戶給予更多的權限,就可以用本地帳戶來實現. 但是,本地帳戶默認情況下是可以登陸Linux系統的,這樣對Linux系統來說是一個安全隱患.那么怎么能在靈活的賦予FTP用戶權限的前提下,保證 FTP服務器乃至整個Linux系統的安全呢?使用虛擬用戶就是一種解決辦法.下面,我們就一起來學習,該怎樣在Linux下配置FTP服務器的虛擬用戶.開始配置前,讓我們先大概了解下FTP虛擬用戶的工作原理:虛擬用戶,顧名思義,并不是一個合法的Linux系統帳戶,但是他可以用來登陸該系統上運行的FTP服務器.當用戶在連接上FTP服務器后,會被要求輸入用戶名和密碼.FTP服務器在拿到這個用戶名和密碼后,會調用相應的PAM認證模塊對,和系統中的FTP認證文件進行相比較.如果該用戶名和密碼與FTP認證文件中的某條記錄相符,就通過認證,然后該帳戶就被映射成一個Linux下的本地帳戶,然后根據使用該本地帳戶對FTP資源進行訪問.否則則斷開該連接請求.了解了FTP虛擬用戶的工作原理后,我們就可以開始配置FTP虛擬用戶了.
1.準備一個虛擬用戶的口令庫文件.該文件中保存的用戶名和密碼是用戶連接FTP服務器時,需要輸入的用戶名和密碼.文件可以自己創建,位置無關緊要,文件格式為:奇數行為用戶名,偶數行為密碼.例如:touch login.txt //創建一個名為login.txt的虛擬用戶口令庫文件 vi login.txt //編輯該口令庫文件 mike //虛擬用戶mike 123 //虛擬用戶mike的密碼 john //虛擬用戶john 321 //虛擬用戶john的密碼保存退出.2.用剛才建立的虛擬用戶口令庫文件生成FTP服務器的認證文件.該認證文件是一個被加密后的密文.PAM在調用相應的認證模塊后,會對從FTP服務器發來的用戶名和密碼進行加密,然后在跟該文件進行對比,發現相符條目后,登陸用戶才會被允許登陸.db_load -T -t hash -f login.txt /etc/vsftpd/vsftpd_login.db //在運行該命令前,別忘記安裝db4-utils軟件包,該包包含有db_load命令等.關于該命令的使用不在本文討論范圍內.其中-f參數后跟的為剛才創建的虛擬用戶口令庫文件.最后的路徑為生成的FTP認證文件的存放位置.為了進一步保證安全,可以將該FTP認證文件的權限設置為600.3.建立虛擬用戶所需要的PAM配置文件.由于FTP服務器在接受到用戶的用戶名和口令后會調用PAM認證,所以我們還要創建虛擬用戶的PAM配置文件.我們將該文件保存在/etc/pam.d目錄下,文件名暫時取為:vsftpd.這里要注意一點就是,該文件名要與FTP服務主配置文件(/etc/vsftpd/vsftpd.conf)中的pam_service_name=vsftpd選項的選項值相同.創建好該文件后,將下面的內容加入到該文件中:auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_loginaccount required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login改好后,保存退出(注意,/etc/pam.d/vsftpd 這個文件只能有上面兩行代碼有效,其他內容請用#號注釋掉).注意3個紅色文件的文件名.該3個文件為1個文件,只不過在使用中寫法不同.4.由于用戶在通過PAM的認證后要被映射成一個本地用戶,所以我們還要建立一個本地用戶供虛擬用戶使用.我們只需要對該本地用戶賦予FTP主目錄的適當訪問權限就行.即使FTP服務器遭到攻擊,這個本地用戶也沒有訪問其他目錄的權限,相對比較安全一些.useradd -d /home/ftpsite virtual //用戶名為virtual,主目錄為FTP的根chmod 700 /home/ftpsite //將其權限設置為700,可以根據實際情形進行修改**更正(ftp目錄歸屬與被用于ftp的虛擬用戶的情況下)**000(---------) 可切僅可登陸500(r-x------) 可見文件列表,可下載,不可上傳與ftp上不同名的文件,不可刪除、改名、新建文件夾700(rwx------) 可上傳下載文件,可修改文件名,可刪除文件,可建立文件夾,可移動文件(可做全部操作)(vsftpd 配置許可的情況下)5.在FTP的主配置文件中,啟用FTP虛擬用戶.增加如下選項即可:guest_enable=YESguest_username=virtual //將虛擬用戶映射成本地的哪個用戶.這里用的是virtual,剛才建 立的那個用戶.pam_service_name=/etc/vsftpd/vsftpd //切記要修改該項的值6.配置到這里就完成了,別忘記重啟FTP服務進行測試.7.為不同的虛擬用戶分配權限默認情況下,虛擬用戶擁有相同的權限,就是virtual的權限,我們可以根據實際需求對不同的虛擬用戶分配權限.首先在FTP的主配置文件中加一個選項:user_config_dir=/etc/vsftpd_user_conf //文件名和路徑都可以自己定義然后創建該目錄.mkdir /etc/vsftpd_user_conf下面就可以在該目錄下編輯不同虛擬用戶的權限配置文件了,比如要對mike編輯其權限.touch mike //建立mike的權限文件.文件名要與虛擬用戶名相同可以根據實際需求為該文件添加下面的選項和值:anon_world_readable_only=NO //表示用戶可以瀏覽FTP目錄和下載文件anon_upload_enable=YES //表示用戶可以上傳文件anon_mkdir_write_enable=YES //表示用戶有創建和刪除目錄的權限anon_other_write_enable=YES //表示用戶具有文件改名和刪除文件的權限 另外:修改 /etc/selinux 文件夾下的 config 文件,SELINUX=enforcing 修改為 SELINUX=disabled到這里,虛擬用戶就算完成配置完成了.不過,有一個問題,好象在配置完虛擬用戶后,不關FTP主配置文件里怎樣配置,匿名用戶和本地用戶都不能登陸FTP服務器了.該怎樣解決這個問題呢?如果不能上傳文件,如果其他配置都和上面一樣,而且ftp主目錄的權限設置為777都不能上傳的話,則可能是防火墻的問題
1、建用戶:
adduser phpq //新建phpq用戶passwd phpq //給phpq用戶設置密碼
2、建工作組groupadd test //新建test工作組
3、新建用戶同時增加工作組useradd -g test phpq //新建phpq用戶并增加到test工作組
注::-g 所屬組 -d 家目錄 -s 所用的SHELL
4、給已有的用戶增加工作組
usermod -G groupname username
或者:gpasswd -a user group
5、臨時關閉:在/etc/shadow文件中屬于該用戶的行的第二個字段(密碼)前面加上*就可以了。想恢復該用戶,去掉*即可。
或者使用如下命令關閉用戶賬號:
passwd peter –l
重新釋放:
passwd peter –u
6、永久性刪除用戶賬號
userdel peter
groupdel peter
usermod –G peter peter (強制刪除該用戶的主目錄和主目錄下的所有文件和子目錄)
7、從組中刪除用戶
編輯/etc/group 找到GROUP1那一行,刪除 A 或者用命令 gpasswd -d A GROUP
8、顯示用戶信息
id usercat /etc/passwd
補充:查看用戶和用戶組的方法
用戶列表文件:/etc/passwd用戶組列表文件:/etc/group
查看系統中有哪些用戶:cut -d : -f 1 /etc/passwd查看可以登錄系統的用戶:cat /etc/passwd | grep -v /sbin/nologin | cut -d : -f 1查看用戶操作:w命令(需要root權限)查看某一用戶:w 用戶名查看登錄用戶:who查看用戶登錄歷史記錄:last
新聞熱點
疑難解答