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
下一篇 2016-10-24

相關推薦

  • Linux簡述

    計算機誕生                                                  …

    2017-03-18
  • Linux學習總結01—操作系統與硬件介紹(原創)

      在計算機中,分為以下結構,運算器,控制器,存儲器,輸入、輸出設備,運算器和控制起的整個就形成了中央處理器(稱作為CPU),而cpu的功能就是提供運算,運算的數據都是經由控制器而來,控制器其實是往主存儲器中取得數據,內存中的數據是由用戶來輸入的,其運算的結果通過控制器存儲在內存當中,之后可以根據用戶的指令輸出在一個設備當中(例如顯示器),我們都知…

    Linux干貨 2016-10-29
  • Linux基礎之加密通訊過程詳解

    加密通訊過程詳解 第一階段 客戶端->服務器端 向服務器聲明自己的加密通訊協議版本,ssl或者tls 支持的加密算法 支持的壓縮算法 第二階段 服務器端->客戶端 向客戶端確認使用的加密通訊協議版本 確認的加密方法 確認壓縮方法 服務器端證書 第三階段 客戶端->服務器端 客戶端驗證服務器端證書 發證機構 證書完整性 證書持有者 證書有效期…

    2017-09-16
  • RPM總結(一)

    軟件包基礎軟件包運行環境硬件、內核、應用程序的關系包管理器程序包管理器Linux不同系統上的包管理器RPM的優點rpm包命名方式一般源代碼的命名rpm包的命名rpm包的分類與拆包包管理工具RPM包管理器:程序包管理器:獲取程序包的途徑:rpm包管理CentOS系統上使用rpm命令管理程序包:安裝升級:降級降級實例more 軟件包基礎 包管理過程中,最常用的操…

    Linux干貨 2016-08-24
  • linux的內建命令和外部命令

    摘要:    Linux命令有內部命令(內建命令)和外部命令之分,內部命令和外部命令功能基本相同,但是其工作機制相差很大。本文就內建命令和外部命令做一下介紹。 一、內部命令(內建命令)    內部命令,實際上是shell程序的一部分,其中包含的是一些比較簡單的linux系統命令,這些命令由shell程序識別并在shel…

    Linux干貨 2016-10-18
  • Linux的安全控制訪問模塊之SElinux

    SElinux   1、Selinux介紹:Linux的一個強制訪問控制安全模塊,2000年以GNU GPL發布,Linux內核2.6版本集成在內核中。 DAC:自由訪問控制,進程是無束縛的。 MAC:強制訪問控制,策略的規則決定控制的嚴格程度(策略被用來定義被限制的進程能夠使用那些資源[文件和端口]);進程的可以被限制的;默認情況下,沒有允許的行…

    Linux干貨 2016-09-19
欧美性久久久久