vsftpd權限配置

要求 :完成vsftpd配置,

  (1) 禁錮系統用戶于家目錄;

  (2) 基于mysql進行用戶認證;

  (3) 不同的虛擬用戶擁有不同的權限設定.

解答:

 (1) 首先安裝需要的系統環境和軟件

yum groupinstall -y "Development Tools"
yum install -y mariadb-server vsftpd mariadb-devel pam-devel

(2) 用戶的驗證如果要基于mysql, 需要借助pam, 將vsftpd的認證功能托管給pam. 需要安裝連接pam和mysql的模塊文件pam_mysql, 下載獲取pam_mysql的壓縮文件,解壓,編譯安裝

tar xf pam_mysql-0.7RC1.tar.gz #解壓文件
cd pam_mysql-0.7RC1  #切換工作目錄
./configure --with-pam=/usr --with-mysql=/usr --with-pam-mods-dir=/usr/lib64/security
make && make install

(3)準備數據庫文件

MariaDB [(none)]> CREATE DATABASE vsftpd;  #首先創建需要的數據庫vsftpd
MariaDB [(none)]> CREATE TABLE vsftpd.users (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name CHAR(30) NOT NULL UNIQUE KEY,password CHAR(48));# 添加表格users, 存儲授權用戶的認證信息
MariaDB [(none)]> INSERT INTO vsftpd.users (name,password) VALUES ('tom',PASSWORD('mageedu')),
('jerry',PASSWORD('mageedu'));  #在users表中,插入兩個用戶
MariaDB [(none)]> GRANT ALL ON vsftpd.* TO 'vsftpd'@'localhost' IDENTIFIED BY 'mageedu';#給vsftpd授權
MariaDB [(none)]> GRANT ALL ON vsftpd.* TO 'vsftpd'@'127.0.0.1' IDENTIFIED BY 'mageedu';
MariaDB [(none)]> FLUSH PRIVILEGES;

(4)創建和配置vsftpd通過pam_mysql認證的配置文件

vsftpd通過pam_mysql進行認證的配置文件在/etc/pam.d/目錄下, 創建一個vsftpd.mysql的配置文件, 添加如下選項:

auth required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=mageedu host=127.0.0.1 db=vsftpd 
table=users usercolumn=name passwdcolumn=password crypt=2
account required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=mageedu host=127.0.0.1 
db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

上述文件中:

  user : 為連接mysql服務器的用戶名, 此用戶要有權限訪問認證vsftpd服務的數據庫;

  passwd : 上面用戶的密碼;

  host : mysql服務器主機的地址, 此處為本機地址;

  db : 認證vsftpd富翁2u的數據庫名稱;

  table : 存放了用戶和密碼的表;

  usercolumn : 用戶名對應的字段;

  passwdcolumn : 密碼對應的字段;

  crypt : 密碼加密的方法.

(5)準備匿名用戶映射的系統用戶賬號

mkdir /ftproot  # 創建映射的系統賬號的家目錄
useradd -d /ftproot vsuser #創建用戶
mkdir /ftproot/{pub,upload}  #創建工作目錄
setfacl -m u:vuser:rwx /ftproot/upload #為vuser用戶添加對目錄的權限

(6)配置vsftpd的主機配置文件vsftpd.conf

修改配置文件,如下:

anonymous_enable=NO   #禁止匿名用戶登錄
pam_service_name=vsftpd.mysql
guest_enable=YES  #開始來賓用戶登錄
guest_username=vsuser #設置來賓用戶名
user_config_dir=/etc/vsftpd/users_conf   #每個來賓用戶的權限設置

配置每個匿名來賓用戶的單獨權限設定:

mkdir /etc/vsftpd/users_conf

設定tom的權限

vim /etc/vsftpd/users_conf/tom
#添加下面的選項
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

設定jerry的權限

vim /etc/vsftpd/users_conf/tom
#添加下面的選項, 設定jerry只能上傳
anon_upload_enable=YES

(7) 禁錮系統用戶于自己的家目錄

啟用如下選項

chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

默認chroot_list文件是不存在的,需要手動創建

touch /etc/vsftpd/chroot_list
awk -F: '$3<1000{print $1}' /etc/passwd > /etc/vsftpd/chroot_list

(8) 重啟服務, systemctl restart vsftpd.service, 在另外一臺主機上測試

[root@localhost ~]# lftp -u tom 10.1.52.44
Password: 
lftp tom@10.1.52.44:~> ls          
drwxr-xr-x    2 0        0               6 Oct 13 19:25 pub
drwxrwxr-x    2 0        0               6 Oct 13 19:25 upload
lftp tom@10.1.52.44:/> cd upload/
lftp tom@10.1.52.44:/upload> put /etc/issue
79 bytes transferred                                          
lftp tom@10.1.52.44:/upload> ls
-rw-------    1 1000     1000           79 Oct 13 19:46 issue
lftp tom@10.1.52.44:/upload> rm issue 
rm ok, `issue' removed
lftp tom@10.1.52.44:/upload> ls
lftp tom@10.1.52.44:/upload>

測試tom用戶成功

然后測試ben用戶, ben只有上傳功能

[root@localhost ~]# lftp -u ben 10.1.52.44
Password: 
lftp ben@10.1.52.44:~> ls          
drwxr-xr-x    2 0        0               6 Oct 13 19:25 pub
drwxrwxr-x    2 0        0               6 Oct 13 19:46 upload
lftp ben@10.1.52.44:/> cd upload/
lftp ben@10.1.52.44:/upload> put /etc/issue
79 bytes transferred
lftp ben@10.1.52.44:/upload> ls
-rw-------    1 1000     1000           79 Oct 13 19:49 issue
lftp ben@10.1.52.44:/upload> rm issue 
rm: Access failed: 550 Permission denied. (issue)
lftp ben@10.1.52.44:/upload>

禁錮系統用戶于自己的家目錄, 且沒有任何權限

[root@localhost ~]# lftp -u root 10.1.52.44
Password: 
lftp root@10.1.52.44:~> ls         
ls: Login failed: 530 Permission denied.          
lftp root@10.1.52.44:~> pwd
ftp://root@10.1.52.44
lftp root@10.1.52.44:~>

原創文章,作者:black_fish,如若轉載,請注明出處:http://www.www58058.com/53475

(0)
black_fishblack_fish
上一篇 2016-10-24 07:39
下一篇 2016-10-24 09:08

相關推薦

  • N25期第八周作業

    1.請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別 主要功能: 網橋是一個局域網與另一個局域網之間建立連接的橋梁,屬于數據鏈路層的一種設備。 集線器是可以將一些機器連接起來組成一個局域網的設備。 二層交換機是工作于OSI模型的第2層(數據鏈路層)的設備,作用和集線器類似。 三層交換機就是具有部分路由器功能的二層交換機。 路由器是互聯…

    Linux干貨 2017-03-08
  • 馬哥教育網絡班21期+第4周作業

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 [root@localhost ~]# cp -r /etc/skel /home/ && mv /home/skel&nbsp…

    Linux干貨 2016-08-02
  • heartbeat實現高可用集群(1)

    環境 node1 192.168.1.35 node2 192.168.1.36 fip 192.168.1.80 daemon httpd nfs 192.168.1.15 配置HA集群的前提 1.節點時間必須同步,使用ntp協議實現 2.節點間需要通過主機互相通信,必須解析主機名至IP地址 a.建議名稱解析功能能使用hosts文件實現 b.通信中使用的名…

    Linux干貨 2017-11-03
  • bash小腳本

    1、編寫腳本/root/bin/systeminfo.sh,顯示當前主機系統信息,包括主機名,IPv4地址,操作系統版本,內核版本,CPU型號,內存大小,硬盤大小。 [root@centos6 scripts]# cat systeminfo.sh #!/bin/bash HostName=`uname -n` Ipv…

    Linux干貨 2016-08-15
  • 第10天:程序包,腳本,sed

    http://note.youdao.com/yws/public/redirect/share?id=b9432a76ff1180b42e01f6eb7c9fc90e&type=false

    Linux干貨 2016-08-18
  • 【聽說要寫一篇文章,我覺得標題比較長的人一定特別帥?!?

    我叫小問。 計劃是學好馬哥所教授的知識。 目標是找到一份好工作!

    Linux干貨 2016-10-23
欧美性久久久久