问题标签 [pam]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - 使用 pam 设置用户密码
我有一个以 root 身份运行的 C 程序,并通过调用 pam_chauthtok 使用 PAM 设置用户密码。这可行,但它允许设置弱密码,并且不会保存用户更改自己的密码时将保存的密码历史记录。
有什么办法可以强制 pam 像我正在以我正在更改其密码的用户身份运行一样行事?
linux - 使用任何密码登录
我遇到了一个奇怪的问题,即我的服务器中的一个用户能够使用前八个字符与用户实际密码相同的任何密码登录。例如,如果用户的实际密码是abcdefgh
login withabcdefgh
作为密码,以及abcdefgh2002
orabcdefghijkl
成功,但不是 with 2001abcdefgh
。我正在使用带有影子文件的 PAM。所关注的用户在 /etc/shadow 文件中有他的密码哈希,但据我所知,它没有任何盐。
我用自己的账户试了一下,但没有成功登录。
pam - pam_exec 和安全
我真的很想pam_exec
在会话期间使用 PAM 模块进行一些帐户设置和拆卸活动。我编写了一个简单的测试脚本,它运行并记录一些运行时数据,以便我可以看到正在发生的事情。
在我看来,exec'd 脚本必须可由运行触发 PAM 的命令的任何人的有效 UID 执行。这是有道理的。但是,我希望在这个过程中更加安全。例如,在我看来,如果我有一个脚本可以在帐户登录/注销时将记录插入数据库,那么该脚本必须始终由所有用户执行。
我更希望脚本只能由 root 或其他一些特殊用途的帐户可见和可执行,并pam_exec
suid
为非特权用户提供脚本。
为什么?在数据库脚本的情况下,我不希望用户登录然后手动执行脚本以看似“注销”。
我曾考虑尝试将脚本放在“sudoers”文件中,但这仍然使任何人都可以随时运行它。
似乎唯一的选择是破解 pam_exec 以允许“运行方式”选项。
星期五下午很晚了,我可能错过了一些琐碎的事情。有没有更好的办法?
session - linux-PAM 会话是否与 linux 进程会话相同?
我们都知道 linux 系统调用 setsid() 允许我们在任何时候创建一个新的会话,虽然典型的做法是当我们登录或者当我们想要启动一个新的守护进程时。而且我注意到linux-PAM(可插入身份验证模块)也有“会话管理”的概念,所以我的问题是:Linux PAM中的会话与setsid()创建的会话相同吗?在 linux PAM 会话中通常可以做什么?谢谢。
java - PAM“pam_unix.so”身份验证有时会失败
我在使用 PAM 时遇到了一些问题。我有一个使用 PAM 进行身份验证的 tomcat webapp。在安装过程中,我们在 /etc/pam.d 中创建一个指向 /etc/pam.d/sshd 文件的符号链接。这一直有效。
最近我为用户添加了一种对每个请求进行身份验证的方法(而不是使用 JSESSIONID cookie)。添加此功能是因为我们需要定期将一些数据批量加载到监控应用程序中,并且使用 Basic Auth 很容易。
如果我反复卷曲我的 web 服务(比如每秒 10 次),那么每隔一段时间 PAM 就会失败。这种情况大约每 500 次发生一次,尽管我的客户声称它每两次发生一次(请注意,它们是远程运行的,尽管我不明白为什么这很重要)。
我已将我的符号链接 pam 配置替换为以下最小配置:
我也将此添加到我的 /etc/syslog.conf
可以在 debug.log 中找到唯一适用的日志消息:
我该如何进一步调试?我努力了:
- 使用不同的主机。一个是全新的安装
- 我已经关闭了 nscd 服务
python - PAM audit_log_acct_message() 失败:不允许操作 & 用户身份验证失败
在 auth.log 文件中使用 Ubuntu(13.04 开发分支)上的 pam_python 对 vsftpd 用户进行身份验证时,我收到此错误,
然后 vsftpd 在尝试连接时说密码错误。以下是 auth.log 文件的完整部分:
现在,这根本不正常,LOGIN: dev
当帐户dev
经过正确身份验证时输出,因此它应该对我进行身份验证(或者 python 脚本应该给出错误).. 这是来自另一台服务器的健康输出,具有完全相同的配置:
该服务器唯一不同的是,它运行的是不同的内核(它来自与平常不同的数据中心),内核通常是:
而我无法让 pam 工作的服务器上的内核是:
肯定有问题,但我可以在任何地方看到的唯一错误是audit_log_acct_message() failed
消息。
当直接尝试 python 脚本时,它也会输出成功:
这可能是什么原因造成的?我该如何修复它/绕过它?
linux - 了解 setuid 和 sudo
我试图了解 sudo 在 Linux 用户空间和 Linux 内核中的工作原理。从用户的角度来看,我对它不太感兴趣,但我更感兴趣的是从实现/内核的角度来理解它。(我已经讨论过将它放在 stackexchange 和超级用户上,但我认为这里是最好的。如果我做出错误的选择,请随意移动它......)
因此,当内核完成启动时,它会启动 init 进程,该进程的 uid 为 0。这可能会启动其他进程,例如 ssh 守护进程。这个新进程继承其父进程的 uid,例如 0。sshd 现在还启动子进程,每个连接一个。然后对尝试登录的用户进行身份验证,无论是通过 passwd 文件、影子文件、pam 等。一旦 sshd 通过它使用的任何方法对用户进行身份验证,它就会调用 setuid/seteuid 来更改进程uid。现在我的理解是一个程序只能从 root 到另一个用户,而不是从用户 x 到 root 或用户 x 到用户 y(对吗?)(使用 setuid 调用?)
因此,在这方面,内核实际上只知道分配给文件、进程等的 uid。对用户帐户的身份验证是在用户空间中控制的,并且只允许 root 程序放入非 root 程序中来保证安全。
所以我的问题是,如果上述内容正确,sudo 是如何工作的。我当前正在运行我的非 root 帐户的终端如何临时切换到 root 权限?它是否与 sudo 进程交互?如果以上是错误的,即使有一点我也很想知道我错在哪里。
c - rshd.c 源代码中缺少 pam_appl.h 和 pam_misc.h
我正在开发centOS 5.5 OS。
它显示 /security/pam_appl.h 和 /security/misc.h 文件丢失的错误。
实际上我的 rshd.c 没有加载 PAM 模块,可能是通过放置这个库,它可以帮助我很好地工作我的 rshd。这就是我发布这个问题的原因。
错误:-
我搜索了很多,但没有得到任何提供这些文件的有用 rpm。
一些链接在这里。但不适合centOS。
帮我。告诉我如何克服这个问题。
编辑 1
您的第三个链接似乎很有用。当我尝试安装 pam-devel 时,它显示了一些错误。
当我跑
它检查一些变量,然后生成目标文件,但最后它显示,
编辑第 2 号
当我按照您的命令进行操作时,最后会显示以下错误。
这个错误来了,当我跑 make && make install
linux - 使用 pam_exec 的 Linux 自定义身份验证
我在 hpw 上找不到使用 pam_exec 运行外部程序的示例,该程序将在用户登录时对其进行身份验证。
我的 pam.d 文件中有以下内容
我的脚本应该包含什么来允许或禁止身份验证?
python - python中是否有像PAM这样的模块?
我想在linux帐户的基础上做一个auth认证(就像PAM一样),这应该通过python来实现。还是我应该编写linux的加密算法,我的意思是每个发行版都拥有相同的加密方法?