vsftpdhtml
proftpdlinux
目錄 | /app/ftpdata | /app/ftpdata/public_team | /app/ftpdata/public_all |
---|---|---|---|
用戶 | a用戶(管理員) | b用戶(某些能夠看的人) | c用戶(所有人) |
權限 | r/w | r/w | r |
採用樹結構來控制權限實現不一樣級別管理不一樣目錄shell
目錄 | /app/ftpdata | 管理員admin(所有權限,可管理所有目錄) |
---|---|---|
/app/ftpdata/team | 通常高級用戶team(當前文件夾和下層文件夾public內的上傳,下載,修改,刪除,可管理public目錄) | |
/app/ftpdata/team/public | 大衆用戶public(當前文件夾內的上傳,下載,但不能夠修改和刪除) |
1.使用虛擬用戶,主配置文件修改以下:數據庫
vsftpd.confsession
local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=YES pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES user_config_dir=/etc/vsftpd/vuserconfig
- local_umask用022的意義是這個配置的權限設計邏輯是用linux的文件權限777減去這個配置值獲得最終ftp用戶的可以使用權限,777-022就等於了755了,755權限表明用戶rwx,用戶所屬組權限rx,other用戶rx(讀、寫、運行三項權限能夠用數字表示,就是r=4,w=2,x=1,詳情參考鳥哥私房菜)
- user_config_dir可使用我的定製的配置文件
- 其餘都是默認配置了,詳情man vsftpd。
2.配置虛擬帳戶app
編輯好一個存放用戶帳戶密碼信息的文件,在vsftpd的文件夾裏面,一行帳戶一行密碼less
cat vsftpd_virtualuser.txt admin XXXXX team XXXXX public XXXXX
安裝db4-utils軟件,而後將帳戶密碼文件寫入到vsftpdusr.db裏面tcp
yum install db4-utils db_load -T -t hash -f vsftpd_virtualuser.txt /etc/vsftpd/vftpuser.db
配置對應不一樣帳戶的配置文件(三個用戶的配置文件)ui
cat vuserconfig/admin guest_enable=yes guest_username=ftp local_root=/app/ftp_data anon_world_readable_only=NO write_enable=YES anon_mkdir_write_enable=YES anon_upload_enable=YES anon_other_write_enable=YES cat vuserconfig/team guest_enable=yes guest_username=ftp local_root=/app/ftp_data/team anon_world_readable_only=NO write_enable=YES anon_mkdir_write_enable=YES anon_upload_enable=YES anon_other_write_enable=YES cat vuserconfig/public guest_enable=yes guest_username=ftp local_root=/app/ftp_data/team/public anon_world_readable_only=NO anon_mkdir_write_enable=YES anon_upload_enable=YES
- 主要是local_root,分別將不一樣的用戶鎖定在不停的目錄,而由於目錄是樹結構,因此能夠上層訪問下層
- guest_username是指使用一個實體用戶來虛擬出虛擬用戶,至關於將虛擬用戶與實體用戶作綁定,用戶使用的是虛擬帳戶,但其實系統最終調用的是實體用戶
- 其餘都是權限配置,參考官方文件便可。
3.配置vsftpd的pam驗證模塊使用spa
cat /etc/pam.d/vsftpd #%PAM-1.0 #sessionoptional pam_keyinit.soforce revoke #auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed #auth required pam_shells.so #auth include password-auth #accountinclude password-auth #sessionrequired pam_loginuid.so #sessioninclude password-auth authrequired/lib/security/pam_userdb.so db=/etc/vsftpd/vftpuser account required/lib/security/pam_userdb.so db=/etc/vsftpd/vftpuser
- 註釋掉原來的項,添加新的2項,這2項意思是使用單獨的db庫來作帳戶驗證,就是以前建立帳戶db文件
若是用proftpd的話
使用虛擬用戶
1.編輯(目錄自定義)/etc/proftpd.conf文件,修改成如下配置
1. ServerType是控制proftpd以什麼形式啓動,有兩種,standalone標準模式和xint模式,xint要使用xint控制,須要配置xint的啓動腳本,麻煩一點,其實區別不大。 2. 這裏的user是指proftpd運行的user,跟訪問目錄沒有關係,不過我這裏跟虛擬用戶相對應的實體帳號保持一致,不一致也不要緊。 3. AuthOrder和AuthUserFile是一塊兒使用的,由於這是配置虛擬帳戶驗證的必須物,改變驗證模塊使用,而且驗證數據庫指向某個文件 4. 主要關注3個`<directory>`和`<limit>`,前者負責控制範圍,後者負責控制權限,在權限裏面使用先alow後deny的順序,匹配第一條就不會匹配第二條,如此類推,而且limit裏支持ftp命令控制,MKD,READ等能夠寫在limit裏面,比通常的read和write要精細,詳細能夠參考[http://www.proftpd.org/docs/howto/Directory.html](http://www.proftpd.org/docs/howto/Directory.html)
命令 | 解釋 |
---|---|
CMD | Change Working Directory 改變目錄 |
MKD | MaKe Directory 創建目錄的權限 |
RNFR | ReName FRom 更改目錄名的權限 |
DELE | DELEte 刪除文件的權限 |
RMD | ReMove Directory 刪除目錄的權限 |
RETR | RETRieve 從服務端下載到客戶端的權限 |
STOR | STORe 從客戶端上傳到服務端的權限 |
READ | 可讀的權限,不包括列目錄的權限,至關於 RETR , STAT 等 |
WRITE | 寫文件或者目錄的權限,包括 MKD 和 RMD |
DIRS | 是否容許列目錄,至關於 LIST , NLST 等權限,仍是比較實用的 |
ALL | 全部權限 |
2.建立虛擬帳戶
/app/proftp/bin/ftpasswd --passwd --file=/app/proftpd/ftpd.passwd --name=admin --uid=14 --home=/app/ftp_data/ --shell=/sbin/nologin /app/proftpd/bin/ftpasswd --passwd --file=/app/proftpd/ftpd.passwd --name=team --uid=14 --home=/app/ftp_data/team --shell=/sbin/nologin /app/proftpd/bin/ftpasswd --passwd --file=/app/proftpd/ftpd.passwd --name=public --uid=14 --home=/app/ftp_data/team/public --shell=/sbin/nologin
- 命令在proftpd安裝目錄,找不到的話就搜索。
- 這裏uid14 是由於我要映射的是ftp帳號,這個帳號的uid就是14
- 由於是虛擬帳號,因此不許登陸 nologin
- 由於須要有個登陸目錄,因此不一樣用戶使用各自的目錄
不管是vsftpd仍是proftpd,須要注意的是隻要是使用虛擬帳號的話,就要注意ftp文件目錄的權限是否可以被虛擬帳號所映射的實體用戶的權限對上,例如我是使用ftp這個實體用戶的話
ls -lh /app/ftp_data 總用量 8.0K drwx------ 2 ftp ftp 4.0K 8月 27 15:04 ads drwxr-xr-x 4 ftp ftp 4.0K 8月 28 11:46 team
須要有ftp可以訪問ftp_data這個目錄的權限。