Shell
VSFTPD 的 FTP PAM 設置
好的。我知道這是這裡被問到最多的問題之一。但大多數答案要麼告訴我向允許的 shell 添加 nologin(不……不這樣做)或禁用 SELinux(我沒有 - Ubuntu Server 16.04 RPi3)。
另一種選擇是看到將 my 設置
pam_service_name
為ftp
. 好吧,這行得通!但後來我進一步讀到這允許任何人登錄,因為它只是繞過 PAM 服務。所以我想好讓我們在目錄中創建一個名為ftp
的/etc/pam.d/
文件並使用它。我在文件中填寫了以下內容:
auth required /lib/arm-linux-gnueabihf/security/pam_nologin.so account required /lib/arm-linux-gnueabihf/security/pam_unix.so password required /lib/arm-linux-gnueabihf/security/pam_unix.so
我錯過了一些東西,我不知道是什麼。這是我第一次搞亂 PAM,老實說,我不知道自己在做什麼。
我想要的設置是只允許具有
nologin
shell 的 unix 使用者通過vsftpd
.問候
在閱讀了幾篇文章後,我有點了解 PAM 的工作原理。
中的文件
/etc/pam.d
基本上是使用該模組/服務時檢查的條件列表。因此,當我將文件的內容設置為/etc/pam.d/ftp
以下內容時:auth required pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed auth required pam_succeed_if.so quiet user ingroup ftp auth required pam_succeed_if.so quiet shell = /usr/sbin/nologin
我得到了我需要的東西,即只有在ftp組中使用nologin作為 shell 的 UNIX 使用者可以登錄。
解釋每一行的作用:
- IF
USER
在/etc/ftpusers file
THEN DENY ELSE ALLOW並轉到下一個規則- IF
USER
在GROUP ftp
THEN ALLOW和 GOTO 下一個 RULE ELSE DENY- IF
USER
’sSHELL = /usr/sbin/nologin
THEN ALLOW GOTO next RULE ELSE DENY- 沒有下一條規則:允許訪問
所有規則基本上都是REQUIRED
AND'ed
類型。我正在連結我遵循的指南。我還使用了 PAM 的 Linux 手冊頁,但沒有連結它們。
隨意添加我錯過的任何內容。這是我第一次使用 PAM,我想我喜歡這個功能。
問候!