参考自:Allow user1 to “su - user2” without password

https://unix.stackexchange.com/questions/113754/allow-user1-to-su-user2-without-password

需求:

在user1用户下执行: su - user2 免密登录。

我的实验系统版本:

CentOS Linux release 7

方法:

# vim /etc/pam.d/su
#在pam_rootok.so那一行之后添加如下两行。
auth [success=ignore default=1] pam_succeed_if.so user = user2
auth sufficient pam_succeed_if.so use_uid user = user1

可以理解为:对于名为user2的账号,如果使用su程序的用户名为user1,即可以免密登录

PAM模块文档:

# less /usr/share/doc/pam-1.1.8/txts/README.pam_succeed_if

首先是 use_uid部分

    Evaluate conditions using the account of the user whose UID the application
is running under instead of the user being authenticated.

然后看fields格式

Available fields are user, uid, gid, shell, home, ruser, rhost, tty and service

field > number

    Field has a value numerically greater than number.

field in item:item:...

    Field is contained in the list of items separated by colons.

据此,还可以实现从user1免密su到uid 为某个范围的多个系统用户

实验:

[root@MyVm] 17:56:55 ~ # id user1
uid=1004(user1) gid=1004(user1) groups=1004(user1)
[root@MyVm] 17:56:59 ~ # id user2
uid=1005(user2) gid=1005(user2) groups=1005(user2)
[root@MyVm] 17:57:00 ~ # id user3
uid=1006(user3) gid=1006(user3) groups=1006(user3)

修改/etc/pam.d/su:

auth            [success=ignore default=1]      pam_succeed_if.so uid >= 1005
auth sufficient pam_succeed_if.so use_uid user = user1

可以理解为:对于UID>=1005的账号,如果使用su程序的用户名为user1,即可以免密登录

[root@MyVm] 17:57:49 ~ # su - user1
Last login: Thu Sep 3 17:55:47 CST 2020 on pts/1
[user1@MyVm] 17:57:50 ~ $ su - user2
[user2@MyVm] 17:57:52 ~ $ logout
[user1@MyVm] 17:57:53 ~ $ su - user3
Last login: Thu Sep 3 17:55:54 CST 2020 on pts/1
[user3@MyVm] 17:57:55 ~ $ logout

反之,允许多个账号su免密到某个(些)账号,可以配置为:

auth            [success=ignore default=1]      pam_succeed_if.so uid = 1001
auth sufficient pam_succeed_if.so use_uid uid > 1001

PAM模块资料:

https://www.cnblogs.com/kevingrace/p/8671964.html

找到这个方法之前,发现一种用利用把ssh免密加入到user1的 .bashrc 来实现自动跳转user2的方法,勉强满足需求,但是有点绕远,而且user1差不多是废了。

附:利用pam认证模块实现一个免密登陆后门
 
https://cloud.tencent.com/developer/article/1047280

使用PAM模块实现普通用户之间su免密切换的更多相关文章

  1. 多台linux主机之间建立免密通信

    多台linux主机之间设置免密通信 例:A 向 B设置免密通信 第一步 A生成密钥对 ssh-keygen -t rsa -t 指定秘钥的类型 rsa 秘钥类型 密钥目录:/root/.ssh/(如果 ...

  2. 【Linux】服务器之间的免密登录脚本

    在实际运维的过程中,经常需要用到免密登录,下面这个脚本实现服务器之间的免密登录,如下 比如,要实现A服务器与B.C.D服务器的免密登录,只需要将B.C.D服务器的IP地址写在serverlist.tx ...

  3. 非root用户的SSH免密登录

    在网上找到的教程一般是这样说的 cd ~/.ssh/ # 若没有该目录,请先执行一次ssh localhost ssh-keygen -t rsa # 会有提示,都按回车就可以 cat id_rsa. ...

  4. Linux主机之间ssh免密登录配置方法

    由于公司的生产环境有很多台Linux的CentOS服务器, 为了方便机子(假设两台机子A,B)互相之间免密ssh, scp命令操作,配置如下 1. 在A.B上分别创建本机的公钥和私钥,输入命令后连续三 ...

  5. 设置普通用户输入sudo,免密进入root账户

    满足给开发用户开权限,赋予sudo权限.又不让其输入密码的方式: 方式一: 开始系统内部的wheel用户组, 在/etc/suoers 中编辑配置文件如下: %wheel ALL=(ALL) NOPA ...

  6. linux 服务器之间配置免密登录

    客户机:172.16.1.2 远程机:172.16.1.3 1.远程机 a.允许root用户通过22端口登录 vi /etc/ssh/sshd_config PORT 22 PermitRootLog ...

  7. sudo:抱歉,您必须拥有一个终端来执行 sudo 解决办法;ssh执行sudo命令的方法;给用户增加sudo免密权限

    1.supervisor使用sudo执行命令的时候,报错 2.解决办法: 编辑 /etc/sudoers 文件,将Default requiretty注释掉. sudo vim /etc/sudoer ...

  8. Linux中配置主机之间的免密ssh登陆

    假如 A 要登陆 B在A上操作:1.首先生成密钥对 ssh-keygen (提示时,直接回车即可) 2.再将A自己的公钥拷贝并追加到B的授权列表文件authorized_keys中 ssh-copy- ...

  9. 吴裕雄--天生自然 HADOOP大数据分布式处理:使用XShell远程连接主机与服务器并配置它们之间SSH免密登录

随机推荐

  1. 4-让线程睡眠的sleep方法

    让线程睡眠的sleep方法 Thread类有一个静态的sleep方法,当一个执行中的线程调用了Thread的sleep方法,调用线程就会让出指定时间的执行权,也就是在这期间不参与CPU调度,但是该线程 ...

  2. oracle基础安全配置

    1.oracle中用户密码复杂度配置 1)查看参数 select limit from dba_profiles where resource_name='PASSWORD_VERIFY_FUNCTI ...

  3. Analysis Tools(分析工具)

    分析工具 1.叠加分析 # Process: 交集取反 arcpy.SymDiff_analysis("", "", 输出要素类, "ALL" ...

  4. sql提示1055 不让你group by

    是不是突然写好的sql语句 部署上去就 Expression #2 of SELECT list is not in GROUP BY clause and containsnonaggregated ...

  5. 题解 Children Trips

    题目传送门 Description 给出一个大小为 \(n\) 的边权全为 \(1,2\) 的带权树,有 \(q\) 此查询,每次给出 \(u,v,p\) ,问 \(u\to v\) 每次可以最多走边 ...

  6. 题解 [NOI2014]购票

    题目传送门 题目大意 有一个 \(n\) 个点的树,每个点有三个值 \(p_u,q_u,l_u\) ,现在可以从 \(u\) 走到点 \(v\) 当且仅当 \(v\) 是 \(u\) 的祖先并且 \( ...

  7. B - Ancient Cipher POJ - 2159 解题报告

    内容: Ancient Roman empire had a strong government system with various departments, including a secret ...

  8. 2021.1.28--vj补题

    B - B CodeForces - 994B 题内容: Unlike Knights of a Round Table, Knights of a Polygonal Table deprived ...

  9. djago后台管理页面

    from django.contrib import admin from blogtest.models import * #修改网页title和站点header.+ admin.site.site ...

  10. 平衡二叉树检查 牛客网 程序员面试金典 C++ Python

    平衡二叉树检查 牛客网 程序员面试金典 C++ Python 题目描述 实现一个函数,检查二叉树是否平衡,平衡的定义如下,对于树中的任意一个结点,其两颗子树的高度差不超过1. 给定指向树根结点的指针T ...