VSFTPD 的 FTP PAM 设置

VSFTPD 的 FTP PAM 设置

好的。我知道这是这里被问得最多的问题之一。但大多数答案要么告诉我将 nologin 添加到允许的 shell(不行……不这样做)要么禁用 SELinux(我没有 - Ubuntu Server 16.04 RPi3)。

另一个选项是看到将我的设置pam_service_name为。好吧,这有效!但后来我进一步了解到,这允许任何人登录,因为它只是绕过了 PAM 服务。所以我想,好吧,让我们在目录中ftp创建一个名为的文件并使用它。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,所以说实话我不知道自己在做什么。

我想要的设置是只允许具有nologinshell 的 unix 用户通过 进行身份验证vsftpd

问候

答案1

阅读了几篇文章后,我有点了解了 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

我得到了我需要的,即只有 UNIX 用户FTP分组暂无登录因为 shell 可以登录。

解释每行的作用:

  1. 如果 USER/etc/ftpusers file 然后 否定 别的 允许并转到下一个规则
  2. 如果 USERGROUP ftp 然后 允许并转到下一个规则别的 否定
  3. 如果 USERSHELL = /usr/sbin/nologin 然后 允许转到下一规则别的 否定
  4. 没有下一条规则:允许访问

所有规则基本上都是AND'ed当它们属于类型时必需的

我正在链接我所遵循的指南。我还使用了 PAM 的 Linux 手册页,但没有链接它们。

如有遗漏,请随时补充。这是我第一次使用 PAM,我认为我很喜欢这个功能。

问候!

DZONE.com 的 Linux-PAM 简易指南

相关内容