vsftpd實例:匿名訪問共享+系統用戶訪問控制
FTP環境實例:
某公司由於業務發展需求,現需要在公司內部搭建一臺FTP服務器!該公司有數個部門(IT FD HR)和N名員工(fus1 fus2 fus3 fus4 fus5 fus6 fus7 fus8 fus9)使用該服務器!為了保障系統和其他數據的安全,要求用戶只能訪問FTP服務根目錄(/var/ftp)以下的數據;要求根目錄下有一個公共目錄,該目錄所有人都可以訪問,並且具有上傳下載權限;根目錄下還要有每個部門的工作目錄,並且僅限該部門的員工訪問;在各部門目錄下要有一個僅限該部門員工使用的公共目錄,還要有每個員工的工作目錄,員工目錄要求只能該員工自己訪問;創建一個特權用戶(manager),該用戶可以訪問根目錄下的任何公共目錄,並且具有上傳下載的權限!為了方便特權用戶訪問,要求在每個部門的目錄被訪問時有該部門的提示信息;為了顯示人文精神,在用戶登錄FTP服務器時,要顯示歡迎信息!另外,要求匿名用戶可以訪問,並且所有訪問FTP服務器的賬戶都不能登錄到系統!
思路:
1、安裝FTP服務器軟件,設置SELinux訪問權限
2、測試環境是否可用,備份主配置文件
3、創建用戶組和用戶及其所屬目錄
4、修改服務器配置文件進行訪問控制
5、修改目錄訪問權限控制訪問
6、重啟服務並設置開機啟動
步驟:
第一步:安裝vsftpd軟件
[[email protected] ~]# yum install vsftpd -y
第二步:設置SELinux安全訪問
[[email protected] ~]#getsebool -a | grep ftp
[[email protected] ~]#setsebool allow_ftpd_full_access 1
第三步:測試環境是否運行正常
[[email protected] ~]# service vsftpd start
[[email protected] ~]# firefox ftp://127.0.0.1
另:安裝ftp客戶端測試:
[[email protected] ~]# yum install ftp -y
(匿名用戶(ftp/anonymous)登錄不需要密碼)
第四步:備份主配置文件
[[email protected] ~]# mkdir -p /backup/vsftpd
[[email protected] ~]# cp -p /etc/vsftpd/vsftpd.conf /bachup/vsftpd/vsftpd.conf
第五步:創建用戶組及其部門目錄
[[email protected] ~]# groupadd IT
[[email protected] ~]# groupadd FD
[[email protected] ~]# groupadd HR
[[email protected] ~]# mkdir -p /var/ftp/OU_{IT,FD,HR}
第六步:創建用戶及其屬主目錄
[[email protected] ~]# for name in fus{1..3}
> do
> useradd -s /sbin/nologin -d /var/ftp/OU_IT/$name -G IT -m $name
> echo 123456 | passwd --stdin $name
> done
[[email protected] ~]# for name in fus{4..6}
> do
> useradd -s /sbin/nologin -d /var/ftp/OU_FD/$name -G FD -m $name
> echo 123456 | passwd --stdin $name
> done
[[email protected] ~]# for name in fus{7..9}
> do
> useradd -s /sbin/nologin -d /var/ftp/OU_HR/$name -G HR -m $name
> echo 123456 | passwd --stdin $name
> done
第七步:創建特權用戶
[[email protected] ~]# useradd -G IT,HR,FD -d /var/ftp/manager -s /sbin/nologin manager
[[email protected] ~]# echo 123456 | passwd --stdin manager
第八步:檢查用戶屬性
[[email protected] ~]# for name in fus{1..9}; do id $name; done
[[email protected] ~]# id manager
第九步:修改服務器主配置文件
[[email protected] ~]# cat /etc/vsftpd/vsftpd.conf | grep -vE "^$|#"
anonymous_enable=YES //允許匿名用戶登錄
local_enable=YES //允許系統用戶登錄
write_enable=YES //啟用全局寫權限
local_umask=022 //系統用戶權限掩碼
anon_umask=022 //匿名用戶權限掩碼
anon_upload_enable=YES //允許匿名用戶上傳
anon_mkdir_write_enable=YES //允許匿名用戶創建目錄
dirmessage_enable=YES //開啟目錄訪問提示
message_file=.message //定義目錄訪問提示文件
xferlog_enable=YES //開啟用戶訪問日誌記錄
xferlog_file=/var/log/vsftpd.log //定義日誌記錄文件的位置及名稱(需要自己創建)
xferlog_std_format=YES //定義日誌記錄的文件格式
connect_from_port_20=YES //定義服務器的連接端口
idle_session_timeout=600 //當超過600s無交互時斷開會話
data_connection_timeout=120 //當超過120s無數據時斷開傳輸通道
banner_file=/etc/vsftpd/banner //定義登錄提示文件banner的位置
chroot_local_user=YES //鎖定用戶訪問權限到家目錄
ls_recurse_enable=YES //允許用戶使用ls命令
listen=YES //定義vsftpd工作模式為standalone
pam_service_name=vsftpd //開啟vsftpd的PAM認證
userlist_enable=YES //開啟userlist訪問控制
userlist_deny=NO //僅限userlist中的用戶訪問(雙重否定等於肯定)
tcp_wrappers=YES //開啟TCP訪問控制(hosts.allow和hosts.deny)
local_root=/var/ftp //鎖定系統用戶訪問的根目錄
no_anon_password=YES //匿名用戶訪問時提示輸入密碼,可直接訪問
第十步:創建主配置文件中定義的文件
vsftpd.log:
[[email protected] ~]# touch /var/log/vsftpd.log
banner:
[[email protected] ~]# vi /etc/vsftpd/banner
[[email protected] ~]# cat /etc/vsftpd/banner
-------------------------------------
Hellow,everyone
welcome to FTPServer!
Good luck!
-------------------------------------
.message:
[[email protected] ~]# echo "welcome to IT." > /var/ftp/OU_IT/.message
[[email protected] ~]# echo "welcome to FD." > /var/ftp/OU_FD/.message
[[email protected] ~]# echo "welcome to HR." > /var/ftp/OU_HR/.message
user_list:
[[email protected] ~]# for name in fus{1..9}; do echo $name; done > /etc/vsftpd/user_list
[[email protected] ~]# echo ftp >> /etc/vsftpd/user_list
[[email protected] ~]# echo manager >> /etc/vsftpd/user_list
第十一步:設置文件目錄訪問權限
ftp目錄的訪問權限:
[[email protected] ~]# chown root:ftp /var/ftp/
[[email protected] ~]# tree /var/ftp
/var/ftp/ 目錄權限 目錄所有者 目錄屬組 目錄
├── manager drwx------ manager manager manager
├── OU_IT drwxr-x--- root IT OU_IT
│ ├── fus1 drwx------ fus1 fus1 fus1
│ ├── fus2 drwx------ fus2 fus2 fus2
│ ├── fus3 drwx------ fus3 fus3 fus3
│ └── pub_it drwxrwx--- root IT pub_it
├── OU_FD drwxr-x--- root FD OU_FD
│ ├── fus4 drwx------ fus4 fus4 fus4
│ ├── fus5 drwx------ fus5 fus5 fus5
│ ├── fus6 drwx------ fus6 fus6 fus6
│ └── pub_fd drwxrwx--- root FD pub_it
├── OU_HR drwxr-x--- root HR OU_H
│ ├── fus7 drwx------ fus7 fus7 fus7
│ ├── fus8 drwx------ fus8 fus8 fus8
│ ├── fus9 drwx------ fus9 fus9 fus9
│ └── pub_hr drwxrwx--- root HR pub_it
└── pub drwxrwxr-x root ftp pub
第十二步:重啟服務,使配置文件生效
[[email protected] ~]# ps -ef | grep vsftpd (獲取vsftpd進程的PID-2784)
[[email protected] ~]# kill -HUP 2784 (2784=vsftpd的進程號)
第十三步:設置vsftpd開機啟動
[[email protected] ~]# chkconfig vsftpd on
本文出自 “楓淩傲雪” 博客,請務必保留此出處http://2689027.blog.51cto.com/2679027/1925902
vsftpd實例:匿名訪問共享+系統用戶訪問控制