资源描述
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.conf,它支持兩種登錄方式,一種是匿名登錄,另一種是認證登錄,其中認證登錄又分為本地帳戶認證和虛擬帳戶認證。剛開始學習vsftpd的配置時建議備份一份默認的配置:cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak。
一. 匿名登錄
該方式只要安裝好了vsftpd默認就可直接使用,登錄映射到的目錄是/var/ftp/,里面只有一個pub文件夾,pub只有只讀權限,改不了的,但可以在/var/ftp目錄下新建其它的文件夾則是可以通過修改/etc/vsftpd/vsftpd.conf來設定相關權限的。
二. 本地帳戶登錄
該類帳戶是Linux系統本地帳戶,只要你有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的密碼
2. 將/etc/vsftpd/vsftpd.conf配置文件修改為如下內容,#注釋被刪除了。
anonymous_enable=YES /允許匿名登錄
local_enable=YES /允許本地帳戶登錄
write_enable=YES /是否允許寫入
local_umask=022 /默認權限
anon_upload_enable=YES /是否允許匿名上傳
anon_mkdir_write_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 /被限定的可登錄的用戶清單
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及其密碼登錄。如果出現無法登錄的問題,首先檢查下目錄權限問題,不僅是FTP家目錄,其上層,上上層一直到根的層次權限都要正確,例如ftp家目錄上上層權限是drwx------ root root那么你仍然是無法進入家目錄里面的,因為進入目錄是一層層進入的,所以所有上層目錄權限都要有。
三. 虛擬帳戶:
該類帳戶是最好的,可先在本機創建一個本地帳戶,將針對本地帳戶創建多個FTP虛擬帳戶,每個虛擬帳戶則是一個FTP帳號,每個帳號可以設置權限。下面舉例說明!
1. 確保安裝軟件包
[root@fihser-v49 ~]# rpm -qa | grep db4
db4-4.3.29-10.el5
db4-utils-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/pam.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. 配置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=ftpvirtual
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/vsftpd/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_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_only=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 login 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,和一个本地用户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 /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 /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. 建立本地帳號
[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了。
[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 optional 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 required pam_loginuid.so
参数說明
auth 是authentication(认证)的缩写,account(账户) required(必须) sufficient (足够的) PAM配置文件,主要用为程序提供用户认证控制,需要.pam_userdb.so文件,vusers表示建立的用户数据库文件,后缀名.db可以不写。注意这2行必须写在第一行,因为系统读取是从上往下看的。Sufficient也表示为递归,最上2行表示虚拟用户配置文件,下面的都是本地用户配置文件。当上面查找不到时,查找下面的。表示可以同时登录虚拟用户和本地用户。如果为required,则只能登录虚拟用户。
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的宿主目錄即可
dirmessage_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,guest_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
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@fihser-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進行測試吧。
以上配置全部來自于網上學習所得,只不自己實踐了一次,然后記錄了下來。
展开阅读全文