1. 程式人生 > >記一次搭建ftp伺服器

記一次搭建ftp伺服器

今天早上剛到公司,老大給了個任務,需要在阿里雲上搭建一臺Ftp伺服器。接到任務的時候,心裡想著,一臺ftp伺服器而已,上學期間就有搭過了~ so easy ~。But … 因為搭建的環境不一樣,還是遇到了一些坑,最後還是順利解決了。下面整理一下思路~

環境介紹:
作業系統:
Linux version 3.13.0-128-generic ([email protected]) (gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3) ) #177-Ubuntu SMP Tue Aug 8 11:40:23 UTC 2017

軟體下載:

[email protected]:~# apt-get update #更新apt-get資源列表
[email protected]:~# apt-get install vsftpd  #下載vsftpd
[email protected]:~# service vsftpd status  #檢視當前vsftp的狀態
vsftpd start/running, process 3045

好啦~ vsftp已經下載好啦,是不是賊簡單~ 嘿嘿,下來我們就要來建立使用者了

`[email protected]:~# useradd -s /sbin/nologin -md /home/ftp_test ftp_test`

到了這一步使用者就建立成功了。如果和我一樣菜的人看到這裡或許會問,你這useradd 和adduser 的差別在哪裡呢??? 還有你useradd後面那一串到底是個啥子東西喲?
彆著急,嘿嘿,這裡讓我們來一起分析一下:

首先,我們來討論一下adduser和useradd有什麼差別?

useradd在使用該命令建立使用者是不會在/home下自動建立與使用者名稱同名的使用者目錄,而且不會自動選擇shell版本,也沒有設定密碼,那麼這個使用者是不能登入的,需要使用passwd命令修改密碼。

那adduser呢?

adduser在使用該命令建立使用者是會在/home下自動建立與使用者名稱同名的使用者目錄,系統shell版本,會在建立時會提示輸入密碼,更加友好。

Ok,那會兒我看到兩條基本上就瞭解了~ 這兩者的區別應該就是會不會自動建立家目錄和shell版本的差別了吧~ 但是,還有點問題啊,那就是 -s /sbin/nologin和-d /home/ftp_test 又是啥意思喲?講到這裡,嘿嘿,我也不懂。走,咱們繼續百度去~
好了,我回來了~ 百度的結果是這樣的

-s是指定使用者登入後所使用的shell,預設的/bin/bash
-m 建立家目錄
-d是指定使用者登入後的主目錄

更多詳情,請檢視https://www.cnblogs.com/irisrain/p/4324593.html

Ok,理解了,那/sbin/nologin又是什麼意思呢,字面意思倒是懂了~ 但實際意思是?
沒錯,這就是你理解的字面意思,就是不讓你登入唄~ 但是不讓你登入並不代表你無法使用伺服器的資源,它只是不會讓你登入主機而已~ 當然,如果你擔心使用者在遇到This account is currently not available. 一臉懵逼時,你也可以在/etc/nologin.txt編輯你的警告詞~
現在讓我們來使用ftp_user登入看看~ oh,出現新問題了~

命令:	USER ftp_test
響應:	331 Please specify the password.
命令:	PASS ***********
響應:	530 Login incorrect.
錯誤:	嚴重錯誤: 無法連線到伺服器

530 ~ 這個錯誤我找了下他們說是因為賬號密碼錯誤的原因,但是我重新改了密碼再重新嘗試登入也不可以。經過google,在/etc/shells後添加了/sbin/nologin 就可以登入了。

Ok,基礎登入已經完成了~
然後我發現~ 這樣的話好像該伺服器的全部檔案都可以訪問呀?那還要家目錄幹嘛?那還要ftp幹嘛?不如直接root賬號給你得了。。不行,咱們要改。
首先,改這個東西肯定得從配置入手了吧,但是第一次搭建,肯定要先去百度一下vsftp的配置語句吧~ 說走就走~
https://blog.csdn.net/liwb94/article/details/80090082
最後,其實只要新增下面這兩句就可以了 ~

allow_writeable_chroot=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/vsftpd_allow_list

然後在/etc/vsftpd 新增vsftpd_allow_list 進入vsftpd_allow_list
中插入ftp_test,表示我們允許通過的使用者名稱ftp_test

加好了沒~ 我們去試試效果~

先重啟service vsftpd restart

Ok ~ 測試成功~
Ok,再試試拉去資料夾和新建資料夾~
拉檔案沒有問題,可是新建資料夾和上傳檔案就會出現

命令:	STOR 新建文字文件.txt
響應:	550 Permission denied.

許可權的問題,ok,我們去看看配置,
write_enable=YES #把這個開啟試試

測試結果,可以了~!!

嘿嘿,現在的結果就是基本功能可以實現了~ 當前使用者只能在指定的家目錄活動~ 無法瀏覽其他目錄~ 如果你不想讓該使用者登入的話,就不要把該賬戶新增到/etc/vsftpd/vsftpd_allow_list中去就 可以啦~
當然,在這次實驗中我還沒有做一些安全相關的配置,可以根據個人實際情況去配置:例如:禁止匿名使用者登入anonymous_enable = NO