通常vsftp建立完成後會給一個特定的ftp使用者及群組,並在/etc/vsftpd.conf啟動chroot_local_user=YES這個選項把使用者困在自己的home資料夾內。

那如果今天要再增加新的ftp使用者呢?

1.先查詢現有的ftp使用者

~$ cat /etc/passwd

xxxftp1:x:1001:1001:xxxftp1,,,:/home/xxxftp1:/bin/bash
xxxftp2:x:1002:1002:xxxftp2,,,:/home/xxxftp2:/bin/bashCode language: JavaScript (javascript)

因為我想加入新的使用者,並讓他能訪問跟xxxftp2一樣的資料內容,所以我需要知道xxxftp2的1002群組名稱是什麼。

2.這時候可以查一下現有的群組名稱

~$ cat /etc/group

xxxftp1:x:1001:
xxxftp2:x:1002:

以上可以知道xxxftp2的群組名稱也是叫xxxftp2,他們的group id都是1002。

3.可以新增使用者了,使用useradd指令

  • -g指定新使用者要加入的group,我要他加入xxxftp2
  • -d指定使用者登入後的根目錄,這也要跟xxxftp2的根目錄一樣
  • -s指定使用者的預設shell,使用/sbin/nologin是我不讓這個使用者用ssh訪問
  • newftpuser是我這次要新增的使用者名稱
~$ sudo useradd -g xxxftp2 -d /home/xxxftp2 -s /sbin/nologin newftpuser

4.接著指定密碼給這個使用者,指令是passwd

~$ sudo passwd newftpuser

基本上這樣就完成了,但我一開始遇到問題,新使用者newftpuser一直連不上去(503 fail)。經過測試,我把新使用者的shell改成/bin/bash就可以正常連線ftp了,應該是shell的問題

~$ sudo usermod -s /bin/bash newftpuser  改用/bin/bash可以連ftp及ssh

後來找到原因出在我所指定的/sbin/nologin並不在/etc/shells的列表裡面。把他加進去,並把newftpuser的shell改回/sbin/nologin就可以正常連進ftp了。