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 13:49
下一篇 2016-09-19 13:49

相關推薦

  • 文件權限

    首先簡單介紹一下文件的屬性: 使用ls -l 長列出-rw-r–r–. 1 root root 1302 Jul 25 10:23 group文件類型|owner權限group權限other權限|硬鏈接數|owner|group|文件大小(bytes)|mtime|文件名 文件類型:     &…

    2017-07-29
  • N25期–第七周作業

    1、創建一個10G分區,并格式為ext4文件系統; fdisk /dev/sda n p 2 enter +10G w partx -a /dev/sda (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl; mke2fs -t ext4 -…

    Linux干貨 2017-02-20
  • 打造自己小小的RPM包

    關于源碼RPM包的安裝于制作 什么是RPM與SRPM? 1     RPM: 1     SRPM: 2     SRPM的安裝 2 一 .利用rpmbuild默認安裝SRPM檔案 2 二.配置路徑與需要的軟件功能模塊 3  &n…

    Linux干貨 2016-08-24
  • 對防火墻的初步認識

      防火墻,就是用于實現Linux下訪問控制的功能的,它分為硬件的或者軟件的防火墻兩種。無論是在哪個網絡中,防火墻工作的地方一定是在網絡的邊緣。而我們的任務就是需要去定義到底防火墻如何工作,這就是防火墻的策略,規則,以達到讓它對出入網絡的IP、數據進行檢測。    目前市面上比較常見的有3、4層的防火墻,叫網絡層的防火墻,還有7…

    Linux干貨 2017-06-15
  • 有關磁盤管理與文件系統

    硬盤物理結構      扇區  磁頭  磁道   柱面   磁道數      扇區*一個磁道上的扇區個數*磁頭數=柱面      柱面*磁道數=硬盤大小      一個扇區512字節   &…

    2017-08-19
  • 第五周學習總結-rpm&yum

    我們都知道,計算機只能識別二進制程序,而程序員編寫的源代碼都是以純文本形式存在,因此,要想讓計算機識別并運行這些源代碼程序,就必須通過中間的轉換機制讓源代碼變為二進制程序文件,而這種轉換過程就稱為編譯過程。Linux的各發行版本中由于各廠商的編譯過程不盡相同,因此就誕生了各種不同的軟件管理包組件。其中我們最熟知的就要數Redhat系列的rpm包了。 rpm包…

    2018-01-03
欧美性久久久久