當前位置:首頁 » 文件傳輸 » linux搭建ftp伺服器配置虛擬用戶
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

linux搭建ftp伺服器配置虛擬用戶

發布時間: 2023-06-05 15:11:18

A. 如何在linux上配置ftp 及創建 ftp用戶

做一個虛擬賬戶就解決了:
步驟如下:
1、建立虛擬用戶口令庫文件
口令庫文件中奇數行設置用戶名,偶數行設置口令
# vi /etc/vsftpd/logins.txt 注意,一下是4行
upload 這個是帳戶名
upload 這個是密碼
download
download
2、生成vsftpd的認證文件
# db_load -T -t hash -f logins.txt /etc/vsftpd/vsftpd_login.db
設置認證文件只對用戶可讀可寫
# chmod 600 /etc/vsftpd/vsftpd_login.db
3、建立虛擬用戶所需的PAM配置文件
# vi /etc/pam.d/vsftpd.vu
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
注意:以上2行中最後的2個文件名vsftpd_login和第2個步驟中的資料庫名字必須一致!
4、建立虛擬用戶所要訪問的目錄並設置相應許可權
# mkdir /home/ftpsite
# useradd -d /home/ftpsite virtual(用戶名)
# chown virtual:virtual /home/ftpsite
# chmod 700 /home/ftpsite/
5、設置vsftpd.conf配置文件
guest_enable=YES
guest_username=virtual
pam_service_name=vsftpd.vu
6、設置主配置文件
在vsftpd.conf文件中添加用戶配置文件目錄設置
user_config_dir=/etc/vsftpd_user_conf
# service vsftpd restart
7、建立用戶配置文件目錄
使用mkdir命令建立用戶配置文件目錄
# mkdir /etc/vsftpd_user_conf
為虛擬用戶建立單獨的配置文件,用戶配置文件名稱與用戶名相同
touch /etc/vsftpd_user_conf/upload
touch /etc/vsftpd_user_conf/download
8、每個FTP虛擬用戶都可以獨立設置其許可權
vi /etc/vsftpd_user_conf/upload
anon_world_readable_only=NO 可讀可下載
anon_upload_enable=YES 可上傳
anon_mkdir_write_enable=YES 可創建和刪除文件夾
anon_other_write_enable=YES 可文件改名和刪除文件
local_root=/home/ftpsite/upload 指定upload的宿主目錄
download_enable=NO 禁止下載
(注意:請先到/home/ftpsite下面去創建upload文件夾)

B. linux怎麼配置虛擬用戶ftp伺服器

1、安裝vsftp軟體包;(第一張安裝光碟中)
#rpm -ivh vsftpd-2.0.1-5.i386.rpm
2、建立虛擬用戶口令庫文件logins.txt(奇數行是用戶名,偶數行是口令)
#vi logins.txt
wang
wp123
peng
wp456
3、生成vsftpd的認證文件(/etc/vsftpd/vsftpd_login.db)
1) 安裝3個支持的軟體包 ;
#rpm -ivh db4-java....
#rpm -ivh db4-tcl....
#rpm -ivh db4-utils....
2) 使用db_load命令生成認證文件;
#db_load -T -t hash -f logins.txt /etc/vsftpd/vsftpd_login.db
3) 設置認證文件的許可權;
#chmod 600 /etc/vsftpd/vsftpd_login.db
4、建立虛擬用戶所需的PAM配置文件;
#vi /etc/pam.d/vsftpd.vu
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
5、建立虛擬用戶及要訪問的目錄並設置相應的許可權
#useradd -d /home/ftpsite virtual
#chmod 700 /home/ftpsite
6、設置vsftpd.conf配置文件(添加虛擬用戶的配置項)
#vi /etc/vsftpd/vsftpd.conf
guest_enable=YES
guest_username=virtual
pam_service_name=vsftpd.vu
7、重新啟動vsftpd服務程序;
#service vsftpd start
8、測試虛擬用戶帳號的FTP登錄 ;
#ftp localhost
9、對不同的虛擬用戶設置不同的許可權;
1) 設置主配置文件
在vsftpd.conf文件中添加用戶配置文件目錄設置
user_config_dir=/etc/vsftpd_user_conf
2) 建立用戶配置文件目錄
# mkdir /etc/vsftpd_user_conf
3) 為虛擬用戶建立單獨的配置文件
a.用戶配置文件名稱與用戶名相同
/etc/vsftpd_user_conf/mike
/etc/vsftpd_user_conf/john
b.每個FTP虛擬用戶都可以獨立設置其許可權
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

C. linux的ftp中如何虛擬用戶的許可權

在linux中添加ftp用戶,並設置相應的許可權,操作步驟如下:
1、環境:ftp為vsftp。被限制用戶名為test。被限制路徑為/home/test
2、建用戶:在root用戶下:
useradd -d /home/test test //增加用戶test,並制定test用戶的主目錄為/home/test
passwd test //為test設置密碼
3、更改用戶相應的許可權設置:
usermod -s /sbin/nologin test //限定用戶test不能telnet,只能ftp
usermod -s /sbin/bash test //用戶test恢復正常
usermod -d /test test //更改用戶test的主目錄為/test

4、限制用戶只能訪問/home/test,不能訪問其他路徑
修改/etc/vsftpd/vsftpd.conf如下:
chroot_list_enable=YES //限制訪問自身目錄
# (default follows)
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list
編輯 vsftpd.chroot_list文件,將受限制的用戶添加進去,每個用戶名一行
改完配置文件,不要忘記重啟vsFTPd伺服器
[root@linuxsir001 root]# /etc/init.d/vsftpd restart
5、如果需要允許用戶修改密碼,但是又沒有telnet登錄系統的許可權:
usermod -s /usr/bin/passwd test //用戶telnet後將直接進入改密界面

D. 如何配置linux ftp伺服器只有指定的用戶可以訪問

以Vsftpd為例:
第一類以本地Linux帳號來驗證,指定的用戶訪問,
控制用戶可以用user_list and ftpuser
如果vsftpd.conf配置文件中
userlist_deny yes,則User_list用戶無法訪問Ftp
反之,僅User_list可以訪問
Ftpusers有高於上面設置的許可權,能拒絕用戶訪問。

userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list

第二類使用虛擬用戶,結合上面的。然後根據所建立的虛擬用戶,或者資料庫用戶來訪問。不建立用戶,不建立相應的配置文件,都不可以訪問。
此外。下面要點就是Vsftpd使用過程中的節點。
1,盡量添加ssl認證,否則密碼是明文傳輸。

2,Chroot對相應的目錄,使用戶不可以切換其他目錄。

3,建立用戶不需要登陸Bash,

4,建立虛擬用戶時,Required和Sufficient的區別,前者是完全虛擬,後者,虛擬+實際用戶,並且虛擬用戶資料庫時,不要帶後面的 .db。

5,配置文件不要留空格。和SVN的配置一樣。

6,定位虛擬用戶目錄後,許可權的分配可以通過相應的配置文件,進行細分。

達到的目標有:許可權的上傳下載,定位目錄,匿名操作。

當然對目錄的chmod也會與上面許可權設置的交集。

7,無法訪問的用戶,除了密碼, chmod許可權之外,還要檢查/etc/vsftpd目錄下面的各個配置文件。

特別是 user_list,ftpusers,這些許可權於Vsftpd.conf設置相關,上面有詳細說明。

8,Iptables,Selinux,及/etc/host.{allow|deny}.影響登陸許可權

E. linux虛擬機怎麼設置ftp伺服器

下面是在虛擬機中的linux的ftp的基本配置(redhat AS 4.0為例):
首先要安裝linux下的vsftp軟體包。
rpm -qa|gerp vsftpd //查找vsftpd有沒有安裝
如果沒有安裝就 vsftpd-2.0.1-5.i386.rpm (在第一張光碟)
在linux中有一個非常重要的一點就是要掛載光碟機 mount /media/cdrom
在這里我們就不用源代碼安裝了。用的是rpm安裝
#rpm -ivh vsftpd-2.0.1-5.i386.rpm
這里就安裝好了。
service vsftpd start 啟動vsftpd服務
如果在不設置任何的情況下,可以以匿名的方式訪問該ftp。
注.如果訪問不了的時候請大家要把linux的防火牆也要關閉:
iptables -F 清除防火牆
在安裝好ftp會產生幾個文件:
/etc/vsftpd/vsftpd.conf 主配置文件
/etc/vsftpd.ftpusers 指定哪些用戶不能訪問FTP伺服器
/etc/vsftpd.user_list 文件中指定的用戶是否可以訪問ftp伺服器由vsftpd.conf文件中的userlist_deny的取值來決定。
這幾個文件就是整個ftp控制和禁止用戶的許可權配置。。。
下面我們就來設置一個vsftpd的核心文件
# cd /etc/vsftpd/vsftpd.conf 這就是vsftpd的核心配置文件
anonymous_enable=YES/no 是否允許匿名用戶登錄
anonymous_enable=yes/no 是否允許匿名上傳文件
local_enable= YES/no 是否允許本地用戶登錄
write_enable= YES/no 是否允許本地用戶上傳
guest_enable=yes/no 是否允許虛擬用戶登錄;
local_mask=022 設置本地用戶的文件生成掩碼為022,默認值為077
dirmessage_enable= YES 設置切換到目錄時顯示.message隱含文件的內容
xferlog_enable= YES 激活上傳和下載日誌
connect_from_port_20=YES 啟用FTP數據埠連接
pam_service_name=vsftpd 設置PAM認證服務的配置文件名稱, 該文件存放在/etc/pam.d目錄下
userlist_enable= YES 允許vsftpd.user_list文件中的用戶訪問伺服器
userlist_deny= YES 拒絕vsftpd.user_list文件中的用戶訪問伺服器
listen= YES/no 是否使用獨占啟動方式(這一項比較重要)
tcp_wrappers= YES/no 是否使用tcp_wrappers作為主機訪問控制方式
最主要的就是這些設置了。(這是一般都是默認的不是太懂的不要動)
大家可以設置下面的設置:
ftpd_banner=welcome to ftp service 設置連接伺服器後的歡迎信息
idle_session_timeout=60 限制遠程的客戶機連接後,所建立的控制連接,在多長時間沒有做任何的操作就會中斷(秒)
data_connection_timeout=120 設置客戶機在進行數據傳輸時,設置空閑的數據中斷時間
accept_timeout=60 設置在多長時間後自動建立連接
connect_timeout=60 設置數據連接的最大激活時間,多長時間斷開,為別人所使用;
max_clients=200 指明伺服器總的客戶並發連接數為200
max_per_ip=3 指明每個客戶機的最大連接數為3
local_max_rate=50000(50kbytes/sec)
anon_max_rate=30000 設置本地用戶和匿名用戶的最大傳輸速率限制
pasv_min_port=埠
pasv-max-prot=埠號 定義最大與最小埠,為0表示任意埠;為客戶端連接指明埠;
listen_address=IP地址 設置ftp服務來監聽的地址,客戶端可以用哪個地址來連接;
listen_port=埠號 設置FTP工作的埠號,默認的為21
chroot_local_user=YES 設置所有的本地用戶可以chroot
chroot_local_user=NO 設置指定用戶能夠chroot
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list(只有/etc/vsftpd.chroot_list中的指定的用戶才能執行)
local_root=path 無論哪個用戶都能登錄的用戶,定義登錄帳號的主目錄, 若沒有指定,則每一個用戶則進入到個人用戶主目錄;
chroot_local_user=yes/no 是否鎖定本地系統帳號用戶主目錄(所有);鎖定後,用戶只能訪問用戶的主目錄/home/user,不能利用cd命令向上轉;只能向下;
chroot_list_enable=yes/no 鎖定指定文件中用戶的主目錄(部分),文件:/chroot_list_file=path 中指定;
userlist_enable=YES/NO 是否載入用戶列表文件;
userlist_deny=YES 表示上面所載入的用戶是否允許拒絕登錄;
userlist_file=/etc/vsftpd.user_list 列表文件
這些就是高級設置了。大家可以適當的更改。
#vi /etc/hosts.allow
vsftpd:192.168.5.128:DENY 設置該IP地址不可以訪問ftp服務(vsftpd在獨占啟動方式下支持tcp_wrappers主機訪問控制方式)
時間限制:
#cp /usr/share/doc/vsftpd-1.1.3/vsftpd.xinetd /etc/xinetd.d/vsftpd
#vi /etc/xinetd.d/vsftpd/
修改 disable = no
access_time = hour:min-hour:min (添加配置訪問的時間限制(註:與vsftpd.conf中listen=NO相對應)
例: access_time = 8:30-11:30 17:30-21:30 表示只有這兩個時間段可以訪問ftp

配置文件是 /etc/vsftpd/vsftpd.conf 按如下編輯此文件,編輯文件當然用vi了
1)實現匿名用戶的上傳下載文件
程序代碼:
Anonymous_enable=yes 匿名登陸
Connect_form_port_20=yes 啟用FTP數據埠的數據連接
Pam_service_name=vsftpd 驗證方式
Listen=yes 獨立的VSFTPD伺服器

這樣你就可以實現匿名登陸ftp了,但還不能上傳文件
程序代碼:
Anon_upload_enable=yes 開放上傳許可權
Anon_mkdir_write_enable=yes 可創建目錄的同時可以在此目錄中上傳文件
Write_enable=yes 開放本地用戶寫的許可權
Anon_other_write_enable=yes 匿名帳號可以有刪除的許可權
加上上面的這段,你就可以實現匿名ftp的上傳下載文件了
然後你保存文件,用service vsftpd start來啟動vsftp的服務,然後就可以用ftp了
注意:確定你的防火牆 iptables上打開21埠,不然在登陸ftp的時候會提示socket錯誤,拒絕連接。還有就是當你再次編輯vsftp.conf後用 service vsftpd restart重起的時候總是提示你不能關閉vsftp服務,這時候你用service vsftpd status察看一下他的狀態,如果提示你vsftpd被locked 那可能是因為你的vsftpd.conf中配置的有錯誤,你要重新編輯他,直到能正常重起他為止,一次配置不對,多配置幾次就好了
2)實現本地用戶上傳下載
程序代碼:
新建一個用戶
adser 用戶名 增加一個用戶
passwd 用戶名 增加用戶的密碼
然後看/etc/passwd中最後一行就是你剛才添加的用戶信息
然後編輯/etc/vsftpd/vsftpd.conf文件,
Local_enable=yes 允許使用本地用戶來登陸ftp
在/etc/vsftpd.ftpuser中可以增加想要阻止登陸ftp的用戶
限制用戶只能在自己的目錄中
Chroot_list_enable=yes 文件中的名單可以調用
Chroot_list_file=/etc/vsftpd.chroot_list 前提是chroot_local_user=no,在文件中加入用戶名

vsftpd.conf的參數
程序代碼:
Anonymous_enable=yes 允許匿名登陸
Dirmessage_enable=yes 切換目錄時,顯示目錄下.message的內容
Local_umask=022 FTP上本地的文件許可權,默認是077
Connect_form_port_20=yes 啟用FTP數據埠的數據連接
Xferlog_enable=yes 激活上傳和下傳的日誌
Xferlog_std_format=yes 使用標準的日誌格式
Ftpd_banner=XXXXX 顯示歡迎信息
Pam_service_name=vsftpd 驗證方式
Listen=yes 獨立的VSFTPD伺服器
Anon_upload_enable=yes 匿名用戶上傳許可權
Anon_mkdir_write_enable=yes 創建目錄的同時可以在此目錄中上傳文件
Write_enable=yes 本地用戶寫的許可權
Anon_other_write_enable=yes 匿名帳號可以有刪除的許可權
Anon_world_readable_only=no 匿名用戶瀏覽許可權
Ascii_upload_enable=yes 啟用上傳的ASCII傳輸方式
Ascii_download_enable=yes 啟用下載的ASCII傳輸方式
Banner_file=/var/vsftpd_banner_file 用戶連接後歡迎信息使用的是此文件中的相關信息
Idle_session_timeout=600(秒) 用戶會話空閑後10分鍾
Data_connection_timeout=120(秒) 將數據連接空閑2分鍾斷
Accept_timeout=60(秒) 將客戶端空閑1分鍾後斷
Connect_timeout=60(秒) 中斷1分鍾後又重新連接
Local_max_rate=50000(bite) 本地用戶傳輸率50K
Anon_max_rate=30000(bite) 匿名用戶傳輸率30K
Pasv_min_port=5000 將客戶端的數據連接埠改在
Pasv_max_port=6000 5000—6000之間
Max_clients=200 FTP的最大連接數
Max_per_ip=4 每IP的最大連接數
Listen_port=5555 從5555埠進行數據連接
Local_enble=yes 本地帳戶能夠登陸
Write_enable=no 本地帳戶登陸後無權刪除和修改文件
Chroot_local_user=yes 本地所有帳戶都只能在自家目錄
Chroot_list_enable=yes 文件中的名單可以調用
Chroot_list_file=/etc/vsftpd.chroot_list 前提是chroot_local_user=no
Userlist_enable=yes 在指定的文件中的用戶不可以訪問
Userlist_deny=yes
Userlist_file=/etc/vsftpd.user_list
Banner_fail=/路徑/文件名 連接失敗時顯示文件中的內容
Ls_recurse_enable=no
Async_abor_enable=yes
one_process_model=yes
Listen_address=10.2.2.2 將虛擬服務綁定到某埠
Guest_enable=yes 虛擬用戶可以登陸
Guest_username=所設的用戶名 將虛擬用戶映射為本地用戶
Chown_uploads=yes 改變上傳文件的所有者為root
Chown_username=root
Deny_email_enable=yes 是否允許禁止匿名用戶使用某些郵件地址
Banned_email_file=//任意指定的路徑/xx/
Pasv_enable=yes 伺服器端用被動模式
User_config_dir=/任意指定的路徑//任意文件目錄指定虛擬用戶存放配置文件的路徑

F. linux怎麼搭建ftp伺服器

vsftpd是一款在Linux發行版中最受推崇的FTP伺服器程序。特點是小巧輕快,安全易用。並且是一個完全免費開放源碼的ftp軟體
方法/步驟
1、用在線安裝
yum install vsftpd pam* db4*-y
使用命令將vsftp配置為系統服務
chkconfig --level 35 vsftpd on
2、配置vsftpd服務的宿主
useradd vsftpdadmin -s /sbin/nologin -M
這個vsftpdadmin只是用來替換root的,並不需要登錄
3、建立ftp虛擬宿主帳戶
useradd vsftpuser -s /sbin/nologin -M
這ftpuser只個虛擬帳戶的宿主,本身是不用登錄的
4、配置vsftpd.conf 配置之前要先備份一下原來的
vi /etc/vsftpd/vsftpd.conf
anonymous_enable=YES --> anonymous_enable=NO //不允許匿名用戶訪問,默認是允許。
chroot_list_enable=YES --> chroot_list_enable=YES /卜畝/不允許FTP用戶離開自己主目錄
增加
#設定虛擬用戶個人Vsftp的配置文件存放路徑。也就是說,這個被指定的目錄里,將存放每個Vsftp虛擬用戶個性的配置文件,一個需要注意的地方就是這些配閉弊蔽置文件名必須和虛擬用戶名相同。
user_config_dir=/etc/vsftpd/vconf/userlocal
#這一步非常重要,要記住這一步。一會要根據這個配置新建文件夾

#修改埠號
ftp_data_port=4040
reverse_lookup_enable=NO
pasv_enable=yes
pasv_min_port=48790
pasv_max_port=48800
listen_port=48796 #埠可以根據你自己實際情況配置,也可以用默認埠。但是為了安全考慮根據自己實際情況配置
5、建立虛擬用戶文件
mkdir /etc/vsftpd/vconf
touch /etc/vsftpd/vonf/vir_user
6、建立虛擬用戶
vi /etc/vsftpd/vonf/vir_user
virtualuser //用戶名
12345678 //密碼
7、生成資料庫
db_load -T -t hash -f /etc/vsftpd/vconf/vir_user /etc/vsftpd/vconf/vir_user.db
8、設置資料庫轎州文件訪問許可權
chmod 600 /etc/vsftpd/vconf/vir_user
chmod 600 /etc/vsftpd/vconf/vir_user.db
9、修改/etc/pam.d/vsftpd
auth sufficient pam_userdb.so db=/etc/vsftpd/vconf/vir_user
account sufficient pam_userdb.so db=/etc/vsftpd/vconf/vir_user
(要想同時使用系統用戶和虛擬用戶,就需要把required改成sufficient)
10
根據第四步配置的user_config_dir=/etc/vsftpd/vconf/userlocal
新建userlocal文件夾
mkdir /etc/vsftpd/vconf/userlocal
11、根據第六步建立的用戶名建立一個文件
例如第六步建立的帳號是virtualuser,則新建一個virtualuser文件
touch /etc/vsftpd/conf/userlocal/virtualuser
12、編輯該用戶訪問的文件路徑
vi /etc/vsftpd/conf/userlocal/virtualuser
輸入如下
local_root= //需要指定的網站根目錄,例如www..com所在文件夾為/www/
anonymous_enable=NO #禁止匿名用戶訪問
write_enable=YES #開啟寫許可權
local_umask=022 #上傳後文件的許可權掩碼
anon_upload_enable=NO #關閉匿名下載
anon_mkdir_write_enable=NO #關閉匿名創建文件夾
idle_session_timeout=60 #會話自動關閉時間 60是因分鍾
data_connection_timeout=120 #數據延遲時間
max_clients=10 #最大連接數
max_per_ip=5 #同一個ip同時允許5個IP聯機
local_max_rate=1048576 #實體用戶傳輸速度限制,單位B/s。0代表不限制
13、配置就此完成,重啟vsftpd服務:service vsftpd restart。
查看系統埠狀態:netstas -tulnp。如果能看到48796埠正在被vsftpd調用說明啟動成功。
如有不清楚的可以再繼續看看網路經驗。
本回答由電腦網路分類達人 呂明推薦
評論
2 0

龍之晨_lemon | seo專員向TA咨詢
擅長: 互聯網
其他回答

1.
檢查安裝vsftpd軟體
使用如下命令#rpm -qa |grep vsftpd可以檢測出是否安裝了vsftpd軟體,
如果沒有安裝,使用YUM命令進行安裝。

2、啟動服務
使用vsftpd軟體,主要包括如下幾個命令:
啟動ftp命令#service vsftpd start
停止ftp命令#service vsftpd stop
重啟ftp命令#service vsftpd restart

3、vsftpd的配置
ftp的配置文件主要有三個,位於/etc/vsftpd/目錄下,分別是:
ftpusers 該文件用來指定那些用戶不能訪問ftp伺服器。
user_list 該文件用來指示的默認賬戶在默認情況下也不能訪問ftp
vsftpd.conf vsftpd的主配置文件

4、以匿名用戶為例,我們去掉配置文件vsftpd.conf 裡面以下
anon_upload_enable=YES
anon_mkdir_write_enable=YES
兩項前面的#號,就可以完成匿名用戶的配置,此時匿名用戶既可以登錄上傳、下載文件。記得修改配置文件後需要重啟服務。

5、非匿名賬戶的創建與使用
vsftpd服務與系統用戶是相互關聯的,例如我們創建一個名為test 的系統用戶,那麼此用戶在默認配置的情況下就可以實現登錄

登錄後在頁面創建名為「aa」的文件夾,同樣我們在伺服器test用戶 的home目錄里也可以看到相同的文件。

G. 如何在LINUX上建立虛擬用戶

為vsftpd 建立虛擬用戶
ftp 2009-07-21 16:07:34 閱讀155 評論0 字型大小:大中小 訂閱
Linux的FTP服務支持3種用戶:
1.匿名帳戶
2.本地帳戶
3.虛擬用戶
為什麼要使用虛擬用戶:
匿名帳戶可以很好的保證FTP伺服器的安全性,但是,對匿名用戶的許可權管理不夠靈活.如果想對訪問FTP的帳戶給予更多的許可權,就可以用本地帳戶來實現. 但是,本地帳戶默認情況下是可以登陸Linux系統的,這樣對Linux系統來說是一個安全隱患.那麼怎麼能在靈活的賦予FTP用戶許可權的前提下,保證 FTP伺服器乃至整個Linux系統的安全呢?使用虛擬用戶就是一種解決辦法.
下面,我們就一起來學習,該怎樣在Linux下配置FTP伺服器的虛擬用戶.
開始配置前,讓我們先大概了解下FTP虛擬用戶的工作原理:
虛擬用戶,顧名思義,並不是一個合法的Linux系統帳戶,但是他可以用來登陸該系統上運行的FTP伺服器.
當用戶在連接上FTP伺服器後,會被要求輸入用戶名和密碼.FTP伺服器在拿到這個用戶名和密碼後,會調用相應的PAM認證模塊對,和系統中的FTP認證文件進行相比較.如果該用戶名和密碼與FTP認證文件中的某條記錄相符,就通過認證,然後該帳戶就被映射成一個Linux下的本地帳戶,然後根據使用該本地帳戶對FTP資源進行訪問.否則則斷開該連接請求.
了解了FTP虛擬用戶的工作原理後,我們就可以開始配置FTP虛擬用戶了.
整個過程可以分這幾個步驟:
1.准備一個虛擬用戶的口令庫文件.該文件中保存的用戶名和密碼是用戶連接FTP伺服器時,需要輸入的用戶名和密碼.文件可以自己創建,位置無關緊要,文件格式為:奇數行為用戶名,偶數行為密碼.
例如:touch login.txt //創建一個名為login.txt的虛擬用戶口令庫文件
vi login.txt //編輯該口令庫文件
mike //虛擬用戶mike
123 //虛擬用戶mike的密碼
john //虛擬用戶john
321 //虛擬用戶john的密碼
保存退出.
2.用剛才建立的虛擬用戶口令庫文件生成FTP伺服器的認證文件.該認證文件是一個被加密後的密文.PAM在調用相應的認證模塊後,會對從FTP伺服器發來的用戶名和密碼進行加密,然後在跟該文件進行對比,發現相符條目後,登陸用戶才會被允許登陸.
db_load -T -t hash -f login.txt /etc/vsftpd/vsftpd_login.db
//在運行該命令前,別忘記安裝db4-utils軟體包,該包包含有db_load命令等.關於該命令的使用不在本文討論范圍內.其中-f參數後跟的為剛才創建的虛擬用戶口令庫文件.最後的路徑為生成的FTP認證文件的存放位置.
為了進一步保證安全,可以將該FTP認證文件的許可權設置為600.
3.建立虛擬用戶所需要的PAM配置文件.由於FTP伺服器在接受到用戶的用戶名和口令後會調用PAM認證,所以我們還要創建虛擬用戶的PAM配置文件.
我們將該文件保存在/etc/pam.d目錄下,文件名暫時取為:vsftpd.這里要注意一點就是,該文件名要與FTP服務主配置文件(/etc/vsftpd/vsftpd.conf)中的pam_service_name=vsftpd選項的選項值相同.
創建好該文件後,將下面的內容加入到該文件中:
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
改好後,保存退出(注意,/etc/pam.d/vsftpd 這個文件只能有上面兩行代碼有效,其他內容請用#號注釋掉).注意3個紅色文件的文件名.該3個文件為1個文件,只不過在使用中寫法不同.
4.由於用戶在通過PAM的認證後要被映射成一個本地用戶,所以我們還要建立一個本地用戶供虛擬用戶使用.
我們只需要對該本地用戶賦予FTP主目錄的適當訪問許可權就行.即使FTP伺服器遭到攻擊,這個本地用戶也沒有訪問其他目錄的許可權,相對比較安全一些.
useradd -d /home/ftpsite virtual //用戶名為virtual,主目錄為FTP的根
chmod 700 /home/ftpsite //將其許可權設置為700,可以根據實際情形進行修改
**更正(ftp目錄歸屬與被用於ftp的虛擬用戶的情況下)**
000(---------) 可切僅可登陸
500(r-x------) 可見文件列表,可下載,不可上傳與ftp上不同名的文件,不可刪除、改名、新建文件夾
700(rwx------) 可上傳下載文件,可修改文件名,可刪除文件,可建立文件夾,可移動文件(可做全部操作)(vsftpd 配置許可的情況下)
5.在FTP的主配置文件中,啟用FTP虛擬用戶.增加如下選項即可:
guest_enable=YES
guest_username=virtual //將虛擬用戶映射成本地的哪個用戶.這里用的是virtual,剛才建
立的那個用戶.
pam_service_name=/etc/vsftpd/vsftpd //切記要修改該項的值
6.配置到這里就完成了,別忘記重啟FTP服務進行測試.
7.為不同的虛擬用戶分配許可權
默認情況下,虛擬用戶擁有相同的許可權,就是virtual的許可權,我們可以根據實際需求對不同的虛擬用戶分配許可權.
首先在FTP的主配置文件中加一個選項:
user_config_dir=/etc/vsftpd_user_conf //文件名和路徑都可以自己定義
然後創建該目錄.
mkdir /etc/vsftpd_user_conf
下面就可以在該目錄下編輯不同虛擬用戶的許可權配置文件了,比如要對mike編輯其許可權.
touch mike //建立mike的許可權文件.文件名要與虛擬用戶名相同
可以根據實際需求為該文件添加下面的選項和值:
anon_world_readable_only=NO //表示用戶可以瀏覽FTP目錄和下載文件
anon_upload_enable=YES //表示用戶可以上傳文件
anon_mkdir_write_enable=YES //表示用戶有創建和刪除目錄的許可權
anon_other_write_enable=YES //表示用戶具有文件改名和刪除文件的許可權
另外:修改 /etc/selinux 文件夾下的 config 文件,SELINUX=enforcing 修改為 SELINUX=disabled
到這里,虛擬用戶就算完成配置完成了.
不過,有一個問題,好象在配置完虛擬用戶後,不關FTP主配置文件里怎樣配置,匿名用戶和本地用戶都不能登陸FTP伺服器了.該怎樣解決這個問題呢?
如果不能上傳文件,如果其他配置都和上面一樣,而且ftp主目錄的許可權設置為777都不能上傳的話,則可能是防火牆的問題:
========= 以下轉自:(http://www.hebgh.org/bbs/Topic.aspx?BoardID=18&TopicID=321) =========
Vsftpd匿名用戶無法上傳的解決
在CentOS下,通過#yum -y install vsftpd安裝好vsftpd並通過編輯/etc/vsftpd/vsftpd.conf進行配置
anonymous_enable=YES
local_enable=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
在/var/ftp/下建立upload目錄,設置/var/ftp/upload目錄的屬性為777,將其屬主改為ftp用戶
chmod -R 777 /var/ftp/upload
chown ftp:ftp /var/ftp/upload
重啟vsftpd。
至此,按理說vsftpd的匿名用戶在ftp的upload目錄下應具有下載、上傳、建目錄、刪除的許可權,但在上傳時,卻出現了錯誤
200 Switching to Binary mode.
200 PORT command successful.Consider using PASV.
553 Could not create file.
試了好多天,一直在配置文件上和目錄許可權上找原因,可都沒有解決問題。
今天,看到一篇文章,說出現Consider using PASV是防火牆的原因。
通過setup打開防火牆配置項,看到有SELinux項,有強制、允許、禁用三項,選禁用後,vsftpd的匿名用戶就可以進行上傳,建目錄等操作了。

或者運行命令
#setsebool -P ftpd_disable_trans 1
然後重啟vsftpd服務,也可解決這個問題。
解決了上傳的問題後,又有了新的問題,就是匿名用戶上傳的文件無法下載。經查上傳的文件的屬性為-rw-------。
先是在配置文件中,修改local_umask=022項,沒有解決問題,增加如下項
anon_world_readable_only=NO
則能下載,具體原因不詳。

後來增加anon_umask-022項,則上傳的文件屬性為-rw-r--r--,匿名用戶可以正常下載。

vsftpd用戶目錄問題
伺服器技術 2009-10-12 17:13:03 閱讀216 評論0 字型大小:大中小 訂閱
我這里很簡單,也就是設定最多六七個用戶,每個用戶對應不同的目錄,然後這些目錄會用在web上。
我看了這里的vsftp的配置,我這樣的目的好像用虛擬用戶是最好了。但是我不大清楚,這個虛擬用戶,是不是說我如果有10個ftp帳號,就要有10個虛擬用戶?然後給每個虛擬用戶指定目錄?如果是這樣的話,那我就要
useradd10個用戶咯?
這個ftp用戶的主目錄是怎麼定的呢?是在useadd的時候指定的目錄么?
請知道的朋友指教一下...感謝...
________________________________________
wolfg 回復於:2005-09-15 14:48:07
引用:原帖由 "baalchina" 發表:
我看了這里的vsftp的配置,我這樣的目的好像用虛擬用戶是最好了。但是我不大清楚,這個虛擬用戶,是不是說我如果有10個ftp帳號,就要有10個虛擬用戶?然後給每個虛擬用戶指定目錄?如果是這樣的話,那我就要
useradd10個用戶咯?
這個ftp用戶的主目錄是怎麼定的呢?是在useadd的時候指定的目錄么?
1. 如果有10個ftp帳號,就要有10個虛擬用戶?
正確
2. 給每個虛擬用戶指定目錄?

3. 如果是這樣的話,那我就要useradd10個用戶咯?
不需要。所有的虛擬用戶都映射到guest_username指定的系統用戶上。所以,只需useradd一次,即添加一個用戶用作guest_user
配置文件中的相關選項
guest_enable=YES
guest_username=yourguestuser
4. 這個ftp用戶的主目錄是怎麼定的呢?是在useadd的時候指定的目錄么?
默認情況下,所有虛擬用戶的主目錄都是guest用戶的主目錄。但可以設置每個虛擬用戶一個目錄:
user_config_dir=/etc/vsftpd_user_config
/etc/vsftpd_user_config目錄是分別存放每個虛擬用戶特殊配置文件的地方,每個用戶一個配置文件,配置文件的名字與虛擬用戶名相同
配置文件中的選項的值將會覆蓋總的配置文件vsftpd.conf中的值
為每個用戶指定用戶主目錄
local_root=/home/virtual/userdir
也可在vsftpd.conf中設置
user_sub_token=$USER
那麼每個虛擬用戶的配置文件中設置local_root
local_root=/home/virtual/$USER
$USER就是虛擬用戶的用戶名,即每個虛擬用戶的主目錄是/home/virtual下的與自己用戶名同名的目錄

H. 求,在linux 中,搭建ftp伺服器的方法, 謝謝,

FTP不安全,萬不得已情況下,才可使用。
vsftp安全性相對較好
可採用sftp代替FTP
Linux另外常用的FTP:
proftp
vsftp
pureftp

下面以VSFTP為例:

安裝方式一:源碼包安裝
useradd -s /bin/false -d /var/ftp ftpvirtual
cd ......
make
make install
cp vsftpd.conf /etc
/usr/local/sbin/vsftpd & #啟動

安裝方式二:rpm安裝,推薦
rpm -ivh vsftpd-2.0.1-5.i386.rpm
或者 yum install vsftpd
/etc/init.d/vsftpd start

兩種方式安裝完成後,配置方法都一樣,下面開始講配置。

首先講主配置文件常見配置
vi /etc/vsftpd/vsftpd.conf

anonymous_enable=NO #禁止匿名登錄
local_enable=NO #禁止本地用戶登錄
write_enable=YES #對本地用戶的寫許可權
local_umask=022 #本地用戶文件生成掩碼
dirmessage_enable=YES #顯示隱藏文件
xferlog_enable=YES #啟用上傳和下載日誌
connect_from_port_20=YES #伺服器將啟用FTP數據埠的連接請求
xferlog_std_format=YES #伺服器將使用標準的ftpd xferlog日誌格式
pam_service_name=vsftpd #設置PAM認證服務的配置文件名稱
userlist_enable=YES #設置文件中指定的用戶是否可以訪問vsftpd伺服器
listen=YES #FTP伺服器將處於獨立啟動模式
tcp_wrappers=YES #使用tcp_wrappers作為主機訪問控制方式
chroot_local_user=YES #將FTP本地用戶禁錮在宿主目錄中
chroot_list_enable=YES #將用戶禁錮在宿主目錄中
listen_address=192.168.0.2 #偵聽地址

pasv_enable=YES #是否允使用被動模式,默認是允許的。
pasv_min_port=10000 #指定使用被動模式時打開埠的最小值
pasv_max_port=10004 #指定使用被動模式時打開埠的最大值。

max_clients=100 #設置FTP伺服器所允許的最大客戶端連接數,值為0時表示不限制
max_per_ip=5 #同一IP地址允許的最大客戶端連接數,值為0時表示不限制,即線程
local_max_rate=500000 #設置本地用戶的最大傳輸速率,單位為bytes/sec,值為0時表示不限制
anon_max_rate=200000 #設置匿名用戶的最大傳輸速率,單位為bytes/sec,值為0表示不限制

use_localtime=YES #在vsftp之中的時間默認值是顯式GMT時間,因此我們會發現上面的時間與我們時寄存取的時間差八小時。改了這一項就好了。
listen_port=10021 改埠

one_process_model=NO yes可增加性能,增加負載,便降低安全,建議NO
nopriv_user=nobody 默認以nobody運行vsftp

對外服務,建議使用stand alone方式啟動,性能好。
僅內部人員,建議用super daemon啟動,修改如下:
listen=NO
……略

vsftp默認使用GMT時間,建議修改如下:
use_localtime=YES

/etc/vsftpd.ftpusers #保存不允許進行FTP登錄的本地用戶帳號,提高系統的安全性

/etc/vsftpd.user_list
#禁止vsftpd.user_list中的用戶
userlist_enable=YES
userlist_deny=YES
#僅允許vsftpd.user_list中的用戶
userlist_enable=YES
userlist_deny=NO

日誌:
vsftpd_log_file=/var/log/vsftpd.log

下面開始講vsftp四種「用戶認證」的方式

一、匿名用戶 ftp anonymous
/var/ftp 默認主目錄
在/etc/vsftpd/vsftpd.conf中:
anonymous_enable=YES
anon_upload_enable=YES
anon_other_write_enable=YES #可刪除
chmod -R 777 /var/ftp/pub/
修改/var/ftp/pub的SELinux許可權
執行以下命令,修改/var/ftp/pub這目錄的類型:
chcon -R -t ftpd_anon_rw_t /var/ftp/pub/
anon_root=/var/www/html/ftp #改匿名用戶的宿主目錄

二、本地用戶
默認支持,使用各自的宿主目錄。不安全
local_root=/opt #新增這一項,改成其他路徑

三、虛擬用戶 PAM文件方式 推薦

建立虛擬用戶口令庫文件
# cat logins.txt
mike
pwabcd
john
pw1234
生成vsftpd的認證文件
db_load -T -t hash -f logins /etc/vsftpd/vsftpd_login.db
chmod 600 /etc/vsftpd/vsftpd_login.db
新創建虛擬用戶所需的PAM配置文件
cat /etc/pam.d/vsftpd.vu
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
新創建虛擬用戶的系統用戶所要訪問的目錄並設置相應許可權
# useradd -s /bin/false -d /home/ftpsite ftpvirtual
# chmod 700 /home/ftpsite
#設置vsftpd.conf配置文件,支持虛擬用戶
guest_enable=YES
guest_username=ftpvirtual
pam_service_name=vsftpd.vu
user_config_dir=/etc/vsftpd/vsftpd_user_conf #添加用戶配置文件目錄設置

/etc/vsftpd/vsftpd_user_conf/mike (同名),這里沒有的設置默認按vsftpd.conf的設置執行

anon_world_readable_only=NO #可以瀏覽FTP目錄和下載文件
anon_upload_enable=YES #用戶可以上傳文件,等同於 write_enable=yes 允許上傳
anon_mkdir_write_enable=YES #具有建立和刪除目錄的權利
anon_other_write_enable=YES #具有文件改名和刪除文件的許可權
local_root=/data/userspace #設置虛擬用戶登錄後的主目錄
anon_max_rate=1024000 #以Bytes/s為單位,這里限8Mbit,范圍大概在80%到120%之間

四、虛擬用戶 mysql認證方式 推薦
1. mysql安裝見mysql筆記
2.1 openssl-0.9.8e 源程序預編譯時在日誌中可能出現md5.h "Present But Cannot Be Compiled的錯誤,卸載下面某些包可能解決問題。
cyrus-sals-sql cyrus-sasl-ntlm cyrus-sasl-gssapi cyrus-sasl-devel openldap-devel
然後移除系統可能自帶的:
mv /usr/bin/openssl /usr/bin/openssl.OFF
mv /usr/include/openssl /usr/include/openssl.OFF
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/ssl/include/openssl /usr/include/openssl
配置庫文件搜索路徑
#echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
#ldconfig -v

2.2 或者安裝openssl-0.9.8e的rpm包
3. pam_mysql-0.7RC1.tar.gz
#./configure --with-mysql=/usr/local/mysql --with-openssl=/usr/local/ssl
如果mysql是rpm安裝的,則不帶--with-mysql參數,如果openssl是rpm安裝的,參數為--with-openssl
make;make install
注意pam_mysql.so路徑,可能在/usr/lib/security/pam_mysql.so或/lib/security/pam_mysql.so

vi /etc/pam.d/vsftp.mysql #新建,僅兩行
auth required /lib/security/pam_mysql.so user=vsftpd passwd=123456 host=localhost db=vsftp table=users usercolumn=name passwdcolumn=passwd crypt=2
account required /lib/security/pam_mysql.so user=vsftpd passwd=123456 host=localhost db=vsftp table=users usercolumn=name passwdcolumn=passwd crypt=2

4.0 准備資料庫、表和數據
mysql> create database vsftp;
mysql> grant select on vsftp.* to vsftpd@localhost identified by '123456';
mysql> grant select on vsftp.* to [email protected] identified by '123456';
mysql> use vsftp;
mysql> create table users (
-> id int AUTO_INCREMENT NOT NULL,
-> name char(20) binary NOT NULL,
-> passwd char(48) binary NOT NULL,
-> primary key(id)
-> );
mysql> insert into users(name,passwd) values('hlc',password('hlc'));
mysql> insert into users(name,passwd) values('holly',password('holly'));

5.0 修改主配置文件
vi /etc/vsftpd/vsftpd.conf
guest_enable=YES
guest_username=vsftp
listen=YES
pam_service_name=vsftpd.mysql

以上完成了vsftp的配置,下面是補充:

dirmessage_enable=YES #設置歡迎語 在每個目錄下建立.message,寫入歡迎語即可。

db_load支持包(前面三個即可):
db4
db4-devel
db4-utils
db4-java
db4-tcl

Linux建議關閉selinux或征對FTP不做任何安全
setsebool -P -ftpd_disable_trans on
setsebool -P -allow_ftpd_full_access on
servie vsftpd restart
或者需要重啟伺服器

底下列出FTP訪問中所出現數字代碼的含意。
110 重新啟動標記應答。
120 服務在多久時間內ready。
125 數據鏈路埠開啟,准備傳送。
150 文件狀態正常,開啟數據埠。
200 命令執行成功。
202 命令執行失敗。
211 系統狀態或是系統求助響應。
212 目錄的狀態。
213 文件的狀態。
214 求助的訊息。
215 名稱系統類型。
220 新的聯機服務ready。
221 服務的控制埠關閉,可以注銷。
225 數據鏈接開啟,但無傳輸動作。
226 關閉數據埠,請求的文件操作成功。
227 進入passive mode。
230 用戶登錄。
250 請求的文件操作完成。
257 顯示目前的路徑名稱。
331 用戶名稱正確,需要密碼。
332 登入時需要帳戶信息。
350 請求的操作需要進一部的命令。
421 無法提供服務,關閉控制連結。
425 無法開啟數據鏈路。
426 關閉聯機,終止傳輸。
450 請求的操作未執行。
451 命令終止:有本地的錯誤。
452 未執行命令:磁碟空間不足。
500 格式錯誤,無法識別命令。
501 參數語法錯誤。
502 命令執行失敗。
503 命令順序錯誤。
504 命令所接的參數不正確。
530 未登入。
532 儲存文件需要賬戶登入。
550 未執行請求的操作。
551 請求的命令終止,類型未知。
552 請求的文件終止,儲存位溢出。
553 未執行請求的的命令,名稱不正確。