OpenLDAP篇-OpenLDAP集成Linux系统02

02 OpenLDAP集成Linux系统

1、OpenLDAP如何对接Linux系统

1.1 集成Linux系统介绍

在多台 Linux 主机环境中,⽤户管理是⼀项⽐较重复性的⼯作。但是我们可以通过 OpenLDAP来实现⽤户和组的集中式管理,从⽽减少重复性操作,并提升管理效率。具体表现为以下两个⽅⾯:

  • 1、统⼀⽤户认证:所有 Linux 主机通过 LDAP 进⾏⽤户认证,这样⽤户可以直接登录多台主机,⽆需在每台系统上单独创建账户。
  • 2、集中管理⽤户和组:在 LDAP 中集中管理⽤户和组信息,这样就⽆需在每台 Linux 主机上⼿动维护⽤户配置,从⽽⼤幅提升管理效率,减少重复操作。

1.2 集成Linux注意事项

OpenLDAP 在与 Linux 系统集成时,默认的 LDAP 协议使⽤明⽂传输数据(包括⽤户名和密码),会有以下安全隐患:

  • 1、未经加密的 LDAP 通信可能被中间⼈攻击拦截,导致⽤户名和密码被窃取。
  • 2、像 RockyLinux、Ubuntu 等系统,默认都需要配置证书以验证服务器身份,如果未配置证书,客户端可能⽆法完成认证,从⽽导致通过SSH登陆系统时出现 Permission denied 权限拒绝。

因此,为了确保能成功的集成Linux系统,我们需要为OpenLDAP配置 TLS 证书。

2、配置OpenLDAP的TLS

2.1 创建TLS证书⽂件

1、 使⽤ openssl 命令⽣成 TLS 证书⽂件,并在证书⽣成过程中通过 subjectAltName 指定服务器的域名或 IP 地址,以便客户端在连接时能能通过对应的域名或者IP地址来验证证书的合法性。

openssl req -x509 -nodes -days 3650 \
-newkey rsa:2048 \
-keyout /etc/openldap/certs/ldapserver.key \
-out /etc/openldap/certs/ldapserver.crt \
-subj "/C=CN/ST=Beijing/L=Beijing/O=oldxu/OU=edu/CN=openldap.oldxu.net" \
-addext "subjectAltName=DNS:openldap.oldxu.net,DNS:ldap-master01.oldxu.net,DNS:ldap-master02.oldxu.net,DNS:ldap-vip.oldxu.net,DNS:ldap-ha.oldxu.net,IP:10.0.0.31,IP:10.0.0.32,IP:10.0.0.33,IP:10.0.0.99"

2、 使⽤ OpenSSL 查看证书内容,确保指定的域名或 IP 地址已成功添加到 subjectAltName 字段中。

[root@k8s-master31 ~]# openssl x509 -in /etc/openldap/certs/ldapserver.crt -noout -text | grep -A1 "Subject Alternative Name"
            X509v3 Subject Alternative Name:
                DNS:openldap.oldxu.net, DNS:ldap-master01.oldxu.net, DNS:ldap-master02.oldxu.net, DNS:ldap-vip.oldxu.net, DNS:ldap-ha.oldxu.net, IP Address:10.0.0.31, IP Address:10.0.0.32, IP Address:10.0.0.33, IP Address:10.0.0.99

3、最后将⽣成的 TLS 证书,所属⽤户和组都修改为ldap⽤户,以便 LDAP 能正常访问这些证书⽂件。

[root@k8s-master31 ~]# chown ldap:ldap /etc/openldap/certs/{ldapserver.crt,ldapserver.key}
[root@k8s-master31 ~]# ll /etc/openldap/certs/
总用量 8
-rw-r--r-- 1 ldap ldap 1554  2月  5 20:23 ldapserver.crt
-rw------- 1 ldap ldap 1708  2月  5 20:23 ldapserver.key
[root@k8s-master31 ~]#

2.2 配置OpenLDAP的TLS

1、将TLS证书相关⽂件应⽤到OpenLDAP的配置中。

[root@k8s-master31 ~]# ldapadd -Y EXTERNAL -H ldapi:/// <<EOF
> dn: cn=config
> changetype: modify
> add: olcTLSCACertificateFile
> olcTLSCACertificateFile: /etc/openldap/certs/ldapserver.crt
> EOF
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"

[root@k8s-master31 ~]# ldapadd -Y EXTERNAL -H ldapi:/// <<EOF
dn: cn=config
changetype: modify
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/openldap/certs/ldapserver.crt
-
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/openldap/certs/ldapserver.key
EOF
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"

2、检查配置是否加载成功

[root@k8s-master31 ~]# cat /etc/openldap/slapd.d/cn\=config.ldif | grep TLS
olcTLSCACertificateFile: /etc/openldap/certs/ldapserver.crt
olcTLSCertificateFile: /etc/openldap/certs/ldapserver.crt
olcTLSCertificateKeyFile: /etc/openldap/certs/ldapserver.key

2.3 验证TLS是否配置成功

1、编辑客户端配置⽂件

[root@k8s-master31 ~]# vim /etc/openldap/ldap.conf
BASE    dc=oldxu,dc=net
URI     ldap://ldap-master01.oldxu.net/
TLS_CACERT /etc/openldap/certs/ldapserver.crt
TLS_REQCERT demand # 强制验证证书,如证书⽆效或不匹配,则拒绝连接。(推荐)
# TLS_REQCERT never # 不验证服务器证书,忽略⼀切证书错误

2、输⼊以下命令验证是否在 OpenLDAP 服务器上启⽤了 LDAPS。参数“-ZZ”将强制升级为 LDAPS 进⾏连接。

[root@k8s-master31 ~]# ldapsearch -x -b dc=oldxu,dc=net -ZZ
# extended LDIF
#
# LDAPv3
# base <dc=oldxu,dc=net> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# oldxu.net
dn: dc=oldxu,dc=net
objectClass: dcObject
objectClass: organization
o: oldxu.net
dc: oldxu

# dev, oldxu.net
dn: ou=dev,dc=oldxu,dc=net
objectClass: organizationalUnit
objectClass: top
ou: dev

3、配置Linux系统接⼊OpenLDAP

客户端上操作

3.1 安装SSSD客户端⼯具

1、为了让Linux系统与 OpenLDAP 对接,需要安装如下客户端⼯具。

  • 1、 sssd :提供身份认证服务,负责将 LDAP ⽤户信息整合到系统中。
  • 2、 nss-pam-ldapd :让系统能够使⽤ LDAP 作为身份认证源。
  • 3、 authconfig、authselect :⽤于配置系统对接LDAP的身份认证。配合 sssd 来简化认证模块的管理 。
  • 4、 openldap-clients :提供⼀些命令⾏⼯具(如 ldapsearch 、 ldapadd 等),⽤于与 LDAP 服务器交互。
yum install sssd nss-pam-ldapd authconfig authselect openldap-clients oddjob -y

2、为客户端准备好对应的TLS证书⽂件

scp -rp root@ldap-master01.oldxu.net:/etc/openldap/certs/* /etc/openldap/certs/

3.2 配置SSSD服务接⼊LDAP

1、在配置SSSD服务之前,可以先检查下系统中是否存在对应的⽤户

[root@k8s-node34 ~]# id sre01
id: “sre01”:无此用户
[root@k8s-node34 ~]# id dba01
id: “dba01”:无此用户

2、 在 CentOS 7 系统中,使⽤ authconfig ⼯具来配置 SSSD,⽽在CentOS 8 和 9 系统中,使⽤ authselect ⼯具进⾏SSSD配置

  • with-mkhomedir :让通过 SSSD 成功身份验证的⽤户在⾸次登录时⾃动创建家⽬录。
  • with-sudo : 让 SSSD 从 LDAP 中读取 sudo 权限条⽬,以⽀持集中化的 sudo 权限管理。
[root@k8s-node34 ~]# authselect select sssd with-mkhomedir with-sudo --force
备份保存在 /var/lib/authselect/backups/2025-02-05-13-08-07.QNE5R9
选择了配置文件 "sssd"。
以下 nsswitch 映射信息被配置集覆盖:
- passwd
- shadow
- group
- hosts
- services
- netgroup
- sudoers
- automount
- aliases
- ethers
- gshadow
- networks
- protocols
- publickey
- rpc

Make sure that SSSD service is configured and enabled. See SSSD documentation for more information.

- with-mkhomedir is selected, make sure pam_oddjob_mkhomedir module
  is present and oddjobd service is enabled and active
  - systemctl enable --now oddjobd.service

3、为 sssd 服务准备对应的配置⽂件

[domain/default]
# 指定 LDAP 作为 ⽤户身份信息的提供者。(当⽤户登录系统时,系统通过 SSSD 从 LDAP 中获取这个⽤户的身份信息。)
id_provider = ldap
# 指定 LDAP 作为 身份认证信息的提供者。(当⽤户登录时,系统通过 SSSD 使⽤ LDAP 的身份认证服务验证⽤户名和密码。)
auth_provider = ldap
# 指定 LDAP 作为 sudo 权限信息的提供者。(从 LDAP 中获取 sudo 规则和权限配置,这样就可以集中化的管理 sudo 权限,⽽⽆需在每台服务器上单独配置。)
sudo_provider = ldap
# 允许⽤户通过系统命令(如 passwd)修改 LDAP 中⽤户的密码。
chpass_provider = ldap
# LDAP基础配置
ldap_uri = ldap://ldap-master01.oldxu.net/
ldap_search_base = dc=oldxu,dc=net
cache_credentials = True
#TLS相关配置
ldap_id_use_start_tls = True
ldap_tls_cacert = /etc/openldap/certs/ldapserver.crt
ldap_tls_cacertdir = /etc/openldap/certs
ldap_tls_reqcert = demand
[sssd]
services = nss, pam, sudo
domains = default
[nss]
homedir_substring = /home

4、修改对应配置⽂件的权限

chmod 0600 /etc/sssd/sssd.conf

5、启动对应的服务

[root@k8s-node34 ~]# systemctl enable --now sssd oddjobd
Created symlink /etc/systemd/system/multi-user.target.wants/sssd.service → /usr/lib/systemd/system/sssd.service.
Created symlink /etc/systemd/system/multi-user.target.wants/oddjobd.service → /usr/lib/systemd/system/oddjobd.service.

3.3 测试LDAP⽤户登陆Linux系统

1、验证是否能获取到对应的⽤户

[root@k8s-node34 ~]# id sre01
用户id=4001(sre01) 组id=4000(sreteam) 组=4000(sreteam)
[root@k8s-node34 ~]# id dba01
用户id=5001(dba01) 组id=5000(dbateam) 组=5000(dbateam)

2、使⽤ssh命令登陆对应的客户端

[root@k8s-node34 ~]# ssh sre01@10.0.0.34 whoami

Authorized users only. All activities may be monitored and reported.
sre01@10.0.0.34's password:
sre01

4、OpenLDAP集成sudo进⾏权限控制

4.1 为什么需要集成Sudo

前⾯,我们已经通过 LDAP 当中的⽤户成功登陆了Linux系统。但这些⽤户默认的权限⾮常低,⽆法执⾏更⾼级的操作。此外,不同的⽤户对权限的需求也各不相同,例如:

  • A⽤户需要有安装软件、管理服务的权限;
  • B⽤户需要查看⽇志,或者运⾏特定的命令的权限。
  • C⽤户需要能使⽤超级管理员权限。

因此,为了满⾜不同⽤户的权限需求,通常会为⽤户配置对应的 sudo 权限。但默认情况下, 每台服务器的 sudo 权限都是通过 /etc/sudoers ⽂件管理的。当我们服务器数量较少时,⼿动修改 /etc/sudoers ⽂件可能还算⽅便。但当服务器数量增加到⼏⼗台甚⾄上百台时,这种⽅式就变得⾮常繁琐,且不够灵活。

为了解决这样的问题,我们可以将每台服务器上的 sudo 权限配置迁移到 LDAP上,通过 LDAP 来集中的管理sudo的权限。这样有如下⼏个好处:

  • 1、权限集中化:所有服务器的 sudo 权限都存储在 LDAP 中,只需在 LDAP上调整配置即可同步⽣效。
  • 2、动态调整:只要在 LDAP 中改了⽤户的 sudo 权限,客户端就能实时⽣效,⽆需逐⼀登录每台服务器进⾏修改。
  • 3、管理更⾼效:在服务器集群规模很⼤的情况下,LDAP 集成 sudo 能⼤⼤减轻运维压⼒,还能避免配置混乱。

4.2 OpenLDAP集成Sudo流程

1、 需要在 LDAP 服务器中导⼊ Sudo Schema ⽂件,以扩展 LDAP 的数据模型,使其能存储和管理与 Sudo 相关的条⽬。

2、通过Sudo Schema⽂件当中提供的 sudoRole 对象类,来定义⽤户或⽤户组的 Sudo 权限。例如:指定哪些⽤户、能在哪些主机上,执⾏什么操作/命令。

3、配置客户端的 SSSD 服务,使其能够从 LDAP 中读取 Sudo 的相关配置。

4、当⽤户执⾏ sudo 命令时,客户端会通过 LDAP 查询 sudoRole 条⽬,并根据对应的规则,判断该⽤户是否拥有对应的操作权限。

4.3 配置OpenLDAP⽀持Sudo

1、获取对应sudo的Schema⽂件

https://github.com/sudo-project/sudo/blob/main/docs/schema.olcSudo

[root@k8s-master31 tmp]# ll
总用量 4
-rw-r--r-- 1 root root 2671  2月  5 21:38 schema.olcSudo

2、导⼊sudo的Schema⽂件

[root@k8s-master31 tmp]# ldapadd -Y EXTERNAL -H ldapi:/// -f /tmp/schema.olcSudo
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=sudoschema,cn=schema,cn=config"

3、检查Schema是否导⼊成功

[root@k8s-master31 tmp]# ll /etc/openldap/slapd.d/cn\=config/cn\=schema
总用量 44
-rw------- 1 ldap ldap 15575  2月  4 19:16 'cn={0}core.ldif'
-rw------- 1 ldap ldap 11453  2月  4 20:42 'cn={1}cosine.ldif'
-rw------- 1 ldap ldap  2947  2月  4 20:42 'cn={2}inetorgperson.ldif'
-rw------- 1 ldap ldap  6583  2月  4 20:42 'cn={3}nis.ldif'
-rw------- 1 ldap ldap  2833  2月  5 21:39 'cn={4}sudoschema.ldif'

4.4 SudoRole对象类的介绍

Sudo Schema 提供了 sudoRole 对象类,⽤于定义⼀组完整的 Sudo 规则。通过 sudoRole 对象类当中的属性,可以指定哪些⽤户,能在哪些主机上,执⾏什么命令或程序。

1、 sudoUser :

  • ⽤于定义⽀持Sudo权限的⽤户或⽤户组。
  • ⽀持⽤户和⽤户组(⽤户组要以%为前缀), 特殊值 ALL 表示适⽤于所有⽤户。

2、 sudoHost :

  • 于定义在哪些主机上可以执⾏ sudoCommand 中指定的命令。
  • ⽀持指定 IP 地址或主机名,特殊值 ALL 表示适⽤于所有主机。

3、 sudoCommand :

  • ⽤于定义允许执⾏的命令。例如: /usr/sbin/useradd 、 /usr/sbin/userdel 。同时也⽀持使⽤通配符。
  • ALL 表示允许执⾏所有命令,也可以通过 ! 来排除特定命令(如 !/usr/bin/passwd 表示禁⽌执⾏该命令)。

4、 sudoOption :

  • 定义额外的 Sudo 配置选项。例如:
  • !authenticate :允许⽤户执⾏命令时⽆需输⼊密码。
  • requiretty :要求⽤户必须通过⼀个 TTY(终端)才能执⾏ Sudo权限,不允许⾮交互的⽅式执⾏Sudo

示例:要求 adm 组的成员可以在任意主机上执⾏ yum 和 rpm 命令,但不能执⾏ passwd 命令,同时执⾏这些命令时⽆需输⼊密码。

sudoUser: %adm
sudoHost: ALL
sudoCommand: /usr/bin/rpm
sudoCommand: /usr/bin/yum
sudoCommand: !/usr/bin/passwd
sudoOption: !authenticate

4.5 定义sudo权限规则

1、⾸先,在LDAP中创建⼀个专属的 OU,⽤来存储所有与 Sudo 相关的权限规则。例如,创建⼀个名为 ou=sudoers 的组织单元。

2、在 ou=sudoers 下,创建对应的组条⽬,并为“每个组”分别定义不同的Sudo权限。例如:

  • system 组的权限规则: system 组的成员可以执⾏: rm、rpm、yum 等命令,但禁⽌执⾏ passwd 命令。
  • admins 组的权限规则: admins 组的成员可以执⾏: su 命令,这意味着他们可以通过 sudo su - 提权到 root 身份。

1、 创建 OU 条⽬,确保 OU 的名称为 sudoers

[root@k8s-master31 ~]# ldapadd -x -D "cn=admin,dc=oldxu,dc=net" -w 123456 <<EOF
dn: ou=sudoers,dc=oldxu,dc=net
objectClass: organizationalUnit
ou: sudoers
EOF
adding new entry "ou=sudoers,dc=oldxu,dc=net"

2、为system组定义sudo权限

[root@k8s-master31 ~]# ldapadd -x -D "cn=admin,dc=oldxu,dc=net" -w 123456 <<EOF
dn: cn=%system,ou=sudoers,dc=oldxu,dc=net
objectClass: sudoRole
cn: %system
sudoUser: %system
sudoHost: ALL
sudoCommand: /usr/bin/rm
sudoCommand: /usr/bin/rpm
sudoCommand: /usr/bin/yum
sudoCommand: !/usr/bin/passwd
sudoOption: !authenticate
EOF
adding new entry "cn=%system,ou=sudoers,dc=oldxu,dc=net"

3、为admins组定义sudo权限

[root@k8s-master31 ~]# ldapadd -x -D "cn=admin,dc=oldxu,dc=net" -w 123456 <<EOF
dn: cn=%admins,ou=sudoers,dc=oldxu,dc=net
objectClass: sudoRole
cn: %admins
sudoUser: %admins
sudoHost: ALL
sudoCommand: /usr/bin/su
sudoOption: !authenticate
EOF
adding new entry "cn=%admins,ou=sudoers,dc=oldxu,dc=net"

4.6 创建⽤户并分配sudo权限

在前⾯的配置中,Sudo 权限规则是基于组定义的(如 system 和 admins组)。为了让⽤户能够匹配这些 Sudo 权限规则,我们需要以下两步操作:

  • 1、创建与 Sudo 权限规则同名的组:确保 LDAP 中存在与 Sudo 权限规则同名的组(如 system 和 admins ),以便规则能够正确匹配这些组的成员。
  • 2、创建⽤户并加⼊对应的组:为需要分配 Sudo 权限的⽤户创建账户,并将这些⽤户添加到对应的组中,继承组的权限规则。

1、创建与sudo权限规则同名的组, system、admins ,并将对应的组放置在 ou=ops 组织下

#system
[root@k8s-master31 ~]# ldapadd -x -D "cn=admin,dc=oldxu,dc=net" -w 123456 <<EOF
dn: cn=system,ou=ops,dc=oldxu,dc=net
objectClass: posixGroup
cn: system
gidNumber: 10000
EOF
adding new entry "cn=system,ou=ops,dc=oldxu,dc=net"

[root@k8s-master31 ~]# ldapadd -x -D "cn=admin,dc=oldxu,dc=net" -w 123456 <<EOF
dn: cn=admins,ou=ops,dc=oldxu,dc=net
objectClass: posixGroup
cn: admins
gidNumber: 20000
EOF
adding new entry "cn=admins,ou=ops,dc=oldxu,dc=net"

2、创建两个⽤户,并分别加⼊不同的组中;

  • 创建sys01⽤户,并加⼊到system组中;

  • 创建oldxu⽤户,并加⼊到adm组中;

# sys01
ldapadd -x -D "cn=admin,dc=oldxu,dc=net" -w 123456 <<EOF
dn: uid=sys01,cn=system,ou=ops,dc=oldxu,dc=net
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
cn: sys01
uid: sys01
userPassword: 123456
homeDirectory: /home/sys01
loginShell: /bin/bash
uidNumber: 10001
gidNumber: 10000
sn: System Sudoers Users
EOF

# oldxu
ldapadd -x -D "cn=admin,dc=oldxu,dc=net" -w 123456 <<EOF
dn: uid=oldxu,cn=admins,ou=ops,dc=oldxu,dc=net
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
cn: oldxu
uid: oldxu
userPassword: 123456
homeDirectory: /home/oldxu
loginShell: /bin/bash
uidNumber: 20001
gidNumber: 20000
sn: Adm Sudoers Users
EOF

4.7 客户端验证sudo⽤户权限

客户端如果需要使⽤ LDAP 中的 Sudo 功能,是需要进⾏相应的配置。不过此前已经通过 authselect select sssd with-mkhomedir with-sudo --force 命令完成了 SSSD 服务的配置,并集成了sudo,因此⽆需在进⾏额外的配置,可以直接验证 Sudo 权限。

1、验证sys01⽤户的sudo权限

[sre01@k8s-node34 ~]$ ssh sys01@10.0.0.34
[sys01@k8s-node34 ~]$ sudo -l
匹配 %2$s 上 %1$s 的默认条目:
    !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset,
    env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR
    USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT
    LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE",
    env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

用户 sys01 可以在 k8s-node34 上运行以下命令:
    (root) NOPASSWD: /usr/bin/rm, /usr/bin/rpm, /usr/bin/yum, !/usr/bin/passwd
[sys01@k8s-node34 ~]$ yum install wget
Error: This command has to be run with superuser privileges (under the root user on most systems).
[sys01@k8s-node34 ~]$ sudo yum install wget
Last metadata expiration check: 1:11:26 ago on 2025年02月05日 星期三 20时56分07秒.
Package wget-1.21.2-5.oe2203sp1.x86_64 is already installed.
....
Complete!

2、验证oldxu⽤户的sudo权限

[oldxu@k8s-node34 ~]$ sudo -l
匹配 %2$s 上 %1$s 的默认条目:
    !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset,
    env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR
    USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT
    LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE",
    env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

用户 oldxu 可以在 k8s-node34 上运行以下命令:
    (root) NOPASSWD: /usr/bin/su
[oldxu@k8s-node34 ~]$
[oldxu@k8s-node34 ~]$ sudo su -
上一次登录: 三 2月  5 20:41:27 CST 2025 从 10.0.0.1 pts/0 上
....
[root@k8s-node34 ~]#

3、 更新了sudo的权限,不会⽴即⽣效,因为sssd服务存在缓存(默认缓存600秒),只有等待缓存超时后才会更新。如果希望sudo权限⽴即⽣效,可以通过如下命令⼿动清理 sssd 的缓存

sss_cache -E
posted @   broadviews  阅读(42)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示