Linux Centos 通過虛擬用戶訪問FTP的配置

来源:https://www.cnblogs.com/davidge/archive/2019/03/02/10462873.html
-Advertisement-
Play Games

Linux Centos 通過虛擬用戶訪問FTP的配置 實驗需求: 讓下麵4個虛擬用戶使用系統用戶ftpvu的許可權來連接到Linux FTP伺服器,並確保都鎖定在 自己的虛擬用戶目錄,不能切換到其他目錄。 ftp1-3的帶寬速率限制在500KB,davidge用戶不限制帶寬。 系統環境: [root ...


Linux Centos 通過虛擬用戶訪問FTP的配置

實驗需求:

讓下麵4個虛擬用戶使用系統用戶ftpvu的許可權來連接到Linux FTP伺服器,並確保都鎖定在

自己的虛擬用戶目錄,不能切換到其他目錄。 ftp1-3的帶寬速率限制在500KB,davidge用戶不限制帶寬。

 

 

系統環境:

[root@cent7-184 ~]# uname -r

3.10.0-229.el7.x86_64

[root@cent7-184 ~]# cat /etc/redhat-release

CentOS Linux release 7.5.1804 (Core)

 

還需要先關閉防火牆和selinux。

 

先yum安裝vsftpd:

yum -y install vsftpd

 

查詢是否正確安裝vsftpd:

[root@cent7-184 ~]# rpm -qa  vsftpd     

vsftpd-3.0.2-25.el7.x86_64

 

之後安裝PAM(用於用戶認證)和DB4(用於生成虛擬用戶的用戶名密碼的db文件)

 yum -y install pam pam-devel db4 db-devel db4-utils db4-tcl

 

 

[root@cent7-184 ~]# rpm -qa  pam pam-devel db4 db-devel db4-utils db4-tcl               

pam-devel-1.1.8-22.el7.x86_64

pam-1.1.8-22.el7.i686

pam-1.1.8-22.el7.x86_64

 

創建用於虛擬用戶的系統用戶ftpvu,並禁止通過shell登陸,不創建家目錄。

[root@cent7-184 ~]# useradd ftpvu -M -s /sbin/nologin

[root@cent7-184 ~]# id ftpvu

uid=8890(ftpvu) gid=8890(ftpvu) groups=8890(ftpvu)

 

創建虛擬用戶信息的文件:

直接在命令行執行即可(奇數行是用戶名,偶數行是密碼)

也可以自己通過vi, vim來複制下麵的用戶信息來手動創建。

cat >>/etc/vsftpd/virtusers <<EOF
ftp1
123456
ftp2
123456
ftp3
123456
davidge
123456
EOF

 

 

 

生成虛擬用戶認證的db文件

 

db_load -T -t hash -f /etc/vsftpd/virtusers  /etc/vsftpd/virtusers.db

 

 

如果新增用戶後需要重新執行上面的db_load命令來重新生成加密用戶信息。

 

配置pam驗證的配置文件:

 

cat  >/etc/pam.d/vsftpd <<EOF

#%PAM-1.0

auth     sufficient /lib64/security/pam_userdb.so  db=/etc/vsftpd/virtusers

account  sufficient /lib64/security/pam_userdb.so  db=/etc/vsftpd/virtusers

EOF

 

[root@cent7-184 vsftpd]# cat /etc/pam.d/vsftpd

#%PAM-1.0

auth     sufficient /lib64/security/pam_userdb.so  db=/etc/vsftpd/virtusers

account  sufficient /lib64/security/pam_userdb.so

 

創建虛擬用戶的存儲路徑並修改目錄許可權為755,owner為: ftpvu

 

[root@cent7-184 ~]# mkdir -p /data/ftp/{ftp1,ftp2,ftp3}

[root@cent7-184 ~]# mkdir -p /data/ftp/davidge

[root@cent7-184 ~]# chmod -R 755 /data/ftp/

[root@cent7-184 ~]# chown -R ftpvu.  /data/ftp/

 

[root@cent7-184 ~]# ls -l /data/ftp/

total 0

drwxr-xr-x 2 ftpvu ftpvu 6 Mar  2 10:53 davidge

drwxr-xr-x 2 ftpvu ftpvu 6 Mar  2 10:53 ftp1

drwxr-xr-x 2 ftpvu ftpvu 6 Mar  2 10:53 ftp2

drwxr-xr-x 2 ftpvu ftpvu 6 Mar  2 10:53 ftp3

 

給ftp的用戶指定家目錄:

[root@cent7-184 ftp1]# usermod -d /data/ftp/ ftpvu

[root@cent7-184 ftp1]# grep ftp /etc/passwd

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

ftpvu:x:8890:8890::/data/ftp/:/sbin/nologin

 

給每個用戶創建虛擬用戶個人配置文件:

 

先創建配置文件的根目錄:

 mkdir /etc/vsftpd/vconf

 

shell命令行直接創建ftp1用戶的配置文件:

cat >>/etc/vsftpd/vconf/ftp1<<EOF
local_root=/data/ftp/ftp1
anonymous_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
write_enable=YES
local_umask=022
idle_session_timeout=600
data_connection_timeout=120
local_max_rate=512000
EOF

 

 

創建ftp2用戶的配置文件

cat >>/etc/vsftpd/vconf/ftp2<<EOF
local_root=/data/ftp/ftp2
anonymous_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
write_enable=YES
local_umask=022
idle_session_timeout=600
data_connection_timeout=120
local_max_rate=512000
EOF

 

創建ftp3用戶的配置文件

cat >>/etc/vsftpd/vconf/ftp3<<EOF
local_root=/data/ftp/ftp3
anonymous_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
write_enable=YES
local_umask=022
idle_session_timeout=600
data_connection_timeout=120
local_max_rate=512000
EOF

 

創建davidge用戶的配置文件

cat >>/etc/vsftpd/vconf/davidge<<EOF
local_root=/data/ftp/davidge
anonymous_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
write_enable=YES
local_umask=022
idle_session_timeout=600
data_connection_timeout=120
EOF

 

完成後通過cat查詢配置文件信息:

 

 

FTP配置文件重要參數說明:

anonymous_enable=NO    #禁用匿名用戶

dual_log_enable=yes        # 配置雙重日誌。

xferlog_file=/var/log/xferlog   #訪問日誌的文件路徑

guest_enable=YES                #啟用虛擬用戶

guest_username=ftpvu      #指定虛擬用戶的系統用戶名

virtual_use_local_privs=YES  #虛擬用戶使用本地用戶的許可權

user_config_dir=/etc/vsftpd/vconf    #虛擬用戶配置文件目錄

allow_writeable_chroot=YES     ##可寫(可上傳)

chroot_local_user=YES     #本地用戶禁錮在宿主目錄中

 

把下麵的配置文件追加到vsftpd.conf裡面,並禁用匿名用戶,同時開啟ftp的日誌:

 

通過sed禁用匿名用戶

sed -i 's@anonymous_enable=YES@anonymous_enable=NO@g' /etc/vsftpd/vsftpd.conf 

追加配置文件新到vsftpd.conf

cat >>/etc/vsftpd/vsftpd.conf <<EOF
dual_log_enable=yes
xferlog_file=/var/log/xferlog
guest_enable=YES
guest_username=ftpvu
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vconf
allow_writeable_chroot=YES
anon_other_write_enable=YES
chroot_local_user=YES
EOF

 

最後生效的配置文件內容:

[root@cent7-184 vsftpd]# grep '^[a-Z]' /etc/vsftpd/vsftpd.conf

anonymous_enable=NO

local_enable=YES

write_enable=YES

local_umask=022

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=NO

listen_ipv6=YES

pam_service_name=vsftpd

userlist_enable=YES

tcp_wrappers=YES

dual_log_enable=yes

xferlog_enable=YES

xferlog_file=/var/log/xferlog

guest_enable=YES

guest_username=ftpvu

virtual_use_local_privs=YES

user_config_dir=/etc/vsftpd/vconf

allow_writeable_chroot=YES

anon_other_write_enable=YES

 

[root@cent7-184 ftp1]# systemctl restart  vsftpd.service  

[root@cent7-184 ftp1]# lsof -i :21

COMMAND   PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME

vsftpd  20846 root    4u  IPv6 33721328      0t0  TCP *:ftp (LISTEN)

[root@cent7-184 ftp1]# netstat -lntup|grep ftp

tcp6       0      0 :::21                   :::*                    LISTEN      20846/vsftpd

 

登陸測試和日誌:

 

 

 

 

 

使用 davidge 用戶傳輸的時候不限制速度:

 

 

 

只能在自己的虛擬用戶目錄下操作,不可以切換到其他目錄,否則提示550切換目錄失敗

 

 

添加新用戶的方法:

 

cat >>/etc/vsftpd/virtusers <<EOF
ftp10
123456
EOF

 

db_load -T -t hash -f /etc/vsftpd/virtusers  /etc/vsftpd/virtusers.db

 

mkdir -p /data/ftp/ftp10

chown -R ftpvu.  /data/ftp/

 

cat >>/etc/vsftpd/vconf/ftp10<<EOF
local_root=/data/ftp/ftp10
anonymous_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
write_enable=YES
local_umask=022
idle_session_timeout=600
data_connection_timeout=120
local_max_rate=512000
EOF

 

systemctl restart  vsftpd.service  

lsof -i :21

 

 上面幾條命令的截圖:

 

驗證登陸和速率:

 

 

錯誤提示信息和解決辦法:

 

1. 500 OOPS:

 

由於建立的本地用戶沒有指定家目錄,需要通過usermod來指定定義的家目錄。

500 OOPS: cannot change directory:/home/ftpvu

Login failed.

 

[root@cent7-184 ftp1]# usermod -d /data/ftp/ ftpvu

[root@cent7-184 ftp1]# grep ftp /etc/passwd

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

ftpvu:x:8890:8890::/data/ftp/:/sbin/nologin

 

2. 550 Failed:

 

ftp> cd /var

550 Failed to change directory.

 

550 Failed- 客戶端沒有切換目錄的許可權,由於限制了目錄只能訪問自己的目錄。

chroot_local_user=YES

如果想讓授權的用訪問其他目錄可以配置下麵的2行:

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/vsftpd.chroot_list

 

並把需要切換目錄的用戶放入list文件: /etc/vsftpd/vsftpd.chroot_list

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 自己有幾個自己的小項目,有許多公用的方法/擴展/工具類等等,於是封裝了一些常用的工具類/擴展方法做了一個類庫 WeihanLi.Common,日誌使用了自己比較常用的 log4net,開始預設使用的log4net進行處理日誌,在1.0.12版本之前直接依賴 log4net,後來覺得這樣做不太好,一是... ...
  • 本文知識點: 1.掌握常量的定義和使用方法 2.理解枚舉的作用和特點 3.掌握枚舉的使用方法 1.1.常量的定義語法 const 數據類型 常量名稱 = 值; 1.2.常見錯誤 1.3常量的使用時機 經常使用並且值不變的變數,可以定義為常量 2.1枚舉的作用及其特點 表示一組描述性的名稱,名稱可以對 ...
  • 一、XML: 1、基本瞭解: xml,Extensible markup language可擴展標記語言,用於數據的傳輸或保存,特點,格式非常整齊數據清晰明瞭,並且任何語言都內置了xml分析引擎, 不需要再單獨寫引擎,但是相較於json解析較慢,現在很多項目任然有廣泛的應用。 2、幾種解析和生成xm ...
  • 1、添加 Zabbix 軟體倉庫 2、啟用可選 rpms 的軟體倉庫 3、安裝 Server/前端/agent 4、安裝mariaDB資料庫 5、創建資料庫 6、創建賬戶並授權 7、導入數據 (導入需要一點時間,不要以為卡住按ctrl+c停止) 8、修改Zabbix server配置文件 9、為Za ...
  • 情況描述黑蘋果主機突然無法進入睡眠。考慮到可能是後臺程式阻礙了系統正常進入睡眠, 於是想要通過Activity Monitor查看系統的活動情況,然而,Activity Monitor閃退。重新開機,快速打開Activity Monitor,可以運行,但是隔一會,Activity Monitor又... ...
  • linux基礎命令一 1、date命令 date命令介紹:顯示或者設置系統日期 date命令的語法: 顯示日期:date [options...] [+FORMAT] FORMAT:為顯示日期的格式符號 %D:以斜杠為分割符顯示日期 %F:顯示當前系統的日期,以中橫線分割日期 %T:顯示當前系統的的 ...
  • 1. 基礎知識註意:在RTOS中是優先值越高則優先順序越高(和ucos/linux的相反) 在移植的時候,主要裁剪FreeRTOS/Source/portable文件夾,該文件夾用來針對不同MCU做的一些處理,如下圖所示,我們只需要使用: 1.1配置工程時,選擇memMang時,一般使用heap_4. ...
  • windows組策略實驗-本地組策略和域控組策略 本地組策略只對本地電腦有效,域策略是電腦加入域環境後對加入域的一組電腦、用戶定義的策略,便於管理 本地組策略: 一、實驗環境 Windows 7 二、實驗步驟 (一)電腦自啟動 1.在C盤的test目錄下,編輯以下腳本,保存為start1.b ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...