我正在使用 Fedora 19。默认情况下,它使用 pam 进行设置以禁用错误密码,例如“密码”。这很好。试图更改此默认设置令人气愤。这是一个用于测试内部东西的盒子,没有连接到互联网,也没有连接到任何机器。错误的密码有助于测试过程。或者,你到底是怎么改变密码要求的??
man pam_cracklib
有一些很好的例子来设置不同的密码要求。所以我打开/etc/pam.d/system-auth
,在那里你会看到如下几行:
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
password requisite pam_pwquality.so try_first_pass retry=3 authtok_type=
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password required pam_deny.so
Run Code Online (Sandbox Code Playgroud)
*办公桌*。根据我的经验,这样的警告意味着每次包管理器运行和/或随机运行时,您的更改都会被擦除。
所以……authconfig
是下一步。我查找所有名为“authconfig”的文件。/etc/sysconfig/authconfig
看起来很有希望。而且,顶部没有关于一时兴起破坏我的编辑的警告。我找到这条线USEPWQUALITY=yes
并改变它。现在我运行:
# authconfig --test
<snip>
pam_pwquality is enabled (try_first_pass retry=3 authtok_type=)
<snip>
Run Code Online (Sandbox Code Playgroud)
卧槽 所以让我们man authconfig
仔细阅读一下。哦!看起来authconfig没有读取该文件,它已更改。那么....你如何配置authconfig?手册建议system-config-authentication
,我安装它并且不提供任何类似于禁用 pam_pwquality …
我想将 vsftpd 与虚拟用户和 pam_pwdfile.so 一起使用。我安装了 vsftpd 并通过 htpasswd 添加了两个用户(ramon 和 Dragon)到我的文件 /etc/vsftpd.passwd。/etc/pam.d/vsftpd 配置为使用此文件。
auth required pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
auth required pam_pwdfile.so pwdfile /etc/vsftpd.passwd
account required pam_permit.so
@include common-account
@include common-session
Run Code Online (Sandbox Code Playgroud)
用户“ramon”也可以在/etc/passwd
. 使用用户“ramon”登录到 ftp 可以正常工作。但是使用“dragon”登录不会:/结果总是
Login failed: 530 Login incorrect.
Run Code Online (Sandbox Code Playgroud)
由于我可能犯了一个错误,因此我尝试了/usr/share/doc/vsftpd/examples/VIRTUAL_USERS/README
. 仍然没有运气。我可以使用用户“ramon”登录,但不能使用用户“dragon”登录。
有任何想法吗?
我的 /var/log/lastlog 文件很大。我知道它实际上只有几千字节,但 tar 不够聪明,无法知道这一点,所以当我对虚拟机进行映像时,我的还原失败,因为它认为我正在尝试加载比磁盘容量更多的数据。
我想删除 /var/log/lastlog 并停止对文件的任何和所有日志记录。我知道安全隐患。此日志记录需要停止以保留我的备份策略。
我对 /etc/pam.d/login 进行了更改,有人告诉我将禁用日志记录到 /var/log/lastlog,但它似乎不起作用,因为 /var/log/lastlog 不断增长。
# Prints the last login info upon succesful login
# (Replaces the `LASTLOG_ENAB' option from login.defs)
#session optional pam_lastlog.so
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
编辑
对于任何感兴趣的人,我使用 Centrify Express 通过 LDAP 对我的用户进行身份验证。Centrify Express 是“免费的”,但缺点之一是我无法通过 LDAP 管理用户 UID,因此当他们登录到服务器时会获得动态 UID。Centrify 选择了一些疯狂的高 UID 值(因此它们大概不会与服务器上的本地用户发生冲突)。/var/log/lastlog 由 UID 索引,并增长以适应系统上最大的 UID。这意味着当 Centrify 用户登录时,他们会得到一个 UID 范围上限的 UID,这会导致 lastlog 根据文件系统分配大量的空间。
~$ ll /var/log/lastlog
-rw-rw-r-- 1 root root 291487675780 Apr 10 16:37 /var/log/lastlog
~$ du -h /var/log/lastlog
20K /var/log/lastlog
Run Code Online (Sandbox Code Playgroud)
更多进入---> …
1) 我有一个可以工作的 LDAP 服务器,我已经确认它可以与 LDAP 客户端一起使用,通过 jumpbox 在 ec2 上运行。
2)我已经运行 authconfig 来设置基于 ldap 的身份验证,以指向服务器:
authconfig --useshadow --enablesssd --enablesssdauth --enablesssdauth --passalgo=sha512 --enableldap --ldapserver=my.ldap.server --ldapbasedn='ou=users,o=Directory' --enablecachecreds --enablelocauthorize --update --enableldapauth
Run Code Online (Sandbox Code Playgroud)
3) 但是,LDAP 登录失败:
[root@m2 ~]# su bsmith su: 用户 bsmith 不存在
为了调试,我尝试验证尽可能多的 ldap 组件。这是来自我的客户端机器的一些数据:
1) 我的 /etc/nsswitch.conf 列表中似乎有 ldap:
passwd: files sss ldap
shadow: files sss ldap
group: files sss ldap
Run Code Online (Sandbox Code Playgroud)
2)另外,我检查了/etc/pam_ldap.conf,最后似乎有正确的内容:
# SASL mechanism for PAM authentication - use is experimental
# at present and does not support password policy control …
Run Code Online (Sandbox Code Playgroud) 我想知道为什么我们需要required
inPAM
当我们有requisite
. 我知道 required 将允许继续通过auth
堆栈,但无论如何最终身份验证过程都会失败。那么为什么不简单地使用requisite
呢?
这可能是出于安全原因吗?或者还有什么我想念的吗?在那种情况下,让我们把问题requisite
反过来说,我们什么时候需要而不是required
?
我在 Ubuntu 上遇到了一个小问题,任何需要 root 权限的命令的执行时间都比正常情况长。在检查我的情况后,我设法确定了原因的罪魁祸首/var/log/auth.log
,我相信这与krb5 PAM
身份验证有关。
不久前,我最近安装了 SLiM,这是一个适用于 Ubuntu 的简单登录管理器,它需要使用 PAM 来验证从主登录屏幕登录到用户帐户的身份。我只是想弄清楚我如何只对主登录屏幕而不是整个系统进行 PAM 身份验证,因为每当我想sudo
从终端运行或出现身份验证对话框让我输入密码时,它最多需要 1 -2 分钟只是为了验证给定的命令或任务。
是否有任何特定的pam_krb5
包我可以安全地删除,我真的不需要修复这个或......?
这是我的身份验证日志中的一点粘贴。
1 月 31 日 15:43:59 VAIO polkit-agent-helper-1[26330]:pam_krb5(polkit-1:auth):身份验证失败;日志名=alkaris uid=1000 euid=0 tty= ruser=alkaris rhost=
1 月 31 日 15:44:00 VAIO polkit-agent-helper-1[26330]:pam_ecryptfs:pam_sm_authenticate:/home/alkaris 已经安装
1 月 31 日 15:48:42 VAIO sudo:pam_krb5(sudo:auth):身份验证失败;日志名=alkaris uid=1000 euid=0 tty=/dev/pts/4 ruser=alkaris rhost=
1 月 31 日 15:48:43 VAIO sudo:pam_unix(sudo:session):由 alkaris(uid=0) 为用户 root 打开的会话
1 月 31 日 15:51:43 VAIO sudo:pam_unix(sudo:session):用户 root 的会话已关闭
1 …
我有一个带 PAM 的默认 SSSD 配置。我可以作为任何 LDAP 用户正常登录。但是,当我在服务器上创建本地用户时:
adduser test1
passwd test1
Run Code Online (Sandbox Code Playgroud)
然后尝试以该用户身份登录我收到以下错误:
pam_sss(sshd:account): Access denied for user test1: 10 (User not known to the underlying authentication module)
Run Code Online (Sandbox Code Playgroud)
我的/etc/nsswitch.conf
是这样的:
passwd: files sss
shadow: files sss
group: files sss
#hosts: db files nisplus nis dns
hosts: files dns
bootparams: nisplus [NOTFOUND=return] files
ethers: files
netmasks: files
networks: files
protocols: files
rpc: files
services: files sss
netgroup: files sss
publickey: nisplus
automount: files ldap
aliases: files nisplus
sudoers: files sss
Run Code Online (Sandbox Code Playgroud)
现在 …
如何将我的 shell 更改为安装在我的主目录中的 shell?我在我的主目录中安装了一个新的 zsh,它被选中:
>> which zsh
>> /home/myname/bin/zsh
Run Code Online (Sandbox Code Playgroud)
它没有在 /etc/shells 中列出(也不会,因为我没有权限),那么我该如何安装呢?
chsh -s $(which zsh) myname
Changing shell for myname
Password:
chsh: "/home/myname/bin/zsh" is not listed in /etc/shells
chsh: use -l option to see list
Run Code Online (Sandbox Code Playgroud) 如何防止用户更改密码?如有必要,我仍然希望能够以 root 身份更改密码,但要防止用户更改密码。
我已将 yubikey pam 模块添加到我的 sudo pam 配置中,我喜欢结果 \xe2\x80\x94 没有人可以在没有 yubikey 的情况下通过 sudo 或 su 获得超级用户访问权限。
\n\n抛开这对于个人计算机来说可能过于安全这一事实,我正在尝试找出如何要求 yubikey 来进行 gnome 管理员升级密码请求,但我不想用它来登录/解锁屏幕,只是为了获得管理员访问权限。
\n\n然而,当我查看 pam 模块时,我看到gdm-password
并且login
(当然还有其他模块),这两个模块似乎都不适合我想做的事情。
是否有可能做到这一点?如果是这样,我需要更改哪个 pam 模块?
\n\n我使用的是 Ubuntu 18.04,gnome-shell 3.28.1,内核版本 4.15.0-23-generic
\n我们正在使用 PAM 与外部半径服务器进行身份验证。我们在 /etc/pam.d/common-auth 中有以下行
auth [success=6 default=ignore] pam_exec.so 暴露_authtok /home/cliuser/radiusAuth.sh
PAM 将密码写入脚本的 stdin 并提供用户名作为环境变量。
这一直工作到 libpam-modules 版本 1.1.1-6.1。升级到 1.1.3-7.1 后,当我尝试在脚本中读取时密码为空。我们使用 open-ssh 作为我们的 ssh 服务器。
谢谢,普拉桑斯
我的 Linux 配置为使用sha512
. 然而,该/etc/shadow
文件仅包含 99 个字符的散列密码。为什么是 99 而不是 129 (64*2+1)?请注意,在确保系统设置为使用 sha512 后,我更改了密码。
请参阅输出:
# grep sha512 /etc/pam.d/system-auth-ac
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok
# grep ENCRYPT_METHOD /etc/login.defs
ENCRYPT_METHOD SHA512
# grep root /etc/shadow
root:$6$YwkRWeVN$z4Z7OKuohyyT/4gZgnOkKSWPaMvx1eCHFGNCiyFZx1QYydrEArO.HdH2JGCfosXg0sTnZFFdJnfw5QgfUqovO1:16175:0:99999:7:::
Run Code Online (Sandbox Code Playgroud)
请注意,密码哈希从开始,$6$
所以它表示它是sha512
哈希。