新闻详情

新闻详情

首页 / 资讯中心 / 详情

Linux用户管理进阶:从账户文件到权限体系,一篇讲透用户组与sudo策略

发布时间:2026/9/29 5:05:54来源:尧图网络
Linux用户管理进阶:从账户文件到权限体系,一篇讲透用户组与sudo策略
Linux 用户管理进阶从基础命令到底层原理一篇讲透权限与账户体系如果你和我一样常年混迹在生产环境的 Linux 服务器上你一定经历过这些让人头皮发麻的时刻一个用户明明被加进了某个组权限却还是不够用一个同事离职了带走了系统里一个权限大到离谱的账号你却根本不知道那个账号背后是什么来头又或者sudo 权限配完之后发现人家根本没法执行 sudo 命令一头雾水地过来找你求救。Linux 用户管理说简单也简单无非就是 useradd、usermod、userdel、passwd 那几个命令但说复杂它其实牵涉到系统权限模型的底层逻辑。像用户配置文件、组策略、sudo 规则、ACL 访问控制列表、用户状态审计这些都是生产环境里绕不开的关键点。这篇文章不是要讲那些“入门教程一搜一大把”的皮毛而是要基于一个完整的实操场景把用户高级管理的核心细节拆开揉碎同时把自己的踩坑经验一并分享出来。适合谁看刚接触 Linux 运维的初级工程师、正在准备 Linux 运维岗位面试的人以及想把自己手里的服务器权限体系梳理清楚的开发者都值得认真读一遍。这个“头歌 Linux 之用户高级管理”的实训任务我当初练完之后最大的感受就是原来用户管理不是一个一个敲命令而是一套体系一套从规划到落地的完整流程。今天我把这套体系完整地写下来。1. 用户管理的整体思路先懂文件再谈命令1.1 为什么用户信息全都存在 /etc/passwd 里我第一次看到 /etc/passwd 文件的时候觉得它就像一个朴素的 Excel 表每一行就是一个用户的全部“户口信息”。但很多人对这个文件的理解停留在一知半解比如以为这个文件存了密码。其实密码早就不住这儿了。/etc/passwd 文件的每一行由 7 个字段组成用冒号分隔。结构大概是用户名:密码占位符:UID:GID:注释信息:家目录:登录Shell拿 root 举例root:x:0:0:root:/root:/bin/bash这里的 x 就是一个占位符意思是真正的密码哈希在 /etc/shadow 文件里。为什么要分开因为 /etc/passwd 需要被所有用户读取很多程序要知道用户名和 UID 的对应关系但这样密码哈希就暴露了。于是系统把密码挪到只有 root 能读实际上普通用户读不了的 /etc/shadow 里。补充一个细节UID 和 GID 的选择是有讲究的。0 是 root1-999 一般是系统用户也有的发行版是 1-4991000 以上才是普通用户。系统用户是什么是给 nginx、mysql、sshd 这类服务用的账号它们不需要登录但需要归属于某个 UID 来隔离权限。你在生产环境上看到 uid998 这样的数字基本是系统服务账号。1.2 /etc/shadow 才是密码真正的“保险柜”/etc/shadow 文件每行同样由多个字段组成但字段含义更敏感。典型的格式是用户名:密码哈希:最后一次修改密码的时间:密码最小使用天数:密码最大使用天数:密码过期前警告天数:密码过期后宽限天数:账号失效时间:保留字段这里有几个字段值得单独说说。第二个字段是加密后的密码哈希格式通常是$6$salt$hash$6$ 代表 SHA-512 加密算法$5$ 代表 SHA-256$1$ 是 MD5还有 $y$ 是 yescrypt 算法新版系统默认。如果这个字段是!!或*说明这个用户的密码是锁定状态无法登录。我们给用户临时禁用账户时其实就可以手动在这个字段前面加个感叹号。第三个字段是从 1970 年 1 月 1 日算起到最近一次改密码的天数。注意这里不是时间戳格式而是“天数”所以千万不要把它理解成普通日期。第六个字段密码过期前警告天数默认是 7意思是密码还剩 7 天过期时系统就会警告你改密码。第七个字段密码过期后宽限天数默认是 -1即不做限制密码过期后账户直接失效。如果设置成 3则密码过期后的 3 天之内还能登录但会被强制要求改密码过了宽限期就没法登录了。第八个字段是账户失效时间同样是从 1970 年开始的天数。到了这个时间账户直接不可用。离职员工清理场景里这个字段就很有用——不用删账号只需设置失效日期。1.3 用户管理命令的前世今生useradd 和 adduser 的差别很多新手在 Ubuntu 上敲 useradd 和 adduser会发现行为不一样一时之间分不清哪个是哪个。简单讲useradd 是 Linux 系统自带的底层命令它的行为由配置文件 /etc/default/useradd 和 /etc/login.defs 控制默认情况下不会创建家目录也不会帮你设置密码。adduser 则是一个 Perl 脚本是 useradd 的“友好前端”会交互式地引导你设置密码、填用户信息而且默认就会创建家目录。Debian/Ubuntu 系列把 adduser 包装得很好。但在 CentOS/RHEL 上adduser 只是个指向 useradd 的符号链接两者没差别。实操中我建议你直接掌握 useradd因为它的参数行为是标准化的而且在写脚本批量创建用户时useradd 的非交互性是刚需。2. 用户高级管理核心操作用户组与权限规划2.1 用户组为什么要精心规划用户组不是用来“摆着好看”的它是 Linux 权限模型里最关键的一环。权限三要素里用户身份决定了你是所有者owner、属组group还是其他人others而中间这个“属组”就是把多个用户打包成一个权限单元的方式。举个例子你有一台公司内部的代码服务器里面存放多个项目目录。A 项目的开发者小王、小李、小张需要同时读写 /data/project_aB 项目的人不能碰。最朴素的做法是创建一个名为 project_a 的组把三个人塞进去再把 /data/project_a 的属组改成 project_a并设置组权限为 rwx。这样所有人形成一个“一个组对应一个目录权限”的映射关系。这里有个非常实用的设计理念尽量不要按岗位建组比如“开发组”“测试组”而是按项目或业务模块建组。岗位是动态的项目也是动态的但项目成员的变动频率一般低于岗位调整的频率而且按项目建组更容易做权限到期清理。2.2 用 groupadd/gpasswd 搭建组体系创建组的基础命令很简单groupadd project_a但看一个组是否创建成功我更推荐你看 /etc/group 文件的内容或者用 getent group 来查询。getent 的好处是它会同时搜索本地文件和 NIS/LDAP 等网络用户数据库在公司内部有统一认证体系时特别有用。把用户加到组里有几种方式但要注意区别把用户加入组并追加到已有附加组列表用usermod -aG project_a zhangsan。注意这个 -aappend必须和 -G 配合使用我见到太多人写了usermod -G project_a zhangsan结果直接把用户原来的附加组全清掉了这个坑后面细说。临时切换有效组用newgrp project_a。这个命令会开启一个新的子 shell让你临时拿到 project_a 组的权限适合临时访问某个目录的场景。把用户从组里移除用gpasswd -d zhangsan project_a不需要修改 /etc/group 文件。设置组密码和管理员用gpasswd -A zhangsan project_a。组密码一般不常用但在需要让非组成员临时以组成员身份访问资源时可以配合 newgrp 使用。2.3 批量创建用户的完整脚本思路真实的生产环境里一次性创建一两个用户的情况不多更多的是批量导入。比如入职季一次性来了五个新同事每个人的账号、初始密码、家目录、所属组都有对应规则。这种场景用手工敲命令是效率灾难正确的做法是写脚本批量跑或者用系统自带的 newusers 工具。newusers 是一个非常好用的批量创建用户工具它的输入格式和 /etc/passwd 几乎一样。你可以先创建一个文本文件 users.txt内容如下zhangsan:x:1005:1005:张三:/home/zhangsan:/bin/bash lisi:x:1006:1006:李四:/home/lisi:/bin/bash wangwu:x:1007:1007:王五:/home/wangwu:/bin/bash然后执行newusers users.txt五秒钟就把三个用户全部创建好了。但注意这样创建的用户还没设置密码。接下来配合 chpasswd 命令可以批量设置密码这也是批量场景下最高效的搭档echo zhangsan:ZhangSan2024 | chpasswd echo lisi:LiSi2024 | chpasswd写脚本时可以在这个基础上再封装一层循环支持从 CSV 文件读取用户名单对每一行依次执行 useradd、设置密码、创建家目录、加入组等操作整个流程就是一条自动化流水线。2.4 用户状态的灰度管理锁定、解锁、失效用户管理中有一个非常容易忽略的技术细节账号的“禁用”和“锁定”是两码事。锁定/解锁密码passwd -l zhangsan或usermod -L zhangsan。这个操作的本质是往 /etc/shadow 的密码哈希字段前加了一个感叹号。那密码哈希还在不在在只是被“注释”了解锁时passwd -u zhangsan移除感叹号密码就恢复原样了。账号失效usermod -e 2025-01-01 zhangsan。这个操作设置的是 /etc/shadow 的第八个字段账户失效时间到期后即使密码是对的也无法登录。彻底删除userdel -r zhangsan。不加 -r只删用户不删家目录加上 -r家目录和邮件池目录一并删除。实操中我强烈建议不要轻易删账号而是用“锁定 设置失效时间”的组合。因为删账号会丢失 UID 与文件的关联关系如果这个用户之前创建过文件删掉之后这些文件的属主就变成一长串数字UID排查起来非常麻烦。通常的做法是离职人员账号锁定 3 个月确认没有增量文件产生之后再彻底删除。3. 高级权限控制的实战sudo、su、ACL 与文件权限位3.1 sudo 和 su 的本质区别安全与审计的岔路口很多刚接触 Linux 的人有个错误认知觉得 sudo 和 su 是同一个东西的两种写法不过是“切换成 root”的两种方式。但两者的安全模型完全不一样。su 是把当前用户切换成目标用户你需要知道目标用户的密码。也就是说如果你用su - root切换到 root你输入的其实是 root 的密码。这意味着所有人都知道 root 密码才能切过去这是巨大的安全隐患。而且一旦切换成 root当前 shell 的所有命令都以 root 身份运行没有任何审计。sudo 则恰恰相反它是让普通用户在自己身份下以“被授权的特定身份”去执行某一条命令。它的校验依据是 /etc/sudoers 文件里的规则而不是 root 密码。sudo 在日志里会记录“谁在什么时间执行了什么命令”这个审计能力是 su 完全没有的。生产环境的安全基线里“禁止使用 su 切换 root”经常是硬性要求取而代之的是使用 sudo 配上细粒度的权限策略。3.2 亲手配一份安全的 sudo 策略/etc/sudoers 文件是 sudo 的配置文件也是最容易配错导致整个 sudo 不可用的地方。修改它必须使用 visudo 命令这个命令会在保存时做语法检查防止你写错规则把系统锁死。来看一个比较经典的规则zhangsan ALL(ALL) /usr/bin/systemctl restart nginx, /usr/bin/systemctl status nginx这一条的意思是用户 zhangsan 可以在任何主机第一个 ALL上以任何用户身份第二个 ALL执行 systemctl restart nginx 和 systemctl status nginx 这两条命令。注意这里不允许 mysql 之类别的命令。这就是最小权限原则在 sudo 配置里的应用——只给人家完成任务所要的那条命令绝不多的。还有一个常见需求是允许某个组的所有成员都能执行一组命令%project_a ALL(ALL) /usr/bin/systemctl restart nginx% 开头代表组project_a 组的所有成员都会生效。配完之后如果用户反映执行 sudo 不需要密码可以在规则里加上 NOPASSWD 关键字zhangsan ALL(ALL) NOPASSWD: /usr/bin/systemctl restart nginx但这里有个安全权衡NOPASSWD 等于让该用户免密执行指定命令如果命令本身有被恶意利用的可能比如 vim 可以借助甚至 !bash 来逃逸那开了就等于给人家一把带后门的钥匙。所以生产环境里我个人的习惯是NOPASSWD 只给确定无风险的命令比如 systemctl status、tail、ps需要修改文件或执行脚本的命令一律保留密码验证。3.3 权限位不够用的时候ACL 来兜底传统的 Linux 权限位只有 owner、group、others 三组 rwx本质上是“一个文件只能有一个属主和一个属组”。但在真实业务里这个模型经常不够用。比如 /data/share 目录归 project_a 组所有但现在需要让 project_b 组的人也能读却不能让其他所有人碰。传统权限模型改来改去都不合适——改属组会丢掉 project_a 的权限加 others 权限又会影响别的人。这时候 ACLAccess Control List访问控制列表就能派上用场。ACL 允许你在传统权限位上再叠加任意多个用户或组的权限。操作方式setfacl -m g:project_b:r-x /data/share getfacl /data/share执行完之后getfacl 输出里会多出来一行group:project_b:r-x。你会发现传统的三组权限位没能表达的信息ACL 全都能补充上。对目录设置了 ACL 之后还可以设置默认权限让新创建的子文件自动继承setfacl -m d:g:project_b:r-x /data/shared: 前缀代表 default这一条非常常用尤其适用于共享目录的初始化场景。另一个底层细节是只要一个文件被设置了 ACL它的传统 group 权限位在 ls -l 输出里就会显示成加号。这不是文件有什么毛病恰恰说明它带了 ACL 扩展属性。3.4 文件特殊权限位SetUID、SetGID、Sticky Bit如果你在生产环境里 ls 多看了几眼会偶尔发现有些文件权限位里出现 s 或者 t 这种特殊字符。它比 rwx 更隐蔽但危害极大。SetUIDsetuid也叫 SUID意味着用户在执行该程序时会临时获得文件属主的身份。最典型的例子是 /usr/bin/passwd。普通用户修改自己的密码时要写 /etc/shadow但 /etc/shadow 只有 root 能读写普通用户怎么改就是靠 passwd 文件的 SUID 权限实现的执行 passwd 时临时以 root 身份运行程序因此可以修改 shadow 文件。这是设计好的安全用例。但如果一个不属于任何程序、却被设置了 SUID 的脚本比如某个备份脚本是普通用户可编辑的这就成了安全事故的垫脚石。攻击者只需往脚本里塞一条恶意命令再用 root 身份触发执行结果难以想象。所以我有一条很硬性的操作纪律在任何服务器上巡检时都要顺手扫一遍全局 SUID 文件find / -perm -4000 -type f 2/dev/nullSetGIDSGID和 SUID 类似但它传递的是组身份。对目录设置 SGID 还有一个额外作用在该目录下新建的文件其属组会自动继承目录的属组而不是创建者自己的主组。这个特性在团队共享目录场景里非常实用。比方说 /data/share 目录属组是 project_a并且设置了 SGID那么不管 zhangsan 自己主组是什么他在 /data/share 里新建的文件属组都会自动变成 project_a。这样组内所有人都能在约定目录里正常协作。Sticky Bit粘滞位最经典的场景就是 /tmp。目录设置了粘滞位之后里面的文件只有文件属主或 root才能删除其他人即使对这个目录有写权限也删不掉别人的文件。这在共享目录里同样适用。设置方式分别是chmod us /path/to/file # 设置 SUID chmod gs /path/to/dir # 设置 SGID chmod ot /path/to/dir # 设置粘滞位注意SUID 只对可执行文件有意义对目录没有作用SGID 和粘滞位则一般作用于目录。4. 用户状态审计如何摸清系统里的每一个账号4.1 快速盘点用户与登录状态生产环境的安全性很大程度上取决于“你是否知道系统里有哪些能登录的账号”。很多人把服务器接管过来之后根本不知道系统里到底有多少个账号能通过 ssh 登录这个盲区很危险。我常用的盘点命令组合awk -F: $31000 $365534 {print $1,$3} /etc/passwd lastlog who第一行命令把所有 UID 大于等于 1000 的普通用户列出来让你一眼看到有哪些“真实用户”。lastlog 用来查看每个用户最近一次登录的时间和来源 IP这个信息在排查疑似入侵时非常关键。who 则是实时查看当前在线用户。在此基础上如果还能配合把“能通过 SSH 登录的用户”梳理出来那就更严谨了。一个简单做法是检查 sshd 的配置grep -E ^(AllowUsers|AllowGroups) /etc/ssh/sshd_config如果这两项没有配置理论上所有能登录的账号都能尝试远程登录。安全基线里通常要求显式配置白名单把 ssh 登录范围缩到最小。4.2 用日志追踪每个用户的命令痕迹Linux 系统里每个用户执行了什么命令看似没有记录其实可以通过 history 和 auditd 两种方式拿到。history 记录在用户家目录下的 .bash_history 文件里但用户可以自己清空而且只记录交互式命令脚本里执行的命令它不关心。所以从安全审计的角度history 的可靠性不算高。真正能兜底的方案是 auditdLinux 审计框架。安装启动之后可以用 auditctl 添加规则比如监视 /etc/passwd 和 /etc/shadow 的修改行为auditctl -w /etc/passwd -p wa -k user_modify auditctl -w /etc/shadow -p wa -k user_modify这个规则的意思是对这两个文件的任何写入w和属性变化a行为都记录下来并且用 user_modify 这个 key 做标签。后面要查询审计记录时执行ausearch -k user_modify就能看到谁在什么时间修改过这两个文件使用的是哪个进程。这个日志是内核层面的普通用户没有办法篡改是排查“账号被莫名添加”的利器。4.3 哪些账号很可能是“幽灵账号”实战中遇到的安全事件好多都是从“幽灵账号”开始的。所谓幽灵账号就是那些隐藏在系统里、平时没人维护却仍然具备登录能力的账号。排查时我会重点检查这几个点UID 为 0 的非 root 用户。Linux 系统里 UID 0 就是超级用户如果某个别的用户名也带了 UID 0那它其实就是另一个 root。检查命令是awk -F: $30 {print $1} /etc/passwd正常情况下应该只有 root 一条。空密码用户。如果 /etc/shadow 里某个用户第二个字段为空意味着这个用户没有密码就能登录这是绝对不能接受的。检查命令是awk -F: ($2) {print $1} /etc/shadow。近期无登录但 shell 是 /bin/bash 的系统账号。如果某个系统账号突然带上了一个正常的登录 shell或者密码字段不是锁定的!!就很可能被利用过。家目录权限过大的账号。用户家目录如果被设置成 777就有别的用户向其中写入恶意配置的风险特别是 .bashrc 和 .ssh/authorized_keys 这种文件。5. 常见问题与排查技巧实录5.1 用户明明在组里权限为什么还是不够这是我在答疑群里被问得最多的问题之一。仔细一看往往是同一个坑执行usermod -G zhangsan project_a的时候把用户原有的附加组全部冲掉了而用户当前正在使用的 shell 里没有刷新组成员关系。第一种情况用 -G 而不是 -aG 添加附加组等于把上一版附加组列表整体覆盖了。比如用户之前有 sudo 和 docker 两个附加组usermod -G project_a zhangsan执行完之后sudo 和 docker 都没了。排查方法很简单groups zhangsan看看当前结果是否与预期一致。第二种情况更隐蔽用户已经登录了终端管理员把他加进了新组但用户当前 shell 里还持有“旧的身份缓存”。用户要么重新登录一次要么执行newgrp project_a让子 shell 刷新身份。别小看这个细节我在测试环境里曾眼睁睁看着一个同事反复检查权限配置最后才发现只是没重登。5.2 sudo 配置正常却依然无法执行sudo 的报错分几种常见的是user is not in the sudoers file。这个其实是信息明确的系统提示只要用 root 执行visudo把用户或组加进 sudoers 即可。但还有一类不那么容易排查的问题用户明明已经在 sudoers 文件里执行 sudo 还是失败。这个时候需要从几个方向检查。检查是否存在同名用户和同名组。sudoers 里%project_a代表组不带 % 的代表用户。如果同名用户和组同时存在规则可能被优先级弄混导致预期不符。检查规则顺序。sudoers 文件遵循“先匹配先生效”的规则如果前面的规则拒绝了用户后面的放行规则不会生效。这也是为什么通常在文件末尾追加授权规则最稳妥。检查命令是否被 alias 包裹。用户执行的是sudo systemctl restart nginx但如果他所在的 shell 环境里 systemctl 被 alias 成了别的参数sudo 可能找不到对应命令。在 sudo 场景下不太常见但我确实遇到过由于 PATH 环境变量被修改而找不到命令的情况。5.3 批量创建用户时家目录权限为什么不对很多人在脚本里用 useradd 创建用户后发现用户无法正常写入自己家目录或者能看而别人也能看。这通常是两个原因。一是 useradd 命令在部分发行版上默认不会创建家目录需要显式加上-m参数。加上之后家目录的默认权限来自 /etc/login.defs 文件里 UMASK 配置通常是 022。这意味着家目录权限是 755除了用户自己能写同组和所有人也能读。如果你希望更强隐私保护可以修改 /etc/login.defs 里的 UMASK 为 077这样新家目录就是 700只有用户本人能进。二是/root/data、/home 目录本身的挂载选项带了 noexec 之类限制导致家目录里的可执行文件无法运行。这种情况下你在文件系统层面折腾 chmod 是没有用的需要检查 /etc/fstab 里的挂载参数把 noexec 去掉或调整挂载范围。5.4 误删用户后文件属主变数字怎么办我见过不少生产事故起因就是管理员手滑用userdel -r删了用户而那个用户的家目录或项目目录里还有一堆重要文件。文件没丢但 ls -l 里属主变成了一串数字。这时候不用太慌张。先确认被删用户的 UID如果还能从备份日志找到然后重新创建一个 UID 相同的用户useradd -u 1005 -M zhangsan-M 表示不创建家目录因为家目录还在只需要“重建身份”文件归属自然恢复。如果 UID 找不到了也可以用手动修改文件属主的方式find /home/old_user_dir -exec chown -R 1005:1005 {} \;但这种方式效率低而且容易漏掉分散在其他目录下的文件。所以再次强调生产环境删除用户之前最好先确认该用户的 UID、所有相关文件、计划任务cron和定时任务做到“先保全再删除”。6. 用户管理的三板斧工具、习惯与安全基线6.1 把常用命令做成自己的操作手册我这里有一个“用户管理速查表”根据现场使用频率整理出来的。这算不上什么新东西但每次接盘新服务器我都会拿出来过一遍。场景推荐命令说明创建用户并指定 UID/家目录/Shelluseradd -u 1005 -m -d /home/zhangsan -s /bin/bash zhangsan-m 确保创建家目录修改用户主组usermod -g project_a zhangsan修改的是 /etc/passwd 第4字段修改用户附加组usermod -aG project_a zhangsan一定要带 -a否则清空附加组锁定用户passwd -l zhangsan或usermod -L zhangsan给密码哈希加锁解锁用户passwd -u zhangsan移除锁定标记删除用户userdel -r zhangsan加上 -r 连带家目录查看用户所属组groups zhangsan主组和附加组一起列出查看所有可登录用户awk -F: $7 ~ /(bashsh)$/ {print $1} /etc/passwd6.2 配置一个简单的密码策略用户管理不只是账号与权限更包含“密码从哪里来、何时失效”的策略。虽然前面讲了用户管理命令但如果系统里密码策略是透明空白的那一切权限控制都等于在沙子上面盖房子。/etc/login.defs 里可以配置全局密码策略比如PASS_MAX_DAYS 90 PASS_MIN_DAYS 7 PASS_WARN_AGE 14这三行分别代表密码最长使用 90 天、最短使用 7 天防修改完立刻又改回旧密码、在到期前 14 天开始提醒。不过要注意login.defs 只对新创建的用户生效对已有用户需要 chage 命令单独调整chage -M 90 -m 7 -W 14 zhangsanchage 命令还有一个很有意思的用途查看用户密码的完整状态。执行chage -l zhangsan它会列出密码上一次修改时间、密码过期时间、账户是否失效等信息排查用户“为什么突然登录不上去了”时第一步就该查它。6.3 用户管理的安全基线清单分享几条我在生产环境中沉淀下来的检查项基本成为接手服务器时的标准作业程序每一条背后都有真实的踩坑教训。每台服务器都要明确谁能通过 SSH 登录并且用 AllowUsers 或 AllowGroups 白名单模式限制绝不能依赖默认允许的配置。每个月例行巡检一遍 UID 0 用户、空密码用户、SUID 文件和最近三个月不活跃的可登录账号。所有 sudo 授权都必须留痕规则写入 sudoers.d/ 下的独立文件并在文件名或注释里写明业务归属方便追溯。处理离职人员账号时优先锁定而非删除锁定之前检查该用户名下是否有 crontab、systemd 定时器和进程残留。家目录权限一律收紧新用户默认设置为 700而不是系统默认的 755。我的最后一点实操体会把用户管理从“会敲命令”拉升到“能设计权限体系”中间隔着的其实就是这些配置文件的细节和权限模型的理解。很多人学 Linux 用户管理记住了一堆命令却仍然一到生产环境就发怵就是因为没有从文件层面理解到系统到底是怎么存储和校验用户信息的。这份东西写下来希望能帮你看穿命令背后的逻辑。以后再遇到账号权限排查先想 /etc/passwd 和 /etc/shadow 怎么存数据再想 sudoers 的规则优先级最后再看具体命令的写法问题往往就能很快定位。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

协议的巴别塔—MCP 与工具协议标准化:用 TaoToken 统一 Key 打通 Cline 配置 2026/9/29 6:54:30

协议的巴别塔—MCP 与工具协议标准化:用 TaoToken 统一 Key 打通 Cline 配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
2026年AI写小说工具横评实测:5款主流方案接入TaoToken哪款适合你? 2026/9/29 6:54:30

2026年AI写小说工具横评实测:5款主流方案接入TaoToken哪款适合你?

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
sw转urdf详细教程:用TaoToken统一Key打通AI辅助建模工作流 2026/9/29 6:54:30

sw转urdf详细教程:用TaoToken统一Key打通AI辅助建模工作流

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Paperclip:Node.js+React+OpenClaw+Claude本地AI工具链实战指南 2026/9/29 6:54:30

Paperclip:Node.js+React+OpenClaw+Claude本地AI工具链实战指南

1. 项目概述:Paperclip 不是回形针,而是一个正在快速演进的 AI 工具链协同范式 “Paperclip”这个词在当前技术社区里,已经彻底脱离了它字面意义上那个金属弯钩的物理形态。如果你最近在掘金、知乎、V2EX 或国内前端技术群聊里刷到过它&…

阅读更多 →
AI Coding 落地方案:用 TaoToken 统一 Key 打通 Claude Code 与 MCP 配置 2026/9/29 6:54:30

AI Coding 落地方案:用 TaoToken 统一 Key 打通 Claude Code 与 MCP 配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
OpenClaw Verbose 与 Compaction 策略对比:TaoToken 配置骨架与验证动作 2026/9/29 6:54:23

OpenClaw Verbose 与 Compaction 策略对比:TaoToken 配置骨架与验证动作

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉