CentOS系統下安裝FTP服務vsftpd指令碼

來源:互聯網
上載者:User

安裝配置vsftpd

#查看是否已安裝
rpm -q vsftpd
#yum安裝vsftpd
yum install vsftpd

#允許root登入
vi /etc/vsftpd/user_list
vi /etc/vsftpd/ftpusers
#屏蔽掉 root
#root
#SElinux如果開啟的話:
setsebool -P ftpd_disable_trans=1
#建立使用者[只用於FTP不能登入系統]
adduser -d /home/www.111cn.net -g ftp -s /sbin/nologin tianya
#設定密碼:
passwd tianya

#限制禁止切換到上級目錄
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
#添加使用者[檔案不存在則建立]
vi /etc/vsftpd/chroot_list
tianya
#如果chkconfig不存在vsftpd則先添加
chkconfig --add mysqld
#設定vsftpd開機啟動
chkconfig vsftpd on

附一VSFTPD配置 匿名——本機使用者——虛擬使用者

1,下載VSFTPD.TAR.GZ
程式下載地址:ftp://vsftpd.beasts.org/users/cevans/
2,檢查和建立相應賬戶和目錄
1,nobody使用者
[root@main vsftpd-2.1.0]# cat /etc/passwd |grep nobody
nobody:x:99:99:Nobody:/:/sbin/nologin
如不存在請建立相關賬戶。
2,/usr/share/empty 目錄, 如不存在請建立
3,如允許匿名訪問,需建立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,解壓、編譯、安裝程式(其實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,複製相關檔案
如果是用RPM安裝,可能會和源碼安裝的檔案路徑略有不同,如/etc/vsftpd.conf變成了/etc/vsftpd/vsftpd.conf,這類變動請自行 find相關檔案。
主設定檔
[root@main vsftpd-2.1.0]# cp vsftpd.conf /etc/vsftpd.conf
PAM身分識別驗證用檔案
[root@main vsftpd-2.1.0]# cp RedHat/vsftpd.pam /etc/pam.d/ftp
5,配置vsftpd.conf
啟用/禁止匿名使用者存取。
anonymous_enable=YES/NO
允許本機使用者登入並允許其上傳檔案。
local_enable=YES
write_enable=YES
將本機使用者鎖定在主目錄中,不允許切換到上一級目錄中
chroot_local_user=YES
匿名和本機使用者限速(單位byte)
anon_max_rate=數字
local_max_rate=數字
禁止某些使用者通過ftp登入伺服器。如果設定了local_enable=YES,那麼所有的使用者包括root也能通過ftp登入伺服器,出於安全考慮,需要對某些使用者進行限制。在vsftpd.conf中有三個選項控制:
userlist_deny=YES/NO
userlist_enalbe=YES
userlist_file=/etc/vsftpd.user_list
如果userlist_deny=YES,/etc/vsftpd.user_list中列出的使用者名稱就不允許登入ftp伺服器;如果userlist_deny=NO,/etc/vsftpd.user_list中列出的使用者名稱允許登入ftp伺服器。我們只要在/etc目錄下建立vsftpd.user_list檔案,檔案內容為允許登入或禁止登入的使用者名稱,每個使用者一行。
禁止使用者通過FTP修改檔案或檔案夾的許可權。
chmod_enable=NO(
設定本機使用者上傳的檔案或檔案夾的umask值(預設為077)
local_umask=022
最多同時允許100個客戶串連
max_clients=100
每個ip地址最多允許開3個線程
max_per_ip=3
只監聽來訪問192.168.0.2(適用本機多網卡、多IP的情況)的FTP服務要求
listen_address=192.168.0.2
6,安裝完成後使用vsftpd命令即可啟動vsftpd服務。保證防火牆開放相關連接埠後嘗試下匿名登陸吧,注意所有匿名使用者都登入到相同的目錄中/var/ftp。
我們可以通過pgrep vsftpd 來查看vsftpd是否運行起來,可以用pkill vsftpd 來殺死vsftpd進程,把vsFTPd關閉。所以上文說更推薦用rpm安裝,那樣就可以用service vsftpd start|stop|restart來控制了。
[root@main ~]# pgrep vsftpd
2745
[root@main ~]# pkill vsftpd
7,設定pub目錄,允許匿名使用者上傳、下載檔案。
更改設定檔,確保有這幾項:
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_umask=022
建立檔案夾,並更改許可權。
[root@main ~]# mkdir /var/ftp/pub
[root@main ~]# chmod 777 /var/ftp/pub
嘗試一下匿名上傳下載吧,應該沒問題。
8,設定使用本機使用者登陸FTP伺服器,並進行使用權限設定。
添加一個只能從ftp登入伺服器,而不能從本地shell登入的使用者。以下建立一個使用者ftpuser,不允許從本地登入
[root@localhost root]# useradd -g ftp -s /sbin/nologin ftpuser
建立賬戶和密碼後改一下設定檔vsftpd.conf ,以確保本地虛擬使用者能有讀寫權限:
local_enable=YES
write_enable=YES
local_umask=022
嘗試用本機使用者上傳和下載檔案。(PS,我不知道為什麼我無法進行上傳下載操作,但我重啟系統後可以應用了)
還可以用userlist_deny=YES/NO
userlist_enalbe=YES
userlist_file=/etc/vsftpd.user_list
這些選項對使用者進行控制。
9,嘗試使用虛擬使用者訪問FTP服務。
建立一個口令源檔案,檔案格式是第一行使用者名稱、第二行密碼、第三行使用者名稱、第四行密碼……
[root@main ~]# cat temp_pass.txt
caocao
caomengde
xiaocaocao
xiaocaomengde
使用db_load命令產生認證檔案。我遇到的情況就是本機沒有db_load這個命令,網上搜到的答案是缺少DB4的rpm包,應該是把光碟片中DB4開頭的rpm包都裝全,我嫌麻煩,採用的yum -y install db4*,裝了以後就有db_load命令了。
[root@main ~]# db_load -T -t hash -f temp_pass.txt /etc/vuser.db
設定db檔案的許可權,同時刪除口令檔案。
[root@main ~]# chmod 600 /etc/vuser.db
[root@main ~]# rm temp_pass.txt
建立虛擬使用者所需的PAM設定檔
[root@main ~]# vi /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
添加新使用者,可以考慮設定該使用者nologin
[root@main home]# useradd vuserftp
修改vsftpd.conf設定檔,有則改,無則添加。
guest_enable=YES
guest_username=vuserftp
pam_service_name=ftpuser.vu
重啟一下,現在訪問ftp://caocao@ftp是否可以用caomengde做密碼訪問?如果期間有小問題,可以考慮以下目錄許可權問題。
10,嘗試給虛擬使用者指派許可權
修改VSFTPD的設定檔,有則改,無則加。建立並進入這個檔案夾。
user_config_dir=/etc/vuserftp/
[root@main vuserftp]# mkdir /etc/vuserftp/
[root@main vuserftp]# cd /etc/vuserftp/
建立虛擬使用者權限的設定檔
[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
建立虛擬使用者的目錄,並配置許可權。
[root@localhost ~]# mkdir /home/vuserftp/caocao
[root@localhost ~]# chown vuserftp /home/vuserftp/caocao/
11,我又照著這個教程複核了一下虛使用者登入FTP的相關過程。show 相關設定檔和許可權,因僅僅是實驗用的,所以配置比較粗糙。大家可以自己最佳化和精簡。
[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

vsftpd的設定檔/etc/vsftpd/vsftpd.conf解析:

anonymous_enable=YES
是否允許匿名使用者存取,匿名使用者存取的時候是被映射為系統的ftp使用者,它的家目錄為/var/ftp,故我們用匿名訪問的時候,訪問的是/var/ftp的目錄(這個目錄的許可權請不要隨意改動,如果改動可能造成無法訪問)。
 
local_enable=YES
是否允許本機使用者登入ftp,登入之後是使用者的家目錄,但uid號小於500的使用者都不允許登入
 
write_enable=YES
本機使用者是否有上傳許可權
 
local_umask=022
本機使用者上傳的檔案的反向掩碼。而f使用者訪問ftp對檔案的實際許可權是:所訪問目錄和這個檔案許可權的交集
 
anon_upload_enable=YES
是否允許匿名使用者上傳檔案
 
anon_mkdir_write_enable=NO
匿名使用者是否有建立目錄的許可權
 
anon_other_write_enable=NO
匿名使用者是否有刪除和重名名檔案的許可權
 
anon_world_readable_only=NO
匿名使用者只能下載全域可讀的檔案,即檔案的屬組,屬主,其他使用者都有讀許可權
 
dirmessage_enable=YES
當使用者切換目錄時,定義的歡迎資訊。可以在家目錄中定義一個.message的檔案
 
xferlog_enable=YES
是否開啟傳輸日誌
 
connect_from_port_20=YES
是否啟用20號連接埠進行資料轉送,這樣會工作在主動模式
 
chown_uploads=YES
chown_username=whoever
當使用者上傳了檔案,是否更改該上傳的檔案屬主,並且屬主更改為哪個使用者
 
xferlog_file=/var/log/xferlog
定義傳輸日誌的位置,預設在/var/log/messages中
 
xferlog_std_format=YES
定義日誌的格式
 
idle_session_timeout=600
會話的逾時時間
 
data_connection_timeout=120
資料連線的逾時時間
 
nopriv_user=ftpsecure
指定一個安全使用者帳號,讓FTP伺服器用作完全隔離和沒有特權的獨立使用者。一般不啟用
 
async_abor_enable=YES
是否允許運行特殊的ftp命令"async ABOR",一般不啟用
 
ascii_upload_enable=YES
ascii_download_enable=YES
以ascii形式傳輸,一般不啟用
 
ftpd_banner=Welcome to blah FTP service.
登入ftp的歡迎資訊
 
deny_email_enable=YES
banned_email_file=/etc/vsftpd/banned_emails
是否要禁止匿名使用者使用某些郵件地址,如果是輸入禁止的郵件地址的路徑和檔案名稱,可防Dos攻擊
 
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
當這個檔案中的使用者登入時,把其使用者的目錄鎖定,不能隨意切換,對保證系統的安全重要。
 
chroot_local_user=YES
把所有登入的使用者都鎖進自己的家目錄,不能隨意切換
 
ls_recurse_enable=YES
當使用者查看ftp伺服器上目錄檔案時,支援遞迴顯示
 
listen=YES
以獨立守護進程工作
 
listen_ipv6=YES
是否啟用ipv6地址上監聽
 
pam_service_name=vsftpd
定義以pam實現ftp使用者認證,根據/etc/pam.d/vsftpd定義進行認證
 
userlist_enable=YES
是否啟用使用者列表,並且只允許/etc/vsftpd/user_list檔案中的使用者登入
 
userlist_deny=YES
啟用使用者列表,禁止此列表/etc/vsftpd/usr_list中定義的使用者登入
 
tcp_wrappers=YES
是否啟用tcp_wrapper對vsftpd的控制
 
六,用tcp_wraper來控制vsftpd:
首先,要確保vsftpd的主設定檔"tcp_wrappers=YES"這一行啟用
 
允許192.168.0網段訪問:
#vim /etc/hosts.allow
添加:
vsftpd:192.168.0.
禁止172.16.30網段訪問:
#vim /etc/hosts.deny
添加:
vsftpd:172.16.30.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.