CentOS6 快速部署FTP(一鍵部署腳本)

1.系統環境

[root@test ~]# cat /etc/redhat-release
CentOS release 6.7 (Final)
[root@test ~]# iostat -c
Linux 2.6.32-573.3.1.el6.x86_64 (ceshiji)   01/05/2018  _x86_64_    (8 CPU)
[root@test ~ ]# getenforce
Disabled

2.安裝vsftp,pam,db4

[root@test ~]# yum install vsftpd pam* db4* -y
#查看ftp版本
vsftpd -version
vsftpd: version 2.2.2

3.開啓vsftp自啓服務

[root@test ~]]# chkconfig --level 35 vsftpd on
[root@test ~]]# chkconfig --list

4.配置vsftpd服務的宿主

#useradd vsftpdadmin -s /sbin/nologin -d /data/vsftpdadmin -m
說明:這個vsftpdadmin只是用來替換root的,並不需要登錄

5.建立ftp虛擬宿主帳

#useradd -s /sbin/nologin -d /data/ftpuser -m ftpuser

6.配置vsftpd.conf
說明:更改配置前最好備份一下然後再改

#vim /etc/vsftpd/vsftpd.conf

7.下面是我的vsftpd.conf配置內容:

#cat /etc/vsftpd/vsftpd.conf |grep -v '^#'
##不允許匿名用戶登錄ftp
anonymous_enable=NO
##允許本地用戶登錄
local_enable=YES
##啓用任何形式的FTP寫入命令
write_enable=YES
##上傳後文件的權限掩碼
local_umask=022
##開啓目錄標語,默認是YES
dirmessage_enable=YES
##開啓日誌,默認是YES
xferlog_enable=YES
##設定數據連接端口20
##這個端口我更改爲50100
connect_from_port_20=NO
#設置是否允許被動模式
pasv_enable=YES
pasv_min_port=50000
pasv_max_port=60000
listen_port=50100
##設定vsftpd的服務日誌保存路徑
xferlog_std_format=YES
xferlog_file=/var/log/xferlog
# vsftpd_log_file所指定的文件,即/var/log/vsftpd.log也將用來 記錄服務器的傳輸情況
dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log
##會話超時,客戶端連接到ftp但未操作,可根據個人情況修改
idle_session_timeout=600
#設定默認的數據連接超時時間
data_connection_timeout=120
##支持異步傳輸功能,默認是註釋掉的
async_abor_enable=YES
##支持ASCII模式的上傳功能,默認是註釋掉的
ascii_upload_enable=YES
##支持ASCII模式的下載功能,默認是註釋掉的
ascii_download_enable=YES
##FTP的登錄歡迎語,本身是被註釋掉的
ftpd_banner=Welcome to datagrand FTP service.
##禁止本地用戶登出自己的FTP主目錄
chroot_local_user=YES
##鎖定登錄用戶只能在家目錄的位置的文件
chroot_list_file=/etc/vsftpd/chroot_list
##偵聽ipv4地址
listen=YES
##########啓用vsftpd虛擬用以及虛擬用戶賬號配置目錄############
##設定啓用虛擬用戶功能
guest_enable=YES
##指定虛擬用戶的宿主用戶
guest_username=ftpuser
##設定pam服務下vsftpdd的驗證配置文件名
pam_service_name=vsftpd
##設定虛擬用戶的權限符合他們的宿主用戶
virtual_use_local_privs=YES
##設定虛擬用戶個人Vsftp的配置文件存放路徑
user_config_dir=/etc/vsftpd/vconf
##拒絕登錄用戶名單
userlist_enable=YES
userlist_deny=NO
##限制主機對VSFTP服務器的訪問
tcp_wrappers=YES
############################虛擬用戶全局配置###############
##開放虛擬用戶創建目錄的權限
anon_mkdir_write_enable=YES
##開放虛擬用戶的下載權限
anon_world_readable_only=YES
##開放虛擬用戶的寫權限
write_enable=YES
##開放虛擬用戶的上傳權限
anon_upload_enable=YES
##開放虛擬用戶刪除、重命名目錄和文件
anon_other_write_enable=YES

8.建立日誌文件

#touch /var/log/vsftpd.log    //日誌文件  
#chown vsftpdadmin:vsftpdadmin /var/log/vsftpd.log   //屬於vsftpdadmin這個宿主 

9.建立虛擬用戶文件

#mkdir /etc/vsftpd/vconf/  
#touch /etc/vsftpd/vconf/vir_user 

10.建立虛擬用戶
說明:
(1)第一行用戶名,第二行是上一行用戶名的密碼,其他人的以此類推;
(2)用戶名,密碼後面不要有空格!

#vim /etc/vsftpd/vconf/vir_user 
##用戶名
test
##密碼
123456

說明:加入需要鎖定登錄用戶只能訪問家目錄的位置,然後將帳戶輸入一行一個,保存就可以了。

#vim /etc/vsftpd/chroot_list
##用戶名
test
#vim /etc/vsftpd/user_list
##添加虛擬用戶
test

創建虛擬用戶具體文件和步驟:

#pwd
/etc/vsftpd/vconf
#touch test
#vim test
##添加如下內容:
##虛擬用戶的根目錄,需要預先建立並賦予相應權限
local_root=/data3/test
local_umask=022
:wq

在相應的目錄下(data3)創建文件test:

#mkdir -p /data3/test

更改所屬主,組:

#chown -R ftpuser:ftpuser /data3/test

1.生成數據庫

#db_load -T -t hash -f /etc/vsftpd/vconf/vir_user /etc/vsftpd/vconf/vir_user.db  
設置數據庫文件的訪問權限:
#chmod 600 /etc/vsftpd/vconf/vir_user.db  
#chmod 600 /etc/vsftpd/vconf/vir_user  

2.修改/etc/pam.d/vsftpd內容

將/etc/pam.d/vsftpd文件裏的內容全部註釋掉(前面加#)或刪掉,在裏面添加如下內容:
echo "auth required pam_userdb.so db=/etc/vsftpd/vconf/vir_user" >> /etc/pam.d/vsftpd  
echo "account required pam_userdb.so db=/etc/vsftpd/vconf/vir_user" >> /etc/pam.d/vsftpd  

3.重啓ftp服務

#service vsftpd restart
#netstat -lnp|grep vsftpd

4.關於vsftpd的端口號的更改
要求:vsftpd啓動後,默認的ftp端口是21,現在我想把ftp端口改成50100 ,修改後能保證用戶上傳下載不受影響。

#vim /etc/vsftpd/vsftpd.conf
##在該配置文件中添加此行
listen_port=50100
:wq
#vim /etc/services
#ftp             21/tcp
ftp             50100/tcp
#ftp             21/udp          fsp fspd
ftp             50100/udp          fsp fspd
:wq
#service vsftpd restart
#netstat -lnp|grep vsftpd

5.一鍵部署腳本

#創建12位亂碼密碼腳本
#cat create_passwd_12.sh
cat /dev/urandom|head -1 |md5sum|head -c 12
#cat create_account.sh
#!/bin/bash
#輸入新建用戶名
read -p "please input a username:" m
#輸入新建用戶名的密碼
read -p "please input a passwd:" n
#建立虛擬用戶
echo $m >> /etc/vsftpd/vconf/vir_user
echo $n >> /etc/vsftpd/vconf/vir_user
#chroot_list添加新建用戶名
echo $m >> /etc/vsftpd/chroot_list
#user_list添加新建用戶名
echo $m >> /etc/vsftpd/user_list
#創建虛擬用戶
cd /etc/vsftpd/vconf
touch $m
cat >> /etc/vsftpd/vconf/$m << EOF
local_root=/data3/$m
local_umask=022
EOF
#創建虛擬用戶對應的目錄
mkdir -p /data3/$m
chown -R ftpuser:ftpuser /data3/$m
#生成數據庫
db_load -T -t hash -f /etc/vsftpd/vconf/vir_user /etc/vsftpd/vconf/vir_user.db
#設置數據庫文件的訪問權限
chmod 600 /etc/vsftpd/vconf/vir_user.db
chmod 600 /etc/vsftpd/vconf/vir_user
#修改/etc/pam.d/vsftpd內容
echo "auth required pam_userdb.so db=/etc/vsftpd/vconf/vir_user" > /etc/pam.d/vsftpd
echo "account required pam_userdb.so db=/etc/vsftpd/vconf/vir_user" >> /etc/pam.d/vsftpd
#創建成功
echo "Congratulations on creating a new user!"

案例:多個虛擬用戶根據不同的權限使用同一個項目目錄
需求如下:
公司爲了能夠方便和合作伙伴溝通最新的產品信息,計劃搭建FTP服務器,給合作伙伴提供相關文檔的下載。內部管理員對FTP服務器共享目錄有上傳、下載、刪除和修改產品信息的權限。公司的合作伙伴能夠使用FTP服務器進行上傳和下載,但不可以刪除數據。

解決方法
關於 FTP 的相關部署,可以參考文章上面的內容,文章中的一鍵部署腳本適用於單個賬戶使用單個目錄。爲了滿足我們的需求,我們需要做一下相關配置的更改,具體如下:
(1)正常執行一鍵部署腳本,創建一個項目

sh create_account.sh
#按照腳本提示,輸入賬戶名字和密碼,如:share,share123,這個賬號後期可以刪除的~

(2)建立虛擬用戶賬號和密碼

#創建一個管理員用戶admin密碼admin123,一個只有下載權限的普通賬戶test密碼test1
echo admin >> /etc/vsftpd/vconf/vir_user
echo admin123 >> /etc/vsftpd/vconf/vir_user
echo test >> /etc/vsftpd/vconf/vir_user
echo test1 >> /etc/vsftpd/vconf/vir_user

(3)chroot_list添加新建用戶名

echo admin >> /etc/vsftpd/chroot_list
echo test >> /etc/vsftpd/chroot_list

(4)user_list添加新建用戶名

echo admin >> /etc/vsftpd/user_list
echo test >> /etc/vsftpd/user_list

(5)創建虛擬用戶權限配置文件

cd /etc/vsftpd/vconf
cp share admin
cp share test

管理員賬戶admin權限配置:

local_root=/data3/share
local_umask=022

普通賬戶test權限配置:

##開放虛擬用戶創建目錄的權限
anon_mkdir_write_enable=NO
##開放虛擬用戶的下載權限,這個參數的說明:https://bbs.csdn.net/topics/390083069
anon_world_readable_only=NO
##開放虛擬用戶的寫權限
write_enable=NO
##開放虛擬用戶的上傳權限
anon_upload_enable=NO
##開放虛擬用戶刪除、重命名目錄和文件
anon_other_write_enable=NO
local_root=/data3/share
local_umask=022

(6)生成數據庫

db_load -T -t hash -f /etc/vsftpd/vconf/vir_user /etc/vsftpd/vconf/vir_user.db

(7)設置數據庫文件的訪問權限

chmod 600 /etc/vsftpd/vconf/vir_user.db
chmod 600 /etc/vsftpd/vconf/vir_user

(8)修改/etc/pam.d/vsftpd內容

echo "auth required pam_userdb.so db=/etc/vsftpd/vconf/vir_user" > /etc/pam.d/vsftpd
echo "account required pam_userdb.so db=/etc/vsftpd/vconf/vir_user" >> /etc/pam.d/vsftpd
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章