ftp安裝和虛擬使用者建立(終於搞清楚了)
之前領導叫我在Linux下搭建一個FTP伺服器,搞一個公司內部人員檔案結構,並對相應人員設定相應的訪問許可權,之前網上有很多安裝方法,但是都是很傻瓜式地安裝,使用者簡單地建立,而我當時也是用的最笨的方法建立了很多的本地使用者,並對本地使用者實現了領導佈置的要求,但新增使用者,並對使用者地管理起來很麻煩,特別是新增新使用者的時候,最終沒有能夠搞定簡單實用的這個問題。知道這個問題出現在建立的是本地使用者,而非虛擬使用者,當時用的Ubuntu12.04的好像沒有db_load
安裝的時候,又沒有對應的資料來源,當時,就沒有繼續做下去了(當時就是問題解決了,但是不實用,所以沒有用起來,也不想搞了,暫放一邊了)
安裝
1.安裝
sudo apt-get install vsftpd
2 檢視安裝結果
安裝完畢,檢查vsftpd程序是否已啟動,可以檢視程序或者檢視監聽埠
ps -eaf|grep vsftpd
tony@T:~$ ps -eaf | grep vsftpd
root 2244 1 0 21:08 ? 00:00:00 /usr/sbin/vsftpd
tony 2408 2104 0 21:11 pts/0 00 :00:00 grep --color=auto vsftpd
netstat -tnl | grep :21
tony@T:~$ netstat -tnl | grep :21
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN
埠21正在被監聽
3. 嘗試匿名使用者登入
安裝完後不用做任何配置既可用匿名方式進行訪問,預設的ftp資料夾為/srv/ftp。
登入可以在瀏覽器中,資料夾輸入框中以及型別windows/Linux終端中進行測試。
建議使用windows/Linux終端測試,失敗了會有錯誤輸出,可以根據錯誤進行除錯。
更改配置檔案vsftpd.conf
anonymous_enable=YES
匿名登入,使用者名稱稱ftp,密碼不輸入,直接回車
C:\Users\Tony>ftp 192.168.1.108
連線到 192.168.1.108。
220 (vsFTPd 2.2.2)
使用者(192.168.1.108:(none)): ftp
331 Please specify the password.
密碼:
230 Login successful.
登入到的目錄就是/srv/ftp目錄,在裡面的檔案就能夠檢視到
4. 使用ubuntu的賬戶登入
此時就訪問ftp賬戶,預設是linux的賬戶,使用cmd中登入。
需要注意的是,ftp伺服器端檔案路徑是使用者的家目錄
C:\Users\Tony>ftp 192.168.1.108
連線到 192.168.1.108。
220 (vsFTPd 2.2.2)
使用者(192.168.1.108:(none)): tony
331 Please specify the password.
密碼:
230 Login successful.
5. 在ubuntu中,vsftpd的主要配置檔案分佈如下:
/etc/vsftpd.conf vsftpd伺服器的配置檔案
/usr/sbin/vsftpd vsftpd伺服器的程序檔案
/etc/pam.d/vsftpd vsftpd伺服器的PAM介面配置檔案
/var/ftp vsftpd伺服器匿名使用者的工作目錄
6. vsftpd的開始、關閉和重啟
sudo /etc/init.d/vsftpd start #開始
sudo /etc/init.d/vsftpd stop #關閉
sudo /etc/init.d/vsftpd restart #重啟
建立虛擬賬戶
1.安裝生成虛擬帳號資料庫工具db
sudo apt-get install db4.8-util
2. 更改vsftp.conf的配置
修改配置之前,先備份當前配置
sudo cp /etc/vsftp.conf /etc/vsftp.conf.old
配置的伺服器中 vsftpd.conf的引數使用如下:
listen=YES
#listen_ipv6=YES
anonymous_enable=NO //允許匿名使用者訪問,若禁止使用NO
local_enable=YES //允許本地使用者訪問,若禁止則使用NO
write_enable=YES //表示是否允許本地使用者有上傳許可權的,YES表示可以,NO表示禁止,也取決於客戶端連線時使用的客戶端工具
#local_umask=022 //設定本地使用者上傳建立檔案時的許可權掩碼
#anon_upload_enable=YES //匿名使用者上傳檔案使能
#anon_mkdir_write_enable=YES //匿名使用者可以建立目錄
dirmessage_enable=YES //使用者切換進入目錄時顯示.message(如果存在)檔案的內容
message_file=Welcome
xferlog_enable=YES //是否開啟傳輸日誌的
connect_from_port_20=YES ////連線控制埠為20
chown_uploads=YES
chown_username=ftp
chroot_local_user=YES //所有的本地使用者都被鎖定在家目錄下
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list
xferlog_file=/var/log/vsftpd.log
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. //login歡迎資訊
#deny_email_enable=YES
max_clients=10
max_per_ip=5
local_max_rate=256000
#hide_ids=YES
idle_session_timeout=3000
guest_enable=YES
guest_username=ftp
user_config_dir=/etc/vsftpd/vsftpd_user_conf
pam_service_name=vsftpd.vu
3. 建立各賬戶的home目錄
在/home目錄建立ftp的賬戶ftpdir目錄
cd /home/ftp/
sudo mkdir ftpdir
然後在ftpdir目錄下建立admin, tony目錄
cd ftpdir
sudo mkdir admin tony
4.為虛擬使用者建立本地系統使用者
虛擬使用者家目錄為/home/ftpdir, 使用者登入終端設為/bin/false(即使之不能登入系統)
sudo useradd ftp -d /home/ftpdir -s /bin/false
sudo chown -R ftp:ftp /home/ftpdir
5. 建立虛擬使用者資料庫
新建loguser.txt檔案,
sudo vi /home/loguser.txt
裡面輸入虛擬使用者名稱和密碼,格式如下
admin
admin
tony
tony
注意不要多空格和空行,其中奇數行為使用者名稱,偶數行為密碼。
最後一行需要回車(否則建立資料庫檔案時無法識別最後一行,導致報奇數行錯誤)。
新建一個資料夾/etc/vsftpd,放置配置檔案
sudo mkdir /etc/vsftpd
然後執行
sudo db4.8_load -T -t hash -f /home/loguser.txt /etc/vsftpd/vsftpd_login.db
最後設定一下資料庫檔案的訪問許可權
sudo chmod 600 /etc/vsftpd/vsftpd_login.db
6. 配置PAM檔案
新建/etc/pam.d/vsftpd.vu,並編輯,
sudo touch /etc/pam.d/vsftpd.vu
sudo vi /etc/pam.d/vsftpd.vu
輸入內容如下:
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
7.新建etc/vsftpd /vsftpd_user_conf資料夾
sudo mkdir /etc/vsftpd/vsftpd_user_conf
現在,我們要把各個使用者的配置檔案放到目錄/etc/vsftpd/vsftpd_user_conf中
cd /etc/vsftpd/vsftpd_user_conf
sudo touch admin tony
8. 配置admin虛擬使用者
許可權:上傳,下載刪除,重新命名.
sudo vi /etc/vsftpd/vsftpd_user_conf/admin
裡面新增
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/home/ftpdir
9. 配置tony虛擬使用者
許可權:上傳,下載
sudo vi /etc/vsftpd/vsftpd_user_conf/tony
裡面新增
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
local_root=/home/ftpdir/tony
10. 新建/etc/vsftpd/vsftpd.chroot_list
sudo touch /etc/vsftpd/vsftpd.chroot_list
sudo vi /etc/vsftpd/vsftpd.chroot_list
裡面新增
admin
在按照以上的過程去安裝,有可能Linux的資料來源裡面根本就找不到對應的安裝包,可以通過手動安裝的方法;網上找了篇db4的安裝問題,分享一下:1、下載安裝檔案:
2、dpkg - i db4.8-util_4.8.30-11ubuntu1_amd64.deb
即可
命令使用:這裡針對Vsftpd虛擬使用者的建立
sudo db4.8_load -T -t hash -f /home/user.txt /etc/vsftpd_login.db
當然也有命令安裝db的方法:
已解決了 sudo apt-get install db-util
在這又不得不來句粗口,尼瑪,之前找了那麼久的解決辦法,原來是沒有找對方法,網上一大堆也是無用的,有些方法更本用不了,回頭想想當你的知識積累起來了之後,你就會忽然想起來這問題的解決方法,自己都會被自己驚呆,當年這麼簡單的問題居然都不會,當年真是傻呆笨啊!
總結:知識積累是多麼地重要啊!