1)使用yum安裝vsftpd
[root@C67-X64-A1 ~]# /etc/init.d/vsftpd start
為 vsftpd 啟動 vsftpd: [確定]
[root@C67-X64-A1 ~]# chkconfig vsftpd on
//查看21端口是否開啟
[root@C67-X64-A1 ~]# netstat -tulnp| grep 21
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 4169/vsftpd
tcp 0 0 :::23 :::* LISTEN 2321/xinetd
[root@C67-X64-A1 ~]# lsof -i :21
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
vsftpd 4169 root 3u IPv4 18067 0t0 TCP *:ftp (LISTEN)
//備份vsftpd配置文件
[root@C67-X64-A1 ~]# cd /etc/vsftpd/
[root@C67-X64-A1 vsftpd]# cp vsftpd.conf vsftpd.conf.bak
說明:/var/ftp/pub目錄默認情況下是只能下載,不允許上傳的(不要調整該目錄的任何權限)
2)配置有關匿名用戶的常用功能
a.默認情況下,使用匿名用戶進行測試
分別下載和上傳文件進行測試
如上圖提示可以知道,下載test.iso,正常;上傳的xml提示權限問題,
說明:匿名用戶默認是可以下載,但不允許上傳資料的。
我們開放匿名用戶上傳文件的權限:
anon_upload_enable=YES
[root@C67-X64-A1 vsftpd]# cd /var/ftp/pub/
[root@C67-X64-A1 pub]# mkdir -p upload
[root@C67-X64-A1 pub]# ls -ld upload/
drwxr-xr-x 2 root root 4096 8月 24 14:22 upload/
//匿名用戶在系統中對應的是ftp用戶,通過acl配置,讓ftp用戶對upload目錄具有最大權限
[root@C67-X64-A1 pub]# setfacl -m u:ftp:rwx upload/
[root@C67-X64-A1 pub]# getfacl upload/
# file: upload/
# owner: root
# group: root
user::rwx
user:ftp:rwx
group::r-x
mask::rwx
other::r-x
文件能夠上傳,但新建目錄提示權限問題
在配置文件中添加:anon_mkdir_write_enable=YES
然后我們使用匿名賬號在upload下創建一個123的目錄
如上圖所示,我們正常創建了一個名為123的目錄,如果我們想刪除名為123的目錄
如上圖所示,我們刪除upload下的123目錄,沒有刪除成功
添加“anon_other_write_enable=YES”命令參數到配置文件中,然后再次刪除123目錄,成功刪除
關于匿名用戶配置的小結:
-
anonymous_enable=YES
-
anon_upload_enable=YES(默認沒有開啟)
-
anon_mkdir_write_enable=YES(默認沒有開啟,開啟后表面可以創建目錄)
-
anon_other_write_enable=YES(默認在配置文件中沒有這個選項,刪除文件)
-
真正的權限=共享權限與文件系統的權限的交集
3)關于本地用戶的配置參數
[root@C67-X64-A1 ~]# adduser wanzhixing
[root@C67-X64-A1 ~]# echo wanzhixing | passwd –stdin wanzhixing
更改用戶 wanzhixing 的密碼 。
passwd: 所有的身份驗證令牌已經成功更新。
默認情況下,本地用戶登錄的ftp的家目錄為自己的家目錄,比如用戶wanzhixing,實際所在的目錄為/home/wanzhixing,并且能夠上傳/下載/創建目錄/刪除目錄和文件(這里我就不截圖說明了)
配置信息:
local_enable=YES
write_enable=YES
local_umask=022
從上圖信息可以看出,用戶并沒有禁錮在自己的家目錄,這樣操作起來就會顯得非常不安全,為避免這種現象,我們使用另外一個參數:
chroot_local_user=YES
配置完成后,驗證可知被禁錮在自己的目錄了,看不到其它目錄
本地用戶小結:
-
local_enable=YES
-
write_enable=YES
-
local_umask=022
-
chroot_local_user=YES(禁錮所有的ftp本地用戶于其家目錄中)
-
禁錮文件中指定的用戶在其家目錄中
-
chroot_list_enable=YES
-
chroot_list_file=/etc/vsftpd/chroot_list
補充信息:
<—————————————————————————————————————–
使用CentOS7配置ftp本地用戶添加chroot_local_user=YES參數后,有一個報錯信息:
500 OOPS: vsftpd: refusing to run with writable root inside chroot ()
解決方法:
a、從2.3.5之后,vsftpd增強了安全檢查,如果用戶被限定在了其主目錄下,則該用戶的主目錄不能再具有寫權限了!如果檢查發現還有寫權限,就會報該錯誤。
b、要修復這個錯誤,可以用命令chmod a-w /home/user去除用戶主目錄的寫權限,注意把目錄替換成你自己的?;蛘吣憧梢栽趘sftpd的配置文件中增加下列兩項中的一項:
allow_writeable_chroot=YES
<—————————————————————————————————————–
4)關于虛擬用戶的配置參數
a.所有的虛擬用戶會被統一映射為一個指定的系統賬號,訪問的共享位置即為此系統賬號的家目錄
b.各虛擬用戶可被賦予不同的訪問權限:通過匿名用戶的權限控制參數進行指定:
c.常見的配置虛擬用戶的方式有兩種(配置到文本中或者配置到數據庫中)
我們本次主要是介紹虛擬用戶結合mysql數據庫來進行配置:
安裝所需要的程序:
[root@C67-X64-A1 ~]# rpm -ivh http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm [root@C67-X64-A1 ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 [root@C67-X64-A1 ~]# yum clean all [root@C67-X64-A1 ~]# yum -y install yum-fastestmirror [root@C67-X64-A1 ~]# yum -y install pam_mysql(需要注意,如果沒有合適的yum源,可能沒法進行安裝) [root@C67-X64-A1 ~]# rpm -ql pam_mysql /lib64/security/pam_mysql.so /usr/share/doc/pam_mysql-0.7 /usr/share/doc/pam_mysql-0.7/COPYING /usr/share/doc/pam_mysql-0.7/CREDITS /usr/share/doc/pam_mysql-0.7/ChangeLog /usr/share/doc/pam_mysql-0.7/NEWS /usr/share/doc/pam_mysql-0.7/README [root@C67-X64-A1 ~]# yum -y install mysql-server mysql-devel pam_mysql 配置數據庫相關的信息: [root@C67-X64-A1 ~]# /etc/init.d/mysqld start [root@C67-X64-A1 ~]# /usr/bin/mysqladmin -u root password redhat12345 [root@C67-X64-A1 ~]# mysql -uroot -predhat12345 mysql> create database vsftpd; mysql> grant select on vsftpd.* to vsftpd@localhost identified by 'vsftpd12345'; mysql> grant select on vsftpd.* to vsftpd@127.0.0.1 identified by 'vsftpd12345'; mysql> grant select on vsftpd.* to vsftpd@'10.10.10.129' identified by 'www.magedu.com'; mysql> flush privileges; mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | test | | vsftpd | +--------------------+ 4 rows in set (0.00 sec) mysql> use vsftpd; Database changed mysql> show tables; Empty set (0.00 sec) mysql> create table users ( -> id int AUTO_INCREMENT NOT NULL, -> name char(20) binary NOT NULL, -> password char(48) binary NOT NULL, -> primary key(id) -> ); Query OK, 0 rows affected (0.05 sec) mysql> show tables; +------------------+ | Tables_in_vsftpd | +------------------+ | users +------------------+ 1 row in set (0.00 sec)
創建虛擬用戶:
mysql> insert into users(name,password) values('magedu1',password('magedu'));
mysql> insert into users(name,password) values('magedu2',password('magedu'));
mysql> insert into users(name,password) values('wanlong',password('redhat')),('wanzhixing1',password('wanzhixing1'));
mysql> select * from users;
+—-+————-+——————————————-+
| id | name | password |
+—-+————-+——————————————-+
| 1 | magedu1 | *6B8CCC83799A26CD19D7AD9AEEADBCD30D8A8664 |
| 2 | magedu2 | *6B8CCC83799A26CD19D7AD9AEEADBCD30D8A8664 |
| 3 | wanlong | *84BB5DF4823DA319BBF86C99624479A198E6EEE9 |
| 4 | wanzhixing1 | *EF6F8314A516192D2CC241E6A6B24E36B33908AA |
+—-+————-+——————————————-+
4 rows in set (0.00 sec)
配置pam的認證方式:
[root@C67-X64-A1 ~]# vim /etc/pam.d/vsftpd.mysql
auth required /lib64/security/pam_mysql.so user=vsftpd passwd=vsftpd12345 host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2 account required /lib64/security/pam_mysql.so user=vsftpd passwd=vsftpd12345 host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2 說明:用戶vsftpd,密碼vsftpd12345,使用localhost登陸,數據庫為vsftpd,表為users crypt=0:表示口令使用明文方式保存在數據庫中 crypt=1:表示口令使用UNIX的DES加密方式加密后保存在數據庫中 crypt=2:表示口令使用MySQL的password()函數加密后保存在數據庫中 crypt=3:表示口令使用MD5散列值的方式保存在數據庫中 [root@C67-X64-A1 ~]# useradd -s /sbin/nologin -d /var/ftproot vuser [root@C67-X64-A1 ~]# chmod go+rx /var/ftproot 請確保/etc/vsftpd/vsftpd.conf中已經啟用了以下選項 anonymous_enable=NO local_enable=YES write_enable=YES anon_upload_enable=NO anon_mkdir_write_enable=NO chroot_local_user=YES 而后添加以下選項 guest_enable=YES guest_username=vuser 指定訪客的身份為vuser。 并確保pam_service_name選項的值如下所示 pam_service_name=vsftpd.mysql
此時用戶還只有下載的權限,不能下載,因為默認被映射為匿名用戶的權限
5)配置虛擬用戶具有不同的訪問權限
vsftpd可以在配置文件目錄中為每個用戶提供單獨的配置文件以定義其ftp服務訪問權限,每個虛擬用戶的配置文件名同虛擬用戶的用戶名。配置文件目錄可以是任意未使用目錄,只需要在vsftpd.conf指定其路徑及名稱即可。
a. 配置vsftpd為虛擬用戶使用配置文件目錄
# vim vsftpd.conf
添加如下選項
user_config_dir=/etc/vsftpd/vusers_config
b. 創建所需要目錄,并為虛擬用戶提供配置文件
# mkdir /etc/vsftpd/vusers_config/
# cd /etc/vsftpd/vusers_config/
# touch magedu1 wanzhixing1
c. 配置虛擬用戶的訪問權限
虛擬用戶對vsftpd服務的訪問權限是通過匿名用戶的相關指令進行的。比如,如果需要讓wanzhixing1用戶具有上傳文件的權限,可以修改/etc/vsftpd/vusers_config/wanzhixing1文件,在里面添加如下選項即可。
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
編輯用戶magedu1的權限,設置允許上傳、不允許創建目錄、不允許刪除權限(這里我就不截圖演示了) [root@ns1 vusers_config]# cat magedu1 anon_upload_enable=YES anon_mkdir_write_enable=NO anon_other_write_enable=NO
以上的一些案列與配置,基本上涵蓋了vsftpd下面的三種用戶的應用。具體的操作不不雜,但需要我們去理解場景,做到跟實際需求結合起來。
原創文章,作者:Net21-冰凍vs西瓜,如若轉載,請注明出處:http://www.www58058.com/39628