Mar*_*ter 70 users password authentication pam
我需要允许用户martin
切换到martin-test
没有密码的用户
su - martin-test
Run Code Online (Sandbox Code Playgroud)
我认为这可以在/etc/pam.d/su
. 该文件中已经有一些可以取消注释的行。但是,我不喜欢将 user 添加martin
到 group的想法wheel
。我不希望给martin
任何更多的特权,而不是能够切换到martin-test
。我也不想用sudo
。
在保持用户权限martin
最小的情况下,最好的方法是什么?
GnP*_*GnP 76
pam_rootok.so
在您的行下方添加以下行/etc/pam.d/su
:
auth [success=ignore default=1] pam_succeed_if.so user = martin-test
auth sufficient pam_succeed_if.so use_uid user = martin
Run Code Online (Sandbox Code Playgroud)
这些行使用pam_succeed_if.so
模块执行检查。另请参阅Linux-PAM 配置文件语法以了解有关auth
行的更多信息。
martin-test
。如果没有发生(success=ignore
),我们可以在下一行继续检查当前用户。如果不是,将跳过下一行 ( default=1
),我们可以在后续行中继续执行通常的身份验证步骤。martin
,如果是,则系统认为身份验证过程成功并返回(sufficient
),如果不是,则没有任何反应,我们继续执行通常的身份验证步骤。您还可以限制su
为一个组,这里的组allowedpeople
可以su
没有密码:
auth sufficient pam_succeed_if.so use_uid user ingroup allowedpeople
Run Code Online (Sandbox Code Playgroud)
cha*_*aos 13
如果您不想更改组或使用sudo
,请使用调用的 pam 模块pam_exec
在 pam 阶段执行外部脚本。
在您/etc/pam.d/su
的pam_rootok.so
行后添加一行:
auth sufficient pam_exec.so quiet /path/to/script
Run Code Online (Sandbox Code Playgroud)
/path/to/script
具有权限 755 (rwxr-xr-x) 和以下内容:
auth sufficient pam_exec.so quiet /path/to/script
Run Code Online (Sandbox Code Playgroud)
因此,如果出现su
以下情况,此脚本将成功退出:
martin
和martin-test
.看:
martin@host:~$ su - martin-test
martin-test@host:~$ exit
martin@host:~$ su - otheruser
Password: ****
otheruser@host:~$
Run Code Online (Sandbox Code Playgroud)
小智 6
这可能是最好的办法。
su
不是要这样做 -sudo
是。
打开 /etc/sudoers.d/custom
并写入以下内容:
user-a ALL=(user-b:user-b) NOPASSWD:ALL
这意味着:每当 user-a 执行时sudo -u user-b
,让他离开而不询问密码。
其它的办法
youruserid ALL = (username) NOPASSWD: ALL
Run Code Online (Sandbox Code Playgroud)
与visudo
然后sudo -u username bash
就像su - username