前往
大廳
主題

透過FTP傳輸檔案至ubuntu server:vsftpd安裝設定

皓月當空 | 2023-03-08 14:09:52 | 巴幣 0 | 人氣 875

  OS:ubuntu server 22.04.1

vsftpd安裝:
  apt install vsftpd

設定vsftpd.conf:
  基本確認下面的設定,將註解的#字號去掉,大致就夠了,其他的再依需求調整。

use_localtime=YES
dirmessage_enable=YES
connect_from_port_20=YES
xferlog_enable=YES
xferlog_std_format=YES
pam_service_name=vsftpd
tcp_wrappers=YES
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
userlist_enable=YES

  anonymous_enable是能否允許匿名登入。我是設NO。
  local_enable設定/etc/passwd檔案內的帳號,也就是本機帳號能否登入。
  write_enable設定能否寫入。與檔案、資料夾權限無關,是指能否透過FTP上傳檔案。
  local_umask是設定上傳檔案及資料夾的權限遮罩,格式就是三個身分的rwx權限,預設值是077。預設值的設定表示群組及其他人的所有權限都會被刪掉;而設022則是去掉群組及其他人寫入(修改)的權限,但能讀取及執行。

  因為我要透過FTP上傳網頁的檔案到伺服器,所以需考慮兩個動作的權限,一是FTP登入後是否限制在各人的home目錄活動;二是是否有放置網頁檔案資料夾的存取權限。

  首先設定FTP活動目錄的權限為以下三個:

  chroot_local_user=YES
  限制使用者活動範圍在自己的home目錄內

  chroot_list_enable=NO
  啟用限制使用者活動範圍的清單

  chroot_list_file=/etc/vsftpd.chroot_list
  限制使用者活動範圍清單檔案的位置

  如果要將所有FTP使用者限制在自己的home目錄,就設定chroot_local_user即可。但如果要讓部分人在使用FTP時能夠到不同資料夾,那麼就用chroot_list_enable及chroot_list_file這兩個設定來搭配。

  接著檢視放置網頁檔案資料夾的存取權限。預設該資料夾的擁有者及群組都是root。我使用者的帳號屬於root,但群組的權限是5,無法寫入。所以這邊有兩個辦法一是將資料夾的擁有者改為自己的帳號;二是將群組的權限改為7。這邊就依需求自己進行修改。

相關指令:

將使用者加入群組中
useradd-g gruop_name user_name

變更資料夾擁有者
chown user_name dir_name

變更資料夾擁有者及所屬群組
chown user_name:gruop_name dir_name

變更資料夾所屬群組
chown :gruop_name dir_name

創作回應

蘇澈_Zero
請問write_enable已經設為YES,且創建的其他使用者都有賦予write+read的權限,卻還是在上傳資料至伺服端時顯示550:permission denied,有解嗎?
2023-08-29 15:48:27
皓月當空
vsftpd重啟看看。還是不行的話要檢查資料夾的屬性跟使用者權限的問題。先把資料夾的rwx屬性都打開試試。因為linux資料夾的x屬性不是執行,是進入該目錄的權限。
2023-08-30 11:13:06
蘇澈_Zero
是指檔案裏面的local_umask改成777嗎?
2023-08-30 14:09:03
皓月當空
"資料夾"的屬性
2023-08-30 14:42:35

更多創作