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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」