1、Linux vsftpd配置 Linux下的ftp最常用的一種是vsftp(very security ftp),服務名稱叫做vsftpd,檢查vsftpd是否已安裝:rpm –qa | grep vsftpd,如果未安裝通過rpm –ivh vsftpd*或yum –y install vsftpd(已製作yum)來進行安裝,service vsftpd stop/start/restart/status開啟停止等操作,chkconfig vsftpd on/off或ntsysv命令打開圖形界面來管理該服務是否開機啟動。Vsftp的配置文檔存放于/etc/vsftpd/vsftpd.con
2、f,它支持兩種登錄方式,一種是匿名登錄,另一種是認證登錄,其中認證登錄又分為本地帳戶認證和虛擬帳戶認證。剛開始學習vsftpd的配置時建議備份一份默認的配置:cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak。 一. 匿名登錄 該方式只要安裝好了vsftpd默認就可直接使用,登錄映射到的目錄是/var/ftp/,里面只有一個pub文件夾,pub只有只讀權限,改不了的,但可以在/var/ftp目錄下新建其它的文件夾則是可以通過修改/etc/vsftpd/vsftpd.conf來設定相關權限的。 二. 本地帳戶登錄 該類帳戶是Lin
3、ux系統本地帳戶,只要你有Linux帳號那么就可以登錄到FTP。但有一點需要注意,該類帳號默認登錄到的ftp目錄是本地帳戶的家目錄。所以可以通過useradd –s account_name /sbin/nologin來創建無法登錄到Linux系統的帳戶來做ftp帳戶,但是要確保該帳號的家目錄被創建了哦,不然是會登錄不了的。 1. 新建ftp1帳號,密碼123456,家目錄/var/ftp1。 useradd ftp1 -d /var/ftp1 -s /sbin/nologin 創建ftp1帳號 passwd ftp1 修改ftp1的密
4、碼 2. 將/etc/vsftpd/vsftpd.conf配置文件修改為如下內容,#注釋被刪除了。 anonymous_enable=YES /允許匿名登錄 local_enable=YES /允許本地帳戶登錄 write_enable=YES /是否允許寫入 local_umask=022 /默認權限 anon_upload_enable=YES /是否允許匿名上傳 anon_mkdir_wri
5、te_enable=YES /是否允許匿名用戶創建目錄 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES ftpd_banner=Welcome to blah FTP service. /登錄FTP的歡迎提示 chroot_list_enable=YES /是否限定可登錄用戶 chroot_list_file=/etc/vsftpd/chroot_list /被限定的可登錄的用戶
6、清單 listen=YES pam_service_name=vsftpd userlist_enable=YES /登錄黑名單是否開啟,/etc/ftpusers,/etc/user_list兩個文檔的帳號一致,清單里的帳號是不能登錄FTP的。 tcp_wrappers=YES service vsftpd restart重啟vsftpd服務 3.創建限定可登錄名單,只有名單中的帳戶可登錄。 Vi /etc/chroot_list ftp1 4.現在就可以直接登錄,但是以匿名登錄的,點右鍵選擇login as,輸入ftp1及其密碼登錄。如果
7、出現無法登錄的問題,首先檢查下目錄權限問題,不僅是FTP家目錄,其上層,上上層一直到根的層次權限都要正確,例如ftp家目錄上上層權限是drwx------ root root那么你仍然是無法進入家目錄里面的,因為進入目錄是一層層進入的,所以所有上層目錄權限都要有。 三. 虛擬帳戶: 該類帳戶是最好的,可先在本機創建一個本地帳戶,將針對本地帳戶創建多個FTP虛擬帳戶,每個虛擬帳戶則是一個FTP帳號,每個帳號可以設置權限。下面舉例說明! 1. 確保安裝軟件包 [root@fihser-v49 ~]# rpm -qa | grep db4 db4-4.3.29-10.el5 db4-u
8、tils-4.3.29-10.el5 db4-devel-4.3.29-10.el5 2. 創建登錄的虛擬帳戶 vi /u2/ftp/loginuser.txt 奇數行是帳戶名,偶數行是密碼 ftpadmin 123456 ftpuser 123456 ftpguest 123456 3. 生成數據庫文件 db_load -T -t hash -f /u2/ftp/loginuser.txt /etc/vsftpd/vsftpd_login.db chmod 600 /etc/vsftpd/vsftpd_login.db 4. 配置PAM文件 vi /etc/p
9、am.d/vsftpd.vu 內容如下: auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login 5. 為虛擬用戶創建映射的本地帳戶 useradd ftpvirtual -d /u2/ftp/ftpvirtual -s /bin/false chown ftpvirtual.ftpvirtual /u2/ftp/ftpvirtual 6.
10、 配置vsftp.conf文件 anonymous_enable=NO local_enable=YES write_enable=YES dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=YES local_umask=022 userlist_enable=YES chroot_local_user=YES tcp_wrappers=YES guest_enable=YES guest_username=ftpvirtua
11、l pam_service_name=vsftpd.vu user_config_dir=/etc/vsftpd/vsftpd_user_conf virtual_use_local_privs=YES pasv_min_port=50000 pasv_max_port=60000 pasv_enable=yes max_clients=200 max_per_ip=4 idle_session_timeout=600 ftpd_banner=Welcome to opendoc FTP service. 7. 製作虛擬用戶權限配置文件 mkdir /etc/vsftp
12、d/vsftpd_user_conf # vi /etc/vsftpd/vsftpd_user_conf/ftpadmin 所有权限 write_enable=YES anonymous_enable=NO anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES download_enable=Yes local_root=/u2/ftp/ftpvirtual # vi /etc/vsftpd/vsftpd_
13、user_conf/ftpuser 上传权限 write_enable=YES anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES download_enable=NO local_root=/u2/ftp/ftpvirtual # vi /etc/vsftpd/vsftpd_user_conf/ftp 只能下载 write_enable=NO anon_world_readable_on
14、ly=NO anon_upload_enable=NO anon_mkdir_write_enable=NO anon_other_write_enable=NO download_enable=yes local_root=/u2/ftp/ftpvirtual 8. 測試連接 [root@fihser-v49 ~]# ftp -n localhost Connected to FIHSER-V49. 220 Welcome to blah FTP service. 530 Please login with USER and PASS. 530 Please logi
15、n with USER and PASS. KERBEROS_V4 rejected as an authentication type ftp> use ftpadmin 331 ease specify the password. Password: 230 Login successful. ftp> 四. 多類型用戶并存配置 上面分別舉例一一演示了匿名,本地帳戶,虛擬帳戶的配置,但無法實現虛擬用戶和本地用戶同時可用,下面通過實例配置匿名,本地,虛擬用戶並在的配置。需求描述: 本地帳號virtual映射3虚拟用户fileadmin、ituser、itadmin,和一个本
16、地用户sysadmin 开放匿名访问,任何用户可以从/var/ftp/file/目录下载资料 虛擬用户fileadmin可以对/var/ftp/file/目录进行管理 虛擬用户ituser可以从/var//ftp/it/目录下载资料 虛擬用户itadmin可以对/var/ftp/it/目录进行管理 本地用户sysadmin可以对/var/ftp/sysadmin/目录进行管理 所有上传的文件均去除非属主位的写(w)权限 服务器中没有明确授权的其他目录均禁止以上用户访问 密碼全部統一為123456 1. 建立FTP目錄 mkdir /var/ftp/file mkdir /
17、var/ftp/it mkdir /var/ftp/sysadmin 2. 創建虛擬用戶并生成數據庫文件 vi /etc/vsftpd/vusers.list //奇數行是虛擬用戶名,偶數行是密碼 fileadmin 123456 ituser 123456 itadmin 123456 使用工具db_load将列表文件转化为DB数据库文件,-f选项用于指定用户名/密码列表文件,-T选项允许非Berkeley DB的应用程序从文本格式转化的DB数据文件,-t hash选项指定读取数据文件的基本方法。 [root@fihser-v49 vsftpd]#cd
18、/etc/vsftpd/ [root@fihser-v49 vsftpd]# db_load -T -t hash -f vusers.list vusers.db 使用命令file查看文件类型,类型为Berkeley DB格式的数据库文件 [root@fihser-v49 vsftpd]# file vusers.db vusers.db: Berkeley DB (Hash, version 8, native byte-order) [root@fihser-v49 vsftpd]# chmod 600 /etc/vsftpd/vusers.* //修改用戶文件權限 3.
19、建立本地帳號 [root@fihser-v49 vsftpd]# useradd -s /sbin/nologin virtual //虛擬用戶映射的本地帳號,該帳號必須有一個家目錄,否則虛擬用戶無法登錄 [root@fihser-v49 ~]# useradd sysadmin [root@fihser-v49 ~]# passwd sysadmin 4. 建立PAM認證文件 /etc/pam.d/vsftpd为本地用户的验证文件,如果创建其他文件如vsftpd.vu表示虚拟用户的認證文件,如果说将虚拟用户的配置写入本地用户的验证文件,就可以实現本地用户和虚拟同时登录ftp了。
20、[root@fihser-v49 ~]# cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak //做個備份以防不測 [root@fihser-v49 ~]# vi /etc/pam.d/vsftpd //使其內容如下 #%PAM-1.0 auth sufficient pam_userdb.so db=/etc/vsftpd/vusers account sufficient pam_userdb.so db=/etc/vsftpd/vusers session optio
21、nal pam_keyinit.so force revoke auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed auth required pam_shells.so auth include system-auth account include system-auth session include system-auth session r
22、equired pam_loginuid.so 参数說明 auth 是authentication(认证)的缩写,account(账户) required(必须) sufficient (足够的) PAM配置文件,主要用为程序提供用户认证控制,需要.pam_userdb.so文件,vusers表示建立的用户数据库文件,后缀名.db可以不写。注意这2行必须写在第一行,因为系统读取是从上往下看的。Sufficient也表示为递归,最上2行表示虚拟用户配置文件,下面的都是本地用户配置文件。当上面查找不到时,查找下面的。表示可以同时登录虚拟用户和本地用户。如果为required,则只能登录
23、虚拟用户。 5. 配置vsftpd.conf文件 [root@fihser-v49 ~]# vi /etc/vsftpd/vsftpd.conf anonymous_enable=YES anon_umask=022 //實現沒有明確授權禁止非owner的W權限 local_enable=YES write_enable=YES local_umask=022 local_root=/var/ftp/ftproot chroot_local_user=YES //實現禁止以上用戶訪問其它目錄,禁錮ftp的宿主目錄即可 di
24、rmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES ftpd_banner=Welcome to blah FTP service. listen=YES pam_service_name=vsftpd user_config_dir=/etc/vsftpd/vusers_dir //指定用戶配置文件目錄 userlist_enable=YES tcp_wrappers=YES 这里千万不要添加guest_enable=yes,gu
25、est_username=virtual,否则本地用户无法写入文件,就算权限足够也不行,只能登陆访问。 6. 設置用戶配置文件 [root@fihser-v49 ~]# mkdir /etc/vsftpd/vusers_dir //創建用戶配置文件目錄 [root@fihser-v49 ~]# cd /etc/vsftpd/vusers_dir/ [root@fihser-v49 vusers_dir]# vi fileadmin //設置fileadmin權限及目錄 guest_enable=yes guest_username=virtual
26、 local_root=/var/ftp/file anon_upload_enable=yes anon_mkdir_write_enable=yes anon_other_write_enable=yes //保存退出 [root@fihser-v49 vusers_dir]# vi ituser //設置ituser權限及目錄 guest_enable=yes guest_username=virtual local_root=/var/ftp/it [root@fihse
27、r-v49 vusers_dir]# vi itadmin //設置itadmin權限及目錄 guest_enable=yes guest_username=virtual local_root=/var/ftp/it anon_upload_enable=yes anon_mkdir_write_enable=yes anon_other_write_enable=yes 7. 設定目錄權限 [root@fihser-v49 vusers_dir]# cd /var/ftp [root@fihser-v49 ftp]# chown virtual file [root@fihser-v49 ftp]# chown virtual it [root@fihser-v49 ftp]# chown sysadmin sysadmin 8. 重啟vsftpd服務 [root@fihser-v49 var]# service vsftpd restart 至此,相關設定已全部完成,進入ftp進行測試吧。 以上配置全部來自于網上學習所得,只不自己實踐了一次,然后記錄了下來。






