VSFTPD配置(匿名——本地用戶——虛擬用戶)
更新時(shí)間:2011年05月02日 13:50:44 作者:
VSFTPD配置(匿名——本地用戶——虛擬用戶),需要的朋友可以參考下。
1,下載VSFTPD.TAR.GZ
程序下載地址:ftp://vsftpd.beasts.org/users/cevans/
2,檢查和建立相應(yīng)賬戶和目錄
1,nobody用戶
[root@main vsftpd-2.1.0]# cat /etc/passwd |grep nobody
nobody:x:99:99:Nobody:/:/sbin/nologin
如不存在請(qǐng)建立相關(guān)賬戶。
2,/usr/share/empty 目錄, 如不存在請(qǐng)創(chuàng)建
3,如允許匿名訪問(wèn),需創(chuàng)建Ftp用戶,家目錄為/var/ftp(一般ftp用戶存在而家目錄不存在)
[root@main vsftpd-2.1.0]# mkdir /var/ftp/
[root@main vsftpd-2.1.0]# chown root.root /var/ftp
[root@main vsftpd-2.1.0]# chmod 755 /var/ftp
3,解壓、編譯、安裝程序(其實(shí)vsftpd用rpm和用源碼安裝差不多,編譯安裝反而不方便,推薦各位RPM安裝,呵呵)
[root@main ~]# tar xzfv vsftpd-2.1.0.tar.gz
[root@main ~]# cd vsftpd-2.1.0
[root@main vsftpd-2.1.0]# make && make install
4,復(fù)制相關(guān)文件
如果是用RPM安裝,可能會(huì)和源碼安裝的文件路徑略有不同,如/etc/vsftpd.conf變成了/etc/vsftpd/vsftpd.conf,這類(lèi)變動(dòng)請(qǐng)自行 find相關(guān)文件。
主配置文件
[root@main vsftpd-2.1.0]# cp vsftpd.conf /etc/vsftpd.conf
PAM身份驗(yàn)證用文件
[root@main vsftpd-2.1.0]# cp RedHat/vsftpd.pam /etc/pam.d/ftp
5,配置vsftpd.conf
啟用/禁止匿名用戶訪問(wèn)。
anonymous_enable=YES/NO
允許本地用戶登錄并允許其上傳文件。
local_enable=YES
write_enable=YES
將本地用戶鎖定在主目錄中,不允許切換到上一級(jí)目錄中
chroot_local_user=YES
匿名和本地用戶限速(單位byte)
anon_max_rate=數(shù)字
local_max_rate=數(shù)字
禁止某些用戶通過(guò)ftp登錄服務(wù)器。如果設(shè)置了local_enable=YES,那么所有的用戶包括root也能通過(guò)ftp登錄服務(wù)器,出于安全考慮,需要對(duì)某些用戶進(jìn)行限制。在vsftpd.conf中有三個(gè)選項(xiàng)控制:
userlist_deny=YES/NO
userlist_enalbe=YES
userlist_file=/etc/vsftpd.user_list
如果userlist_deny=YES,/etc/vsftpd.user_list中列出的用戶名就不允許登錄ftp服務(wù)器;如果userlist_deny=NO,/etc/vsftpd.user_list中列出的用戶名允許登錄ftp服務(wù)器。我們只要在/etc目錄下創(chuàng)建vsftpd.user_list文件,文件內(nèi)容為允許登錄或禁止登錄的用戶名,每個(gè)用戶一行。
禁止用戶通過(guò)FTP修改文件或文件夾的權(quán)限。
chmod_enable=NO(
設(shè)置本地用戶上傳的文件或文件夾的umask值(默認(rèn)為077)
local_umask=022
最多同時(shí)允許100個(gè)客戶連接
max_clients=100
每個(gè)ip地址最多允許開(kāi)3個(gè)線程
max_per_ip=3
只監(jiān)聽(tīng)來(lái)訪問(wèn)192.168.0.2(適用本機(jī)多網(wǎng)卡、多IP的情況)的FTP服務(wù)請(qǐng)求
listen_address=192.168.0.2
6,安裝完成后使用vsftpd命令即可啟動(dòng)vsftpd服務(wù)。保證防火墻開(kāi)放相關(guān)端口后嘗試下匿名登陸吧,注意所有匿名用戶都登錄到相同的目錄中/var/ftp。
我們可以通過(guò)pgrep vsftpd 來(lái)查看vsftpd是否運(yùn)行起來(lái),可以用pkill vsftpd 來(lái)殺死vsftpd進(jìn)程,把vsFTPd關(guān)閉。所以上文說(shuō)更推薦用rpm安裝,那樣就可以用service vsftpd start|stop|restart來(lái)控制了。
[root@main ~]# pgrep vsftpd
2745
[root@main ~]# pkill vsftpd
7,設(shè)置pub目錄,允許匿名用戶上傳、下載文件。
更改配置文件,確保有這幾項(xiàng):
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_umask=022
新建文件夾,并更改權(quán)限。
[root@main ~]# mkdir /var/ftp/pub
[root@main ~]# chmod 777 /var/ftp/pub
嘗試一下匿名上傳下載吧,應(yīng)該沒(méi)問(wèn)題。
8,設(shè)置使用本地用戶登陸FTP服務(wù)器,并進(jìn)行權(quán)限設(shè)置。
添加一個(gè)只能從ftp登錄服務(wù)器,而不能從本地shell登錄的用戶。以下創(chuàng)建一個(gè)用戶ftpuser,不允許從本地登錄
[root@localhost root]# useradd -g ftp -s /sbin/nologin ftpuser
創(chuàng)建賬戶和密碼后改一下配置文件vsftpd.conf ,以確保本地虛擬用戶能有讀寫(xiě)權(quán)限:
local_enable=YES
write_enable=YES
local_umask=022
嘗試用本地用戶上傳和下載文件。(PS,我不知道為什么我無(wú)法進(jìn)行上傳下載操作,但我重啟系統(tǒng)后可以應(yīng)用了)
還可以用userlist_deny=YES/NO
userlist_enalbe=YES
userlist_file=/etc/vsftpd.user_list
這些選項(xiàng)對(duì)用戶進(jìn)行控制。
9,嘗試使用虛擬用戶訪問(wèn)FTP服務(wù)。
創(chuàng)建一個(gè)口令源文件,文件格式是第一行用戶名、第二行密碼、第三行用戶名、第四行密碼……
[root@main ~]# cat temp_pass.txt
caocao
caomengde
xiaocaocao
xiaocaomengde
使用db_load命令生成認(rèn)證文件。我遇到的情況就是本機(jī)沒(méi)有db_load這個(gè)命令,網(wǎng)上搜到的答案是缺少DB4的rpm包,應(yīng)該是把光盤(pán)中DB4開(kāi)頭的rpm包都裝全,我嫌麻煩,采用的yum -y install db4*,裝了以后就有db_load命令了。
[root@main ~]# db_load -T -t hash -f temp_pass.txt /etc/vuser.db
設(shè)置db文件的權(quán)限,同時(shí)刪除口令文件。
[root@main ~]# chmod 600 /etc/vuser.db
[root@main ~]# rm temp_pass.txt
建立虛擬用戶所需的PAM配置文件
[root@main ~]# vi /etc/pam.d/ftpuser.vu
#添加如下內(nèi)容
auth required /lib/security/pam_userdb.so db=/etc/vuser
account required /lib/security/pam_userdb.so db=/etc/vuser
添加新用戶,可以考慮設(shè)置該用戶nologin
[root@main home]# useradd vuserftp
修改vsftpd.conf配置文件,有則改,無(wú)則添加。
guest_enable=YES
guest_username=vuserftp
pam_service_name=ftpuser.vu
重啟一下,現(xiàn)在訪問(wèn)ftp://caocao@ftp是否可以用caomengde做密碼訪問(wèn)?如果期間有小問(wèn)題,可以考慮以下目錄權(quán)限問(wèn)題。
10,嘗試給虛擬用戶分配權(quán)限
修改VSFTPD的配置文件,有則改,無(wú)則加。創(chuàng)建并進(jìn)入這個(gè)文件夾。
user_config_dir=/etc/vuserftp/
[root@main vuserftp]# mkdir /etc/vuserftp/
[root@main vuserftp]# cd /etc/vuserftp/
創(chuàng)建虛擬用戶權(quán)限的配置文件
[root@main vuserftp]# vi caocao
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/home/vuserftp/caocao
創(chuàng)建虛擬用戶的目錄,并配置權(quán)限。
[root@localhost ~]# mkdir /home/vuserftp/caocao
[root@localhost ~]# chown vuserftp /home/vuserftp/caocao/
11,我又照著這個(gè)教程復(fù)核了一下虛用戶登錄FTP的相關(guān)過(guò)程。show 相關(guān)配置文件和權(quán)限,因僅僅是實(shí)驗(yàn)用的,所以配置比較粗糙。大家可以自己優(yōu)化和精簡(jiǎn)。
[root@localhost ~]# ll /home/vuserftp/
total 4
drwxr-xr-x 2 root root 4096 Mar 30 09:47 caocao
[root@localhost ~]# grep -v '#' /etc/vsftpd.conf
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
listen=YES
guest_enable=YES
guest_username=vuserftp
pam_service_name=ftpuser.vu
user_config_dir=/etc/vuserftp/
[root@localhost ~]# rpm -qa |grep db4-
db4-java-4.3.29-9.fc6
db4-devel-4.3.29-9.fc6
db4-tcl-4.3.29-9.fc6
db4-4.3.29-9.fc6
db4-utils-4.3.29-9.fc6
[root@localhost ~]# cat /etc/passwd |grep vuserftp
vuserftp:x:500:500::/home/vuserftp:/bin/bash(可以改成nologin)
[root@localhost ~]# cat /etc/pam.d/ftpuser.vu
auth required /lib/security/pam_userdb.so db=/etc/vuser
account required /lib/security/pam_userdb.so db=/etc/vuser
程序下載地址:ftp://vsftpd.beasts.org/users/cevans/
2,檢查和建立相應(yīng)賬戶和目錄
1,nobody用戶
[root@main vsftpd-2.1.0]# cat /etc/passwd |grep nobody
nobody:x:99:99:Nobody:/:/sbin/nologin
如不存在請(qǐng)建立相關(guān)賬戶。
2,/usr/share/empty 目錄, 如不存在請(qǐng)創(chuàng)建
3,如允許匿名訪問(wèn),需創(chuàng)建Ftp用戶,家目錄為/var/ftp(一般ftp用戶存在而家目錄不存在)
[root@main vsftpd-2.1.0]# mkdir /var/ftp/
[root@main vsftpd-2.1.0]# chown root.root /var/ftp
[root@main vsftpd-2.1.0]# chmod 755 /var/ftp
3,解壓、編譯、安裝程序(其實(shí)vsftpd用rpm和用源碼安裝差不多,編譯安裝反而不方便,推薦各位RPM安裝,呵呵)
[root@main ~]# tar xzfv vsftpd-2.1.0.tar.gz
[root@main ~]# cd vsftpd-2.1.0
[root@main vsftpd-2.1.0]# make && make install
4,復(fù)制相關(guān)文件
如果是用RPM安裝,可能會(huì)和源碼安裝的文件路徑略有不同,如/etc/vsftpd.conf變成了/etc/vsftpd/vsftpd.conf,這類(lèi)變動(dòng)請(qǐng)自行 find相關(guān)文件。
主配置文件
[root@main vsftpd-2.1.0]# cp vsftpd.conf /etc/vsftpd.conf
PAM身份驗(yàn)證用文件
[root@main vsftpd-2.1.0]# cp RedHat/vsftpd.pam /etc/pam.d/ftp
5,配置vsftpd.conf
啟用/禁止匿名用戶訪問(wèn)。
anonymous_enable=YES/NO
允許本地用戶登錄并允許其上傳文件。
local_enable=YES
write_enable=YES
將本地用戶鎖定在主目錄中,不允許切換到上一級(jí)目錄中
chroot_local_user=YES
匿名和本地用戶限速(單位byte)
anon_max_rate=數(shù)字
local_max_rate=數(shù)字
禁止某些用戶通過(guò)ftp登錄服務(wù)器。如果設(shè)置了local_enable=YES,那么所有的用戶包括root也能通過(guò)ftp登錄服務(wù)器,出于安全考慮,需要對(duì)某些用戶進(jìn)行限制。在vsftpd.conf中有三個(gè)選項(xiàng)控制:
userlist_deny=YES/NO
userlist_enalbe=YES
userlist_file=/etc/vsftpd.user_list
如果userlist_deny=YES,/etc/vsftpd.user_list中列出的用戶名就不允許登錄ftp服務(wù)器;如果userlist_deny=NO,/etc/vsftpd.user_list中列出的用戶名允許登錄ftp服務(wù)器。我們只要在/etc目錄下創(chuàng)建vsftpd.user_list文件,文件內(nèi)容為允許登錄或禁止登錄的用戶名,每個(gè)用戶一行。
禁止用戶通過(guò)FTP修改文件或文件夾的權(quán)限。
chmod_enable=NO(
設(shè)置本地用戶上傳的文件或文件夾的umask值(默認(rèn)為077)
local_umask=022
最多同時(shí)允許100個(gè)客戶連接
max_clients=100
每個(gè)ip地址最多允許開(kāi)3個(gè)線程
max_per_ip=3
只監(jiān)聽(tīng)來(lái)訪問(wèn)192.168.0.2(適用本機(jī)多網(wǎng)卡、多IP的情況)的FTP服務(wù)請(qǐng)求
listen_address=192.168.0.2
6,安裝完成后使用vsftpd命令即可啟動(dòng)vsftpd服務(wù)。保證防火墻開(kāi)放相關(guān)端口后嘗試下匿名登陸吧,注意所有匿名用戶都登錄到相同的目錄中/var/ftp。
我們可以通過(guò)pgrep vsftpd 來(lái)查看vsftpd是否運(yùn)行起來(lái),可以用pkill vsftpd 來(lái)殺死vsftpd進(jìn)程,把vsFTPd關(guān)閉。所以上文說(shuō)更推薦用rpm安裝,那樣就可以用service vsftpd start|stop|restart來(lái)控制了。
[root@main ~]# pgrep vsftpd
2745
[root@main ~]# pkill vsftpd
7,設(shè)置pub目錄,允許匿名用戶上傳、下載文件。
更改配置文件,確保有這幾項(xiàng):
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_umask=022
新建文件夾,并更改權(quán)限。
[root@main ~]# mkdir /var/ftp/pub
[root@main ~]# chmod 777 /var/ftp/pub
嘗試一下匿名上傳下載吧,應(yīng)該沒(méi)問(wèn)題。
8,設(shè)置使用本地用戶登陸FTP服務(wù)器,并進(jìn)行權(quán)限設(shè)置。
添加一個(gè)只能從ftp登錄服務(wù)器,而不能從本地shell登錄的用戶。以下創(chuàng)建一個(gè)用戶ftpuser,不允許從本地登錄
[root@localhost root]# useradd -g ftp -s /sbin/nologin ftpuser
創(chuàng)建賬戶和密碼后改一下配置文件vsftpd.conf ,以確保本地虛擬用戶能有讀寫(xiě)權(quán)限:
local_enable=YES
write_enable=YES
local_umask=022
嘗試用本地用戶上傳和下載文件。(PS,我不知道為什么我無(wú)法進(jìn)行上傳下載操作,但我重啟系統(tǒng)后可以應(yīng)用了)
還可以用userlist_deny=YES/NO
userlist_enalbe=YES
userlist_file=/etc/vsftpd.user_list
這些選項(xiàng)對(duì)用戶進(jìn)行控制。
9,嘗試使用虛擬用戶訪問(wèn)FTP服務(wù)。
創(chuàng)建一個(gè)口令源文件,文件格式是第一行用戶名、第二行密碼、第三行用戶名、第四行密碼……
[root@main ~]# cat temp_pass.txt
caocao
caomengde
xiaocaocao
xiaocaomengde
使用db_load命令生成認(rèn)證文件。我遇到的情況就是本機(jī)沒(méi)有db_load這個(gè)命令,網(wǎng)上搜到的答案是缺少DB4的rpm包,應(yīng)該是把光盤(pán)中DB4開(kāi)頭的rpm包都裝全,我嫌麻煩,采用的yum -y install db4*,裝了以后就有db_load命令了。
[root@main ~]# db_load -T -t hash -f temp_pass.txt /etc/vuser.db
設(shè)置db文件的權(quán)限,同時(shí)刪除口令文件。
[root@main ~]# chmod 600 /etc/vuser.db
[root@main ~]# rm temp_pass.txt
建立虛擬用戶所需的PAM配置文件
[root@main ~]# vi /etc/pam.d/ftpuser.vu
#添加如下內(nèi)容
auth required /lib/security/pam_userdb.so db=/etc/vuser
account required /lib/security/pam_userdb.so db=/etc/vuser
添加新用戶,可以考慮設(shè)置該用戶nologin
[root@main home]# useradd vuserftp
修改vsftpd.conf配置文件,有則改,無(wú)則添加。
guest_enable=YES
guest_username=vuserftp
pam_service_name=ftpuser.vu
重啟一下,現(xiàn)在訪問(wèn)ftp://caocao@ftp是否可以用caomengde做密碼訪問(wèn)?如果期間有小問(wèn)題,可以考慮以下目錄權(quán)限問(wèn)題。
10,嘗試給虛擬用戶分配權(quán)限
修改VSFTPD的配置文件,有則改,無(wú)則加。創(chuàng)建并進(jìn)入這個(gè)文件夾。
user_config_dir=/etc/vuserftp/
[root@main vuserftp]# mkdir /etc/vuserftp/
[root@main vuserftp]# cd /etc/vuserftp/
創(chuàng)建虛擬用戶權(quán)限的配置文件
[root@main vuserftp]# vi caocao
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/home/vuserftp/caocao
創(chuàng)建虛擬用戶的目錄,并配置權(quán)限。
[root@localhost ~]# mkdir /home/vuserftp/caocao
[root@localhost ~]# chown vuserftp /home/vuserftp/caocao/
11,我又照著這個(gè)教程復(fù)核了一下虛用戶登錄FTP的相關(guān)過(guò)程。show 相關(guān)配置文件和權(quán)限,因僅僅是實(shí)驗(yàn)用的,所以配置比較粗糙。大家可以自己優(yōu)化和精簡(jiǎn)。
[root@localhost ~]# ll /home/vuserftp/
total 4
drwxr-xr-x 2 root root 4096 Mar 30 09:47 caocao
[root@localhost ~]# grep -v '#' /etc/vsftpd.conf
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
listen=YES
guest_enable=YES
guest_username=vuserftp
pam_service_name=ftpuser.vu
user_config_dir=/etc/vuserftp/
[root@localhost ~]# rpm -qa |grep db4-
db4-java-4.3.29-9.fc6
db4-devel-4.3.29-9.fc6
db4-tcl-4.3.29-9.fc6
db4-4.3.29-9.fc6
db4-utils-4.3.29-9.fc6
[root@localhost ~]# cat /etc/passwd |grep vuserftp
vuserftp:x:500:500::/home/vuserftp:/bin/bash(可以改成nologin)
[root@localhost ~]# cat /etc/pam.d/ftpuser.vu
auth required /lib/security/pam_userdb.so db=/etc/vuser
account required /lib/security/pam_userdb.so db=/etc/vuser
相關(guān)文章
Windows?Server?2012下FTP服務(wù)器站點(diǎn)搭建程序
這篇文章主要為大家詳細(xì)介紹了Windows?Server?2012下FTP服務(wù)器站點(diǎn)搭建程序,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08
FTP服務(wù)器的防火墻通用設(shè)置規(guī)則介紹
此FTP服務(wù)器的防火墻通用設(shè)置規(guī)則適用于Windows、Linux服務(wù)器以及可能的其他操作系統(tǒng),設(shè)置步驟如下,感興趣的朋友可以參考下哈2013-06-06
filezilla Failed to create listen socket on port 21 for IPv4
今天幫一個(gè)客戶配置filezilla的時(shí)候,提示filezilla Failed to create listen socket on port 21 for IPv4,原來(lái)是因?yàn)?1端口被占用了,換個(gè)端口就可以了2013-09-09
Ftp無(wú)法連接到服務(wù)器的常見(jiàn)問(wèn)題及解決方法分享
這篇文章主要給大家介紹了Ftp無(wú)法連接到服務(wù)器的解決辦法,以及常見(jiàn)的ftp錯(cuò)誤問(wèn)題及解決辦法分享,具有一定的參考價(jià)值,有感興趣的小伙伴可以參考閱讀下2023-08-08

