中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

CentOS怎么安裝配置vsftp虛擬用戶登錄

發布時間:2021-08-05 09:08:45 來源:億速云 閱讀:168 作者:chen 欄目:系統運維

本篇內容主要講解“CentOS怎么安裝配置vsftp虛擬用戶登錄”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“CentOS怎么安裝配置vsftp虛擬用戶登錄”吧!

在使用Linux時,難免要進行各種文件的遠程傳輸,比如:網站的代碼,共享資源等,而這其中用的最多的傳輸方法大概就是FTP了。Linux下可用FTP服務端是非常多的,vsftp, proftp, uw-ftp等,其中vsftp流行度比較廣,沖著這個,本人在自己的CentOS上也就選擇了vsftp,而且,vsftp支持PAM(pluggable authentication modules)下虛擬用戶設置,這正是Mitchell Chu比較喜歡的一種方式,接下來就請vsftp君上場。

Vsftp使用的用戶中,支持三種用戶模式,分別是:實體用戶,匿名用戶和虛擬用戶(guest, 亦稱訪客身份)。實體用戶(Real  User)是指用戶本身存在于系統中的用戶,他們存在于/etc/passwd和/etc/shadow文件中。匿名用戶(Anonymous)是指客戶 端無需提供任何用戶身份,ftp為訪問者提供一個名為anonymous的特殊用戶以供其使用。虛擬用戶(Virtual  User)個人理解是一種介于實體用戶和匿名用戶之間的用戶。原因是:虛擬用戶雖然在系統的實體用戶文件中不存在,但是會在系統的其他地方進行記錄(本文是Berkeley  DB),以供vsftp用來對ftp訪問者進行必要的鑒權,而鑒權完畢之后,該用戶操作文件之時,將是使用vsftp的運行用戶ftp進行的。由于實體用戶需要的是系統真實帳戶,開放這種權限無疑會增加系統的風險,而虛擬用戶使用的是和實體用戶不同的用戶驗證體系,并且,在系統中并不實際存在虛擬用戶到實體用戶的映射關系,因此降低了FTP給系統帶來的風險性,在實際生產環境中,虛擬用戶可以更加靈活的進行獨立管理,比如:虛擬主機需要給用戶提供FTP帳 戶。有這么些好處之后,讓我們看看是如何配置吧!

預備式

Berkeley DB 數據庫:用來存儲虛擬用戶的登錄信息。

pam_userdb.so:用來驗證虛擬用戶。

db4_utils:用來轉換虛擬用戶到DB數據的工具。

安裝需要的包

CentOS中好像是默認自帶vsftp的,因此,無需安裝,如果你不確認,可以用which看下:

which vsftpd   # 如果安裝好了的話,應該是有類似下面的輸出: # /usr/sbin/vsftpd # 如果沒安裝,則類似下面的輸出 # /usr/bin/which: no xd in (/home/limituser...

沒有安裝的話,請安裝:

yum install vsftpd  # 或者: yum -y install vsftpd

當然,清空下yum的緩存亦可:

pushd /etc/yum.repos.d/ rm -rf * wget http://docs.linuxtone.org/soft/lemp/CentOS-Base.repo yum clean all   yum -y install vsftpd ## 這句還是重點.

為了簡單,我們可以一次性安裝所有需要的包:

yum install db4-utils db4 vsftpd   ## Mitchell Chu提醒:有的就不用再安裝了,請自行增減

創建虛擬用戶

虛擬用戶我們使用Berkeley DB數據庫來存儲。***步是創建純文本來添加用戶和密碼,用戶名和密碼各占一行。比如我們要創建:useasp的用戶名,密碼是blog.useasp.net,并且創建一個admin密碼是adminpasswd的用戶,那么,純文本將類似如下:

pushd /etc/vsftpd cat >vusers.txt useasp blog.useasp.net admin adminpasswd

創建好vusers.txt后,我們需要的第二步是將純文本轉換為db文件,這時候需要使用到db_load了:

db_load -T -t hash -f vusers.txt vsftpd-virtual-users.db

為了安全起見,記得設置僅root可讀寫(當前是root):

chmod 600 vsftpd-virtual-users.db

再清理掉原來的純文本文件:

rm vusers.txt

此時,我們已經將需要登錄FTP的用戶已經準備好了,接下來就需要去配置vsftpd,讓vsftpd能夠正確的識別并支持已經設置好虛擬用戶了。

VSFTPD虛擬用戶的配置

找到vsftpd.conf配置文件,添加或修改下面這些配置選項:

# 禁止匿名登錄 anonymous_enable=NO anon_upload_enable=YES anon_other_write_enable=YES # 啟用本地用戶 local_enable=YES # 虛擬用戶使用本地用戶權限 virtual_use_local_privs=YES # 可寫 write_enable=YES # PAM配置 pam_service_name=vsftpd # 啟用虛擬用戶 guest_enable=YES # 用戶后綴: 配合下面local_root使用,將會用登錄的用戶名替換掉$USER user_sub_token=$USER # 根目錄 local_root=/var/ftp/$USER # 啟用chroot,登錄后會被定位到指定根目錄 chroot_local_user=YES # 將所有的用戶和組顯示為ftp hide_ids=YES

vsftpd的配置文件是在/etc/vsftpd/vsftpd.conf,原有配置項可以保留默認值,如果需要日志,vsftpd有兩個日志可供使用,一個是標準xferlog格式的,一個是vsftpd格式的,可讀性后者更好,當然,你也可以兩個日志都啟用,要啟用可以設置:xferlog_enable, xferlog_std_format, xferlog_file, vsftpd_log_file等參數以獲得需要的日志效果。

虛擬用戶的PAM配置

要針對虛擬用戶啟用PAM,我們還需要對PAM盡心配置,在上面的vsftpd配置文件中,我們使用pam_service_name來配置了PAM將使用的配置文件,這個文件安裝后是默認存在的,如果你覺得有必要保留原來的配置,可以先行備份一份,而后配置文件內容改為如下:

#%PAM-1.0 auth       required     pam_userdb.so db=/etc/vsftpd/vsftpd-virtual-users account    required     pam_userdb.so db=/etc/vsftpd/vsftpd-virtual-users #session    required     pam_loginuid.so

要啟用session可以將上面的#注釋掉,如果是在32位系統下,網上有一個配置方法是下面這種:

#%PAM-1.0 auth       sufficient     pam_userdb.so db=/etc/vsftpd/vsftpd-virtual-users account    sufficient     pam_userdb.so db=/etc/vsftpd/vsftpd-virtual-users

由于本人對Linux下的PAM并不是很了解,并不太了解requiredsufficient的區別,這里不好做過多的論斷,有了解的可以指點一下,謝謝!

PAM配置里面,是指明賬戶保存的所在位置,我們配置文件里面的路徑即是前面使用db_load創建的Berkeley DB的文件路徑。

創建FTP目錄

前面vsftpd已經配置了ftp的目錄,我們需要先行創建FTP根目錄,和用戶需要的目錄,因為一旦這些用戶登錄,將會被vsftpd重新定位到指定的home目錄下的,vsftpd中我們配置的是/var/ftp,因此我們需要確認此目錄是否存在,不存在我們就需要創建,而后,在此目錄下創建虛擬用戶的根目錄,目錄名稱就是用戶名稱。

mkdir -p /var/ftp/{useasp,admin} chown -R ftp:ftp /var/ftp

為了保證能夠順利讀取到文件,我們將根目錄下的所有文件都變成ftp這個用戶所有——ftp賬戶系統已經默認設置好了,vsftpd就是使用這個賬戶來操作的。

重啟FTP服務,測試FTP

按上面的流程配置完后,我們就可以重新啟動vsftpd服務,讓新的配置生效——如果你沒有辦法使用此命令,請參看后面的省卻麻煩一節,將vsftpd設置成為開機啟動服務:

service vsftpd restart

重啟之后,理論上來說,應該就能使用FTP客戶端訪問FTP服務器了,如果需要測試,你也可以直接在本機訪問測試下:

ftp 127.0.0.1

此時應該能夠得到正常返回,類似如下:

Connected to 127.0.0.1 (127.0.0.1). 220-Welcome to Mitchell Personal Web Server(MPWS) 220-Please use user name and password to login... 220-if you have any question, please contact MitchellChu<******@useasp.net> 220 Name (127.0.0.1:root):useasp 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp>

而在系統的日志中應該也能看到登錄信息(以下是多個日志文件,和有的如果沒有配置vsftpd的日志文件將無法看到):

# tail -f /var/log/secure Sep  4 23:36:11 CentOS vsftpd[8721]: pam_userdb(vsftpd:auth): user 'useasp' granted access   # tail -f /var/log/vsftpd.log Fri Sep  4 23:36:15 2015 [pid 8721] [useasp] FTP response: Client "127.0.0.1", "150 Here comes the directory listing."

到此,我們就已經配置了一個可以正常訪問的FTP服務器了。

開啟防火墻,開放給別人用吧

上面測試正常后,如果你開啟了iptables,那么,記得添加規則,讓你的21,20端口,以后被動模式時使用的端口范圍開放出來吧:

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 65300:65360 -j ACCEPT service iptables save

上面的是我的iptables的配置,開放了21和20端口,20端口是ftp-data用的,用來傳輸數據。

省卻麻煩

為了不用每次重啟之后都爬上機器上開啟FTP,我們可以將vsftpd設置為開機啟動&mdash;&mdash;如果系統已經有了這個服務,忽略:

chkconfig --levels 345 vsftpd on service vsftpd start

至此,就差不多得到一個比較***的FTP Server了。

后記:

上面是配置vsftpd使用虛擬用戶的基本流程,但在配置中,我們總是能發現這樣或者那樣的問題,因此就需要我們不斷的去DEBUG整個流程,由于Linux中有SELinux的存在,很多問題的根源還是在于SELinux的設置,如果你需要簡單快捷,那么使用下面這個命令即可解決大部分問題&mdash;&mdash;網上很多朋友也正是這樣解決的:

setenforce 0 # or setenforce Permissive

當然,如果你和Mitchell Chu一樣,也是個不愿意如此簡單了事的人兒,那么,咱們繼續踏上征程&hellip;&hellip;在按上面的方法配置好整個FTP服務器之后,本人也或多或少碰到如下的這些問題,現在匯集起來,方便后來者(若有時間,會展開來講,暫且記錄下):

1.不能定位到各自用戶的目錄,這個問題的存在,我們可以嘗試設置SELinux中的ftp_home_dir來解決:

setsebool -P ftp_home_dir on

2.不能列出FTP目錄內容,這個問題也是SELinux引起的,可能的原因是vsftpd對于目錄并沒有權限,檢查下自己的權限是否正確,vsftpd使用的是ftp用戶訪問,看看自己是否設置錯權限了?

3.還是不能列出目錄文件,再看看目標文件夾的類型對不對,一般需要的是public_content_r_t,如果你不確認,可以使用下面的命令查看:

ls -alZ

你將看到類似如下的輸出:

drwxr-xr-x. root root system_u:object_r:public_content_t:s0 . drwxr-xr-x. root root system_u:object_r:var_t:s0       .. drwxr-xr-x. root root system_u:object_r:var_t:s0 useasp drwxr-xr-x. root root system_u:object_r:var_t:s0 admin

可以看到,默認的是var_t,我們需要設置一下,這里需要用到工具semanage,如果沒有,需要安裝policycoreutils-python

yum -y install policycoreutils-python

因為我使用了自行編譯的Python版本,導致semanage不能正常運行,報錯:

Traceback (most recent call last):   File "/usr/sbin/semanage", line 23, in <module>     import policycoreutils.default_encoding_utf8 ImportError: No module named policycoreutils.default_encoding_utf8

修正后,直接使用semanage來設置:

restorecon -R -v /var/ftp/{useasp,admin}

4.不能上傳文件,不能創建文件夾,還是SELinux的問題啊,設置:

setsebool -P allow_ftpd_anon_write on

5.還不能上傳文件?試試:

semanage fcontext -a -t public_content_rw_t "/var/ftp(/.*)?" restorecon -R -v /var/ftp/{useasp,admin}

這個和上面的設置差不多,只是權限更大,請謹慎操作!

到此,相信大家對“CentOS怎么安裝配置vsftp虛擬用戶登錄”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

镶黄旗| 岑巩县| 宁明县| 沁源县| 曲沃县| 元朗区| 高邑县| 文山县| 凌源市| 永川市| 山西省| 凤凰县| 赞皇县| 温州市| 梓潼县| 武功县| 昭苏县| 库伦旗| 调兵山市| 明光市| 偃师市| 巴东县| 洛扎县| 叶城县| 云阳县| 古丈县| 汕尾市| 德兴市| 富锦市| 邢台县| 布拖县| 淮滨县| 乌兰浩特市| 册亨县| 罗田县| 中阳县| 鹤山市| 巴彦淖尔市| 昂仁县| 安平县| 凉城县|