CentOS6.7下關于vsftpd的應用之一(匿名用戶/普通用戶/虛擬用戶)

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.默認情況下,使用匿名用戶進行測試

匿名用戶默認權限.png分別下載和上傳文件進行測試

blob.png

如上圖提示可以知道,下載test.iso,正常;上傳的xml提示權限問題,

說明:匿名用戶默認是可以下載,但不允許上傳資料的。

我們開放匿名用戶上傳文件的權限:

anon_upload_enable=YES

blob.png

[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

blob.png

文件能夠上傳,但新建目錄提示權限問題

在配置文件中添加:anon_mkdir_write_enable=YES

然后我們使用匿名賬號在upload下創建一個123的目錄

blob.png

如上圖所示,我們正常創建了一個名為123的目錄,如果我們想刪除名為123的目錄

blob.png

如上圖所示,我們刪除upload下的123目錄,沒有刪除成功

添加“anon_other_write_enable=YES”命令參數到配置文件中,然后再次刪除123目錄,成功刪除

blob.png

關于匿名用戶配置的小結:

  • 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: 所有的身份驗證令牌已經成功更新。

blob.png

默認情況下,本地用戶登錄的ftp的家目錄為自己的家目錄,比如用戶wanzhixing,實際所在的目錄為/home/wanzhixing,并且能夠上傳/下載/創建目錄/刪除目錄和文件(這里我就不截圖說明了)

配置信息:

local_enable=YES

write_enable=YES

local_umask=022

從上圖信息可以看出,用戶并沒有禁錮在自己的家目錄,這樣操作起來就會顯得非常不安全,為避免這種現象,我們使用另外一個參數:

chroot_local_user=YES

blob.png

配置完成后,驗證可知被禁錮在自己的目錄了,看不到其它目錄

本地用戶小結:

  • 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

blob.png

編輯用戶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

(0)
Net21-冰凍vs西瓜Net21-冰凍vs西瓜
上一篇 2016-09-19
下一篇 2016-09-19

相關推薦

  • 權限

    用戶組和管理權限

    2017-11-30
  • bash變量和邏輯運行

    bash 特性及bash腳本編程初步       終端,附著在終端的接口程序:      GUI:KDE,GNome,Xfce      CLI: /etc/shells              b…

    Linux干貨 2016-12-23
  • 一鍵搭建mysql集群系列一

    一鍵自動安裝mysql 5.7 shell腳本自動化安裝二進制mysql-5.7 本節主要用到四個shell腳本 和 一臺資料存儲機器(IP:192.168.42.26) install_mysql.sh 自動化安裝mysql腳本 ntpdate.sh 時間同步腳本 system_init.sh 系統初始化腳本 yum.sh yum源配置腳本 執行步驟: 1…

    2017-05-13
  • grep的用法

    grep的用法 1、復制/etc/skel目錄為/home/tuser1及其內容文件的屬組和其它用戶均沒有任何訪問權限。 cp -R /etc/skel /home/thuser1 #復制文件/etc/skel 到/home/目錄下并改名為thuser1 chmod -R 700 /home/thuser1 #更改/home/thuser1目錄權限為屬主全部…

    Linux干貨 2017-07-23
  • 第二周作業

    Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 cp 文件復制     常用選項:            -i:交互式        …

    Linux干貨 2016-11-06
  • bash腳本之進階

    bash腳本 1、終端打印 1、單雙引號(echo) 雙引號: ①在雙引號里面打不出! ②雙引號,可以在文本中使用“;”,“;”在bash中被用作命令定界符。 單引號: 變量替換在單引號中無效。 2、printf:不會自動添加換行符,要手動添加 如下: 結果: 3、補充: echo 要使用轉義系列需要加e,!號除外 2、變量和環境變量 腳本語言通常…

    Linux干貨 2016-11-28
欧美性久久久久