linux系统ftp服务器详解
匿名FTP服務
1、檢查并安裝vsFTPD軟件包
在終端窗口輸入命令:“rpm –qa|grep vsftpd 命令檢查系統是否安裝了VsFTPD軟件包,如下圖所示:
如上圖所示 vsftpd 軟件包并沒有安裝,可以使用命令 yum install vsftpd –y 進行安裝
查看是否已經安裝成功使用命令 rpm –qa vsftpd
如上圖所示已經成功下載安裝了軟件包vsftpd
VsFTPD在安裝時會自動創建FTP系統用戶組ftp,和屬于該組的FTP系統用戶ftp, 該用戶的主目錄為/var/ftp ,默認作為FTP服務器的匿名賬戶。使用命令grep ftp /etc/passwd 可以驗證:
如上圖所示,可以看到,ftp賬戶的uid號是14 gid號是50 宿主目錄為/var/ftp 登陸后的shello 為 /sbin/nologin。當然也可以用命令 grep ftp /etc/group 查看ftp 組的信息,如下圖所示:
2、設置VsFTPD服務的自啟動
默認情況下,該服務并未啟動,可采用以下命令來檢查其啟動狀態:chkconfig –list vsftpd
若要設置該服務在3和5運行級別時自動啟動,則設置命令為:chkconfig –level 35 vsftpd on
3、VsFTPD服務的啟動腳本
vsftpd服務器的啟動腳本在/etc/rc.d/init.d/ 目錄下,有一個名為vsftpd的服務啟動腳本,利用該腳本,可以實現該vsftpd服務器的啟動,重啟,狀態查詢,停止操作如下圖所示:
啟動:、/etc/init.d/vsftpd start 、 停止 /etc/ init.d/vsftpd stop 重啟 /etc/init.d/vsftpd restart? (注/etc/init.d/ 是、/etc/rc.d/init.d 的軟鏈接) 如下圖所示:
上面的設置在每3與第5運行級別上啟動必須要等到下一次服務重啟,這個vsftpd服務才會啟動,如果我想現在就啟動,就必須使用命令:/etc/init.d/vsftpd start 來啟動
4、VsFTPD配置文件簡介
/etc/vsftpd/vsftpd.conf? 這里的vsftpd.conf是VsFTPD的主配置文件
另外還有加強VsFTPD服務器用戶認證的 /etc/pam.d/vsftpd
禁止訪問vsftpd的用戶列表文件是/etc/vsftpd.ftpusers 凡是該文件中包含的賬戶都不能訪問VsFTPD服務。一般出于安全性,會把 root bin 和daemon等系統賬戶都寫入該文件中。
/etc/vsftpd.user_list 用戶列表文件,該文件中包含的用戶可能是拒絕訪問VsFTPD服務的,也可能是允許訪問的,主要取決于主配置文件/etc/vsftpd/vsftpd.conf中的userlist_deny 參數的設置 為Yes或No
/var/ftp 提供服務的文件集散地它包括一個pub目錄。在默認配置下,所有目錄都是只讀的,只有root用戶具有寫權限。
?
VsFTPD服務器安裝并啟動服務后,按其默認配置,就可以正常工作了,VsFTP 默認的匿名賬戶為ftp 密碼也為ftp ,且默認是允許匿名用戶登錄,登錄后所在的FTP站點根目錄為 /var/ftp 目錄本linux系統ftp服務器的ip地址是 192.168.1.155 (服務器的防火墻關閉)
我用window 7 做為我的客戶端進行登入:如下圖所示:
如果用windows 7 下面的cmd 窗口也可以登入:如下圖所示:
在cmd 窗口界面用命令 dir 可以查看ftp 共享文件夾 pub
pwd 查看當前目錄
mkdir 建立目錄
rm 刪除目錄
get或mget 下載文件
put 或 mput 上傳文件
需要注意的是,以匿名身份登錄后是沒有寫權限和上傳文件的權限的。另外在進行匿名登錄時可以用ftp登錄,也可以用anonymous 身份登陸的。如下圖所示:
關于匿名賬戶的高級配置,還需要對VsFTPD的主配置文件/etc/vsftpd/vsftpd.conf 中的相關參數進行設置
anonymous enable 控制是否允許匿名用戶登入 YES為允許,NO為不允許,默認值是YES
no_anno_password 控制匿名用戶登錄時是否需要密碼 YES為不需要 NO 為需要默認是NO
anno _root 設置匿名用戶的根目錄。匿名用戶登錄后,將被鎖定到此目錄下。主配置文件中無此項,默認值為“/var/ftp”
anno_world_readable_only 控制是否允許匿名用戶下載可閱讀文檔。當值為YES時,允許用戶下載可閱讀文檔;當值為NO時,只允許匿名用戶瀏覽整個服務器文件系統默認值為YES
anon upload enable 控制是否允許匿名用戶上傳文件。YES為允許,NO為不允許,默認值為NO. 除了這個參數外,還需要兩個條件,即write_enable參數為YES,以及在文件系統上,FTP匿名用戶對某個目錄有寫權限。
anon_mkdir_write_enable 控制是否允許匿名用戶創建新的目錄。YES為允許NO為不允許,默認值為NO ,在文件系統上,FTP匿名用戶必須對新目錄的上層目錄擁有寫的權限。
anon_other_write_enable 控制匿名用戶是否擁有除了上傳和新建目錄之外的其它權限,如刪除、更名等。
下面我們用cat 命令打開VsFTPD的主配置文件
/etc/vsftpd/vsftpd.conf 來具體查看一下,與匿名用戶相關的幾個重要參數。
Anonymous_enable 的值設置為了yes 即允許匿名用戶訪問local_enable 用來設置是否允許本地用戶訪問FTP 服務器默認值為YES 表示允許本地賬戶登錄訪問。參數write_enable是設置是否允許向FTP服務器進行各種寫入操作,默認值為YES ,表示允許,參數anon_upload_enable 的值設置為了YES即允許匿名用戶上傳文件,但這里被注釋掉了,未生效,參數 anon_mkdir_write_enable 的值設置為了YES允許匿名用戶創建新目錄這個也被注釋掉了。
如果后兩個全都打開了,會是怎么樣的?
答案是還是上傳不了,因為你上傳上來上來的默認目錄文件夾是/var/ftp/pub 而這個目錄的
屬主與屬組是都是 root 用戶,你登陸的是匿名用戶,當然不會讓你在里面寫入文件或目錄。
對于 /var/ftp/pub 我們可以做如下處理
chgrp ftp /var/ftp
將/var/ftp? 這個目錄的屬組變為ftp 匿名用戶組,使用命令chown ftp:ftp /var/ftp/pub
將/var/ftp/pub 這個目錄的屬主變為ftp 屬組也為ftp
接下來是否可以上傳與下載文件了?答案是不能。因為如果你是新建的ftp服務器,你服務器上的 selinux 還沒有關閉你可以使用 命令setenforce0 將其關閉 然后就應該可以了。
?
如果你想讓匿名用戶除了有上傳下載之外的權限,比如說刪除,你可以在ftp服務的配置文件里面/etc/vsftpd/vsftpd.conf? 加入一條anon_other_write_enable=yes就可以了,這樣真正的匿名共享完成,但一般不需要加入,你想一下,如果別人把你上傳的東西都刪除了,肯定不好,小心使用。
Linux 系統FTP服務器匿名用戶實施小結
1、? 如果服務器上沒有安裝ftp服務的vsftpd服務,可以使用yuminstall vsftpd –y 進行安裝。
2、? 安裝完vsftpd 服務后,使用命令/etc/init.d/vsftpdstart 開啟ftp 服務。在vsftpd 安裝成功后,系統會自動創建共享目錄/var/ftp/pub 也會創建匿名用戶組ftp 與匿名用戶ftp
這個匿名用戶的用戶密碼是ftp 但記住這個ftp 的用戶是不能登陸linux服務器使用的。
因為你們可以使用grep ftp /etc/passwd 命令來查看它是 /sbin/nologin 不被登陸使用的虛擬用戶。以后所有的匿名用戶都可以劃分在ftp組里面。
3、? 下面就是配置ftp的配置文件 在/etc/vsftpd/vsftpd.conf里面 將anon_upload_enable與anon_mkdir_write_enable前面的#去掉
4、? 然后調節文件系統權限/var/ftp/pub 屬主改為ftp 屬組改為ftp 就可以了。
5、? 這樣匿名用戶可以上傳下載,但是不能刪除ftp共享里面的文件,如果想要有其他權力可以在配置文件里面加入 anon_other_write_enable=yes?(但是這一條很危險)
?
指定賬戶訪問FTP服務器
對于有較高安全性的FTP服務器一般不允許匿名訪問,更常見的方式是使用本地賬戶來登陸和訪問FTP服務器。所以,在使用和訪問FTP服務器之前,就根據需要,先創建好所需的FTP賬戶。另外,作為FTP登陸使用的賬戶,其shell應設置為“/sbin/nologin” 以使用賬戶來登陸ftp 而不能用來登錄linux系統。
?
可以根據不同的需要,將不同賬戶的shell設置成不同的值,典型的設置如下:
若要使某個用戶賬戶不能登錄Linux 只需設置該用戶所使用的shell為/sbin/nologin即可,如對于ftp賬戶,一般只能用用來登錄FTP服務器而不能用來登錄Linux 操作系統。
若要讓某用戶沒有telnet 權限,則應該設置該用戶使用的shell為/bin/true即可
創建用戶和用戶組,因此不再需要創建,下面直接直接創建用戶賬戶 openftp 之前先要創建其宿主目錄 /data/kfp
?
接下來使用 useradd 命令創建指定賬戶openftp
使用命令:useradd openftp –g ftp –d /data/kfp –s /sbin/nologin –c “ftp user”
使用echo “cisco”|passwd –stdin openftp
設置用戶主目錄的所有者,所屬的組和權限
使用命令 chown openftp:ftp /data/kfp? 將目錄/var/kfp 原來的所有組root,所有者 root 改成現在的所有者是openftp 所屬的組是ftp;
要想實現登錄ftp 需要賬戶與密碼,一定要修改/etc/vstftpd/vsftpd.conf 里面的anonymous_enable=yes? (yes改為no) 即可,如下圖所示在windows7下面的cmd窗口中測試。
?
看到沒,使用openftp 這個賬戶登錄,直接進入了我們給這個賬戶指定的宿主目錄 /data/kfp
這里面一定注意了,這里有一個大的安全隱患!就是可以在這個界面里面直接切換到linux 的根目錄,并查看到所有文件如下圖所示。
如何解決這一問題? 這需要在FTP服務器的配置文件里進行修改指定,/etc/vsftpd/vsftpd.conf? 里面的local_enable默認為yes (下面的參數需要在這個為 yes前提)
chroot_local_user 控制本地用戶是否鎖定在其宿主目錄下。Yes為是 NO 為不是,默認是NO 我們需要改為yes , 我們使用vi 進行修改然后重啟ftp 啟服務如下圖
我們再進行測試:在windows7 下的cmd 窗口。
如上圖所示:我們已經將基鎖定在宿主目錄了 /data/kfp
?
如果一個公司開發部有10個人,那么我可以給這10個人每人建立一個賬戶與密碼使用他們都能在ftp 服務器上有自己的文件夾,只有自己能在自己的文件夾下面添加刪除文件(等同于上傳下載),還建一個公用的,就是大家都可以在里面上傳下載,刪除
如,我以二個人的名字建立liuhongxia? qiuzhaoyuan
我在服務器上增加這兩個賬戶并將其宿主目錄分別指定為 /data/kfp/liuhonxia??/data/kfp/qiuzhaoyuan
?
使用命令:mkdir /data/kfp/liuhonxia –p?mkdir /data/kfp/qiuzhaoyuan –p 如下圖所示
?
使用useradd liuhonxia –g ftp –d /data/kfp –s /sbin/nologin –c “ftp user”
useradd qiuzhaoyuan –g ftp –d /data/kfp –s /sbin/nologin –c “ftp user”
使用命令 echo “cisco”|passwd –stdin liuhonxia
echo “cisco”|passwd –stdin qiuzhaoyuan?
使用命令tail -2 /etc/passwd 如下圖所示
使用命令 chown linuhonxia:ftp /data/kfp/linuxhonxia??
chown qiuzhaoyuan:ftp /data/kfp/qiuzhaoyuan
改變這兩個文件夾的屬主與屬組。如下圖所示:
再建立一個公有的文件夾 public 使所有的有賬戶的人群在里面具有所有的權限。如下圖所示:
這樣就真正實現了上述所需要的。這里很多人想把/data/kfp/public 這個文件夾的權限改為777 這樣做不好。因為所有有賬戶的用戶,他都屬于ftp 這個組里面,所以只要屬主有權限讀寫就可以了。
?
下面可以測試一下了。應該是可以了,可以在windows 7 資源窗口測試。
完結。
?
總結:
指定賬戶訪問FTP服務器需要指定好用戶的宿主目錄,以及在這個宿主目錄下,文件系統給定用戶文件夾的權限。
?
轉載于:https://blog.51cto.com/12142662/1871487
總結
以上是生活随笔為你收集整理的linux系统ftp服务器详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 春夏秋冬的古诗各10首五年级
- 下一篇: Linux 系统上出现^H