前言
本文,主要以vsftp軟件為主進(jìn)行講解,版本為3.0.2。以介紹設(shè)置虛擬用戶、權(quán)限驗(yàn)證為主,linux權(quán)限知識(shí)默認(rèn)大家都有所了解。vsftpd設(shè)置有兩種模式:主動(dòng)模式、被動(dòng)模式。
Linux網(wǎng)絡(luò)文件共享。例如NFS、Sambs、FTP,其中以FTP應(yīng)用最為廣泛,成為了當(dāng)下linux文件系統(tǒng)中主流的網(wǎng)絡(luò)文件共享工具。介紹FTP主要有幾種常見(jiàn)的工具vsftp、proftp、wu-ftp、pureftp,各種FTP軟件無(wú)優(yōu)劣之分,實(shí)際工作中選擇自己熟悉的一款即可。
注意:以Redhat7系列(或者支持systemd環(huán)境的linux系統(tǒng))
1、準(zhǔn)備安裝包
我的gitee倉(cāng)庫(kù):
https://gitee.com/dywangk/SQL-study/tree/master/vsftpd
當(dāng)然可以到此網(wǎng)站下載各個(gè)版本:
http://www.rpmfind.net/linux/rpm2html/search.php?query=vsftpd
vsftpd-3.0.2-29.el7_9.x86_64.rpm
2、安裝
rpm -ivh vsftpd-3.0.2-29.el7_9.x86_64.rpm
查詢是否安裝
rpm -qa | grep vsftpd
systemctl enable vsftpd.service
systemctl start vsftpd.service
systemctl status vsftpd.service
ps -ef | grep vsftpd#或者ps -aux | grep vsftpd
在本機(jī)會(huì)提示沒(méi)有ftp命令,直接就在遠(yuǎn)端測(cè)試連接。
ftp remote_ip
其實(shí)翻譯一下就知道了,chroot配置沒(méi)有寫入的權(quán)限。
OOPS: vsftpd: refusing to run with writable root inside chroot()Login failed.
后續(xù)的版本更新了,需要手動(dòng)加上allow_writeable_chroot=YES參數(shù)配置
allow_writeable_chroot=YES
systemctl restart vsftpd.service
關(guān)于防火墻的設(shè)置,可以參考我的歷史文章
【Redhat系列l(wèi)inux防火墻工具】firewalld與iptables防火墻工具的激烈碰撞
https://blog.csdn.net/Tolove_dream/article/details/122293458
重啟測(cè)試vsftpd上傳文件,默認(rèn)存儲(chǔ)路徑為該用戶的home目錄下
#例如/home/vsftpd/test
如需更改配置,如下設(shè)置
local_root=/var/ftp/pub
防火墻加入ftp服務(wù)
firewall-cmd --zone=public --add-service=ftp --permanent
主動(dòng)模式,防火墻開(kāi)啟20、21端口
firewall-cmd --zone=public --add-port=21/tcp --permanent firewall-cmd --zone=public --add-port=20/tcp --permanent
設(shè)置當(dāng)前ftp存儲(chǔ)目錄用戶權(quán)限、chroot_list文件配置用戶登錄、設(shè)置虛擬用戶。
注意:在Windows資源管理訪問(wèn),網(wǎng)絡(luò)共享中心->Internet屬性->高級(jí),開(kāi)啟被動(dòng)訪問(wèn)ftp(開(kāi)啟兼容模式)
1、設(shè)置SELinux為寬容模式或者臨時(shí)關(guān)閉
#臨時(shí)改成寬容模式setenforce 0#查看selinux[root@dywangk test]# getenforcePermissive
2、永久設(shè)置selinux,修改配置文件/etc/sysconfig/selinux
#查看,默認(rèn)配置文件是開(kāi)啟的cat /etc/sysconfig/selinuxSELINUX=enforcing#禁用selinuxSELINUX=disable#寬容模式SELINUX=Permissive
編輯配置文件vim /etc/vsftpd/vsftpd.conf
# Example config file /etc/vsftpd/vsftpd.conf#綁定本機(jī)IPlisten_address=192.168.245.134#禁止匿名用戶登錄anonymous_enable=NO#允許本地用戶訪問(wèn)local_enable=YES#開(kāi)啟寫入權(quán)限write_enable=YES#在后續(xù)比較高的版本中需要加入允許chroot寫的權(quán)限allow_writeable_chroot=YES#上傳文件后默認(rèn)權(quán)限掩碼local_umask=022#默認(rèn)不開(kāi)放匿名用戶上傳權(quán)限#anon_upload_enable=YES#默認(rèn)不開(kāi)放匿名用戶創(chuàng)建于寫的權(quán)限#anon_mkdir_write_enable=YES#dirmessage_enable=YES## Activate logging of uploads/downloads.xferlog_enable=YES## Make sure PORT transfer connections originate from port 20 (ftp-data).#默認(rèn)為FTP主動(dòng)模式,需要開(kāi)啟防火墻20、21端口connect_from_port_20=YES##chown_uploads=YES#chown_username=whoever##xferlog_file=/var/log/xferlog#xferlog_std_format=YES##idle_session_timeout=600##data_connection_timeout=120##nopriv_user=ftpsecure##async_abor_enable=YES##ascii_upload_enable=YES#ascii_download_enable=YES##ftpd_banner=Welcome to blah FTP service.##deny_email_enable=YES#banned_email_file=/etc/vsftpd/banned_emails#禁止FTP用戶離開(kāi)自己的主目錄chroot_local_user=YESchroot_list_enable=NO# (default follows)#虛擬用戶列表,設(shè)置默認(rèn)允許登錄FTP的用戶,每行一個(gè)用戶chroot_list_file=/etc/vsftpd/chroot_list#開(kāi)啟虛擬用戶功能guest_enable=YES#虛擬用戶宿主目錄guest_username=ftp#用戶登錄后操作主目錄和本地用戶具有同樣的權(quán)限virtual_use_local_privs=YES#虛擬用戶主目錄配置文件user_config_dir=/etc/vsftpd/vconf#ls_recurse_enable=YES#開(kāi)啟監(jiān)聽(tīng),開(kāi)啟ipv4就禁用listen_ipv6listen=YES#listen_ipv6=NO#權(quán)限驗(yàn)證需要的加密文件pam_service_name=vsftpd.vu#pam_service_name=vsftpduserlist_enable=YEStcp_wrappers=YES
在/etc/vsftpd/chroot_list加入虛擬用戶user1和user2。這里直接用vim編輯是一樣的加入配置,每行對(duì)應(yīng)一個(gè)用戶。
echo 'user1' >> /etc/vsftpd/chroot_listecho 'user2' >> /etc/vsftpd/chroot_list
建議:linux下賦予權(quán)限底線,在最小權(quán)限范圍內(nèi)滿足需求即可。
#創(chuàng)建虛擬用戶目錄mkdir -p /data/{user1,user2}#賦予權(quán)限,測(cè)試直接賦予最高權(quán)限了,實(shí)際工作中建議在最小權(quán)限范圍內(nèi)滿足即可。chmod -R 777 /data/user1 chmod -R 777 /data/user2
下面使用的\n并非錯(cuò)誤輸入,是的,就是正常的換行。熟悉編程的小伙伴應(yīng)該不陌生,在Java語(yǔ)言的打印輸出大家應(yīng)該有印象吧!
class test{ public static void main(String args){ system.out.println('hello world!!!'); } }
在虛擬用戶存儲(chǔ)用戶名以及密碼
#用vusers.list來(lái)區(qū)分本機(jī)用戶與虛擬用戶配置echo -e 'user1\n123456\nuser2\n123456' > /etc/vsftpd/vusers.list#切換到vsftpd配置目錄cd /etc/vsftpd/#解析vusers.list到vusers.dbdb_load -T -t hash -f vusers.list vusers.db#賦予權(quán)限chmod 600 vusers.*
echo -e '#%PAM-1.0\n\nauth required pam_userdb.so db=/etc/vsftpd/vusers\naccount required pam_userdb.so db=/etc/vsftpd/vusers' > /etc/pam.d/vsftpd.vu#創(chuàng)建虛擬配置文件目錄mkdir /etc/vsftpd/vconf#進(jìn)入虛擬用戶配置文件目錄cd vconf/#新增配置echo 'local_root=/data/user1' > user1echo 'local_root=/data/user2' > user2#查看配置lsuser1 user2#查看user1與user2的主目錄cat user1local_root=/data/user1cat user2local_root=/data/user2#新建測(cè)試文件touch /data/user1/test1touch /data/user2/test2
如果沒(méi)有指定虛擬用戶的ftp目錄,默認(rèn)訪問(wèn)目錄如下
/var/ftp/pub/
經(jīng)過(guò)測(cè)試設(shè)置的虛擬用戶user2禁錮在了/data/user2 目錄下
#在Windows下訪問(wèn)到新增的test1、test2文件,如果沒(méi)變過(guò)來(lái)多刷新幾遍/data/user1/test1/data/user2/test2
Git Bash驗(yàn)證
ftp remote_ip
或者在資源管理驗(yàn)證測(cè)試新增、刪除、修改。
ftp://remote_ip
原文地址:
https://www.cnblogs.com/cnwangk/p/15882874.html
聯(lián)系客服