為什么要安裝配置vsftpd做FTP服務(wù)?
其實(shí)是考慮到可能需要給其他人修改內(nèi)容,總不能給個(gè)最高權(quán)限的就給別人,于是就自己琢磨著弄了下vsftpd,記錄一下安裝配置過程。
安裝
在安裝前查看是否已安裝vsftpd
** 查看是否已安裝 方法一 **
[root@localhost ~]# rpm -q vsftpd
vsftpd-3.0.2-21.el7.x86_64
** 查看是否已安裝 方法二 **
[root@localhost ~]# vsftpd -v
vsftpd: version 3.0.2
** 安裝 vsftpd **
[root@localhost ~]# yum -y install vsftpd
查看位置
[root@localhost ~]# whereis vsftpd
vsftpd: /usr/sbin/vsftpd /etc/vsftpd /usr/share/man/man8/vsftpd.8.gz
啟動(dòng)vsftpd服務(wù)
systemctl start vsftpd.service
// 在centos7以下的版本使用的是service vsftpd start
同時(shí),你需要把vsftpd服務(wù)添加進(jìn)系統(tǒng)的啟動(dòng)項(xiàng)中(不然重啟又得開一次ww
systemctl enable vsftpd.service
// 在centos7以下的版本使用的是chkconfig vsftpd on
不確定是否添加進(jìn)系統(tǒng)啟動(dòng)項(xiàng),可以使用
systemctl list-unit-files
過濾查詢可以systemctl list-unit-files | grep [服務(wù)名]
更多CentOS7與中systemctl的使用與7之前版本的對(duì)比可以看這個(gè)
https://www.cnblogs.com/shanwater/p/6847196.html
關(guān)閉firewall和SELinux
setenforce 0 // 設(shè)置SELinux 成為permissive模式 (關(guān)閉SELinux)
setenforce 1 // 設(shè)置SELinux 成為enforcing模式 (開啟SELinux)
systemctl stop firewalld.service
//停止firewall
systemctl disable firewalld.service
//禁止firewall開機(jī)啟動(dòng)
*關(guān)閉的原因是一般系統(tǒng)中默認(rèn)開啟了防火墻,SELinux也處于啟動(dòng)狀態(tài),一般狀態(tài)為enforing。致使很多服務(wù)端口默認(rèn)是關(guān)閉的。有可能導(dǎo)致配置明明正確卻無法正常使用(然后你就找半天找不出原因
如果你不愿意關(guān)閉防火墻,需要防火墻添加FTP服務(wù)。
firewall-cmd --permanent --zone=public --add-service=ftp
firewall-cmd --reload
ps:在服務(wù)器的安全組設(shè)置中放開端口應(yīng)該也是可以的(大概,我也沒試過
配置
** 配置文件/etc/vsftpd/vsftpd.conf修改配置文件(重要步驟) **
anonymous_enable=NO // 不允許匿名訪問,禁用匿名登錄
chroot_local_user=YES // 啟用限定用戶在其主目錄下
use_localtime=YES // 使用本地時(shí)(自行添加)
chroot_list_enable=YES
local_enable=YES // 允許使用本地帳戶進(jìn)行FTP用戶登錄驗(yàn)證
allow_writeable_chroot=YES // 如果啟用了限定用戶在其主目錄下需要添加這個(gè)配置,解決報(bào)錯(cuò) 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
xferlog_enable=YES // 啟用上傳和下載的日志功能,默認(rèn)開啟。
local_umask=022 // 設(shè)置本地用戶默認(rèn)文件掩碼022
// FTP上本地的文件權(quán)限,默認(rèn)是077,不過vsftpd安裝后的配置文件里默認(rèn)是022
很多人配置ftp最后用戶沒有權(quán)限和這里的步驟有關(guān)系(不要問我怎么知道的)
當(dāng)virtual_use_local_privs=YES 時(shí),虛擬用戶和本地用戶有相同的權(quán)限;虛擬用戶高級(jí)參數(shù)
當(dāng)virtual_use_local_privs=NO 時(shí),虛擬用戶和匿名用戶有相同的權(quán)限,默認(rèn)是NO。
當(dāng)virtual_use_local_privs=YES,write_enable=YES時(shí),虛擬用戶具有寫權(quán)限(上傳、下載、刪除、重命名)。
當(dāng)virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=YES,anon_upload_enable=YES時(shí),虛擬用戶不能瀏覽目錄,只能上傳文件,無其他權(quán)限。
當(dāng)virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,anon_upload_enable=NO時(shí),虛擬用戶只能下載文件,無其他權(quán)限。
當(dāng)virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,anon_upload_enable=YES時(shí),虛擬用戶只能上傳和下載文件,無其他權(quán)限。
當(dāng)virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,anon_mkdir_write_enable=YES時(shí),虛擬用戶只能下載文件和創(chuàng)建文件夾,無其他權(quán)限。
當(dāng)virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,anon_other_write_enable=YES時(shí),虛擬用戶只能下載、刪除和重命名文件,無其他權(quán)限。
多用戶配置
多用戶配置需要自己手工添加配置,下面內(nèi)容到vsftpd.conf末尾
use_localtime=YES // 使用本地時(shí)(自行添加)
listen_port=21
chroot_local_user=YES // 啟用限定用戶在其主目錄下
idle_session_timeout=300
data_connection_timeout=120 // 數(shù)據(jù)連接超時(shí)時(shí)間
guest_enable=YES // 設(shè)定啟用虛擬用戶功能
guest_username=ftpuser // 指定虛擬用戶的宿主用戶 ftpuser(就是我們后面會(huì)新建這個(gè)用戶)
// guest_username=www
// 如果ftp目錄是指向網(wǎng)站根目錄,用來上傳網(wǎng)站程序
// 可以指定虛擬用戶的宿主用戶為nginx運(yùn)行賬戶www,可以避免很多權(quán)限設(shè)置問題
//這方面自行百度
user_config_dir=/etc/vsftpd/vuser_conf // 虛擬用戶配置文件目錄
virtual_use_local_privs=YES // NO時(shí),虛擬用戶和匿名用戶有相同的權(quán)限,默認(rèn)是NO
pasv_min_port=10060 // 被動(dòng)模式最小端口號(hào)10060
pasv_max_port=10090 // 被動(dòng)模式最大端口號(hào)10090
accept_timeout=5
connect_timeout=1
創(chuàng)建宿主用戶
// 方法一(我用的是這個(gè))
// 創(chuàng)建用戶 ftpuser 指定/home/vsftpd目錄
useradd -g root -M -d /home/vsftpd -s /sbin/nologin ftpuser
// 設(shè)置用戶 ftpuser 的密碼
passwd ftpuser
// 把 /home/vsftpd 的所有權(quán)給ftpuser.root
chown -R ftpuser.root /home/vsftpd
// 注意不要漏了,沒設(shè)置好的話新建的用戶就沒權(quán)限了
// 方法二(沒用過,有興趣的可以自己嘗試)
useradd ftpuser -d /home/vsftpd -s /bin/false
chown ftpuser:ftpuser /home/vsftpd -R
// 如果虛擬用戶的宿主用戶為www,需要這樣設(shè)置
// www目錄是你應(yīng)用的目錄
chown www:www /home/www -R
最后重啟vsftpd服務(wù)器
systemctl restart vsftpd.service
然后,剛剛創(chuàng)建的用戶就可以登錄ftp了
關(guān)于服務(wù)運(yùn)維
systemctl restart vsftpd.service # 重啟服務(wù)
systemctl start vsftpd.service # 啟動(dòng)服務(wù)
systemctl status vsftpd.service # 服務(wù)狀態(tài)查看
關(guān)于一些虛擬用戶與目錄設(shè)置相關(guān)等更詳細(xì)內(nèi)容,可以查看
http://blog.51cto.com/11728495/2057661?utm_source=oschina-app
我創(chuàng)建的用戶需要的權(quán)限是能正常修改內(nèi)容,但是是限定那個(gè)目錄下的,不能到達(dá)上一層目錄
如果需要設(shè)置別的不同權(quán)限,可以根據(jù)上面的舉一反三一下啦~
有問題可以留言,雖然我不一定懂(大概?),也許能交流出答案~