在linux上要跨越網際網路和不是連線到同一個實體ip的電腦互傳資料就要用ftp server,vsftpd是linux招牌的ftp server

1.終端機輸入sudo apt install vsftpd,安裝vsftpd

vsftpd01

找到vsftpd.conf在哪個位置,終端機輸入sudo gedit /(vsftpd.conf所在位置)/vsftpd.conf,用記事本將它打開

vsftpd02

在全部原本有的欄位前面加一個#把它mark掉,在下面打上自己想要的設定

connect_from_port_20=YES/NO                                  是否用port20來傳輸資料,YES設定為用port20來傳輸,NO設定為不用port20來傳輸

listen_port=(自訂port號)                                               若不用port20來傳輸資料,可自訂想要的port

listen=YES/NO                                                             是否用stand alone模式啟動

use_localtime=YES/NO                                                vsftpd預設的時間是經度0°的格林威治時間,use_localtime可以設定是否用本地時間

write_enable=YES/NO                                                 是否可寫(針對所有類型使用者)

local_enable=YES/NO                                                 是否讓local使用者登入

local_mask=(權限代碼)                                                local使用者上傳的檔案要去掉的權限

connect_timeout=(秒數)                                               伺服器發出的連接訊號在多少秒內得不到client端的回應就強制斷線

data_connection_timeout=(秒數)                                 傳資料過程中因為線路問題導致多少秒內無法傳送就強制斷線

max_clients=(人數)                                                      限制同時登入的client數

local_max_rate=(速率)                                                 限制local使用者上傳的最大速率

chroot_local_user=YES/NO                                         是否要將local使用者活動範圍限制在各別的/home底下

allow_writeable_chroot=YES/NO                                 是否允許有write權限的local user家目錄做為chroot,若chroot_local_user=YES,這項必須要是YES,不然會出錯

anonymous_enable=YES/NO                                      是否anonymous使用者登入

anon_world_readable_only=YES/NO                          是否限定anonymous使用者唯讀

anon_other_write_enable=YES/NO                             是否anonymous使用者可寫

anon_mkdir_write_enable=YES/NO                            是否anonymous使用者可建目錄

anon_upload_enable=YES/NO                                    是否anonymous使用者可上傳資料

no_anon_password=YES/NO                                      是否不問anonymous使用者的email,讓anonymous使用者直接進入

anon_max_rate=(kb/s)                                                 限制anonymous使用者上傳的最大速率

anon_umask=(權限代碼)                                              anonymous使用者上傳的檔案要去掉的權限

anon_root=(路徑)                                                         指定anonymous使用者登入後可以看到的目錄

ascii_download_enable=YES/NO                                是否規定client用 ASCII 格式下載檔案,與安全有關

ascii_upload_enable=YES/NO                                     是否規定client用 ASCII 格式上傳檔案,與安全有關

one_process_model=YES/NO                                     是否給每個連線一個process

tcp_wrappers=YES/NO                                                是否開啟TCP防火牆

xferlog_enable=YES/NO                                              是否紀錄上傳下載歷史

xferlog_file=(路徑/檔名)                                                指定上傳下載歷史要紀錄在哪個檔案

dual_log_enable=YES/NO                                           是否同時開啟syslog和xferlog紀錄

utf8_filesystem=YES/NO                                              是否啟用utf8編碼

2019-11-16 22-15-27 的螢幕擷圖.png

 

※使用者有分local、guest、anonymous

local必須在伺服器電腦系統上有建一個使用者帳號,vsftpd才能用此帳號登入local,而登入的密碼即是此使用者在伺服器電腦上的使用者登入密碼,登入後可以看到在伺服器電腦上自己的/home目錄,但不能跑到其他使用者的/home,例如wilson和jsiruw在伺服器電腦上都有自己的系統使用者帳號,在伺服器電腦上就會有2個home,一個是/home/wilson,另一個是/home/jsiruw,wilson在電腦上的使用者密碼是875439974,jsiruw是133486257,那麼wilson要用密碼875439974登入ftp,可以存取的範圍是/home/wilson,jsiruw要用密碼133486257登入ftp,可以存取的範圍是/home/jsiruw

guest又稱虛擬帳號,要依附在local帳號,且設定與pam有關,很少在使用

anonymous是可以不須帳號密碼登入的,但其可活動的範圍是anon_root所指定的位置,其他位置都看不到

※要設定local使用者只要設定系統上的使用者就可以了

增加使用者的指令是sudo useradd (參數1) (設定1) (參數2) (設定2) ····· (使用者名稱)

刪除使用者的指令是sudo userdel -r (使用者名稱),有加-r會連該使用者的家目錄一起刪掉

設定已存在使用者的密碼的指令是sudo passwd (使用者名稱)

useradd指令的參數簡介

-G:指定這個新增加的user屬於哪些群組,法為-G (群組1),(群組2),····· 

-m:為新增的user建一個家目錄

-M:不建立新增的user的家目錄

-d:指定某個目錄為新user的家目錄,用法為-d /(目錄位置)

-p:設定新使用者的密碼,用法為-p (密碼)

例如我要建一個名為A的使用者,密碼為85749360,家目錄位置為/home/wiru/share,屬於群組wgegwe和rhwgef

指令為sudo useradd -p 85749360 -d /home/wiru/share -G wgegwe,rhwgef A 

新增後就可以從遠端用A這個local user帳號登入,登入密碼是85749360,登入後會進到/home/wiru/share這個目錄

如果要為使用者建立裡面有下載、音樂、圖片等資料夾的家目錄,指令是sudo useradd -m -d /(要建家目錄的目錄位置)/(家目錄名稱) (使用者名稱)

如果要刪除這個使用者,用sudo userdel -r A

如果要讓自己以外的local user可以連線,一定要在vsftpd.conf加上pam_service_name=ftp這句

※linux權限代碼

可寫(writable):2

可讀(readable):4

可執行(executable):1

用三者相加的值來設定權限

只可寫=2

可讀=4

可執行=1

可寫+可讀+可執行=7

可寫+可讀=6

可讀+可執行=5

可寫+可執行=3

寫、執行都不可=0

百位數設定擁有者權限,十位數設定群組權限,個位數設定其他使用者權限

例如741代表擁有者可寫可讀可執行,群組可讀,其他使用者可執行

2016-09-17 03-09-34 的螢幕擷圖  

※umask指的是要拿掉的權限,例如umask設成127代表要拿掉擁有者的執行權限,拿掉群組的寫權限,拿掉其他使用者的讀執行權限,和一般的權限設定是相反的

2.用sudo權限打開xferlog_file指定的路徑,在裡面建一個文字檔,檔名是xferlog_file設定的檔名,用來紀錄所有上傳下載資料的

vsftpd04

 

因為新版的vsftpd規定anon_root所設定的路徑權限必須是不可寫的,不然伺服器無法運作

所以,先在anon_root所設定的路徑建一個資料夾

vsftpd05

打開終端機,輸入sudo chmod o+w /(anon_root所設定的路徑)/(資料夾名稱),設定此資料夾的權限,讓anonymous使用者可以在此資料夾內存取

vsftpd06

再輸入sudo chmod a-w /(anon_root所設定的路徑),將anon_root所設定的路徑權限設為不可寫

vsftpd07

如果chroot_local_user設定為YES,local使用者的家目錄必須要是不可寫的,不然會無法登入,這也是新版的規定,但home不可寫會讓重要的IceLockAuthfile無法讀取,導致以後登入該使用者後沒多久就登出的bug

所以在vsftpd.conf加入一行allow_writeable_chroot=YES就可以了(是writeable沒錯,vsftpd的創造者筆誤)

2016-09-19 04-34-25 的螢幕擷圖  

3.到你的電信公司申請一組固定ip,如果是hinet到這裡申請

vsftpd9-1

vsftpd9-2

輸入hinet的帳號密碼

vsftpd9-3

之後按照指示申請即可

4.設定方式有兩種,一種是將固定ip設定在路由器上,用NAT穿透到電腦,另一種是直接將固定ip設定在電腦上,建議直接設定在電腦上

終端機輸入sudo pppoeconf

vsftpd10

點選〈是〉

vsftpd11

輸入你的hinet帳號,後面加@ip.hinet.net,記得加ip

vsftpd12

輸入你的hinet密碼

vsftpd13

點選〈是〉

vsftpd14

隨個人設定

vsftpd15

點選〈是〉

vsftpd16

點選〈是〉

vsftpd17

點選〈確定〉

vsftpd18

5.輸入sudo /etc/init.d/vsftpd start,啟動伺服器

vsftpd08

輸入netstat -tulpn | grep :(port號),可以檢查有沒有正常運作

vsftpd19

輸入ftp (固定ip),可以連上伺服器,可以檢查有沒有錯誤

vsftpd20

輸入sudo /etc/init.d/vsftpd restart,可以重新啟動伺服器

vsftpd09    

6.client端是windows,在檔案總管上方路徑欄輸入ftp://(伺服器固定ip),就可以連線

   client端是linux,在終端機輸入ftp (伺服器固定ip),就可以連線      

   另外也可以用一些軟體連線

arrow
arrow

    Wilson 發表在 痞客邦 留言(0) 人氣()