Linux 入门指南:从零基础到玩转命令行 3
bash 执行命令passwd#管理用户密码file#判定文件类型cat#一次性读取文件内容head#显示文件按头部内容tail#显示文件尾部内容less#交互式·翻页查看文件内容wc#统计文件行数 单词数 字节数/#根目录/路径分隔符.#当前目录..#上级父目录~#用户家目录-#cd 用法上次目录参数用法命令选项su 用法完整切换环境echo#输入文本touch#创建文件mkdir#创建文件夹|#管道符shell 符号基础定义vim 个性化编辑 对全局通用# 全局用户显示行号 显示操作命令 列高亮对齐显示 行高亮对齐显示[rootCentOS79 ~19:48:36]# vim /etc/vimrcsetnumbersetshowcmdsetaits2setcursorcolumnsetcursorlinevim man 通用快捷键功能说明q/Q/Esc退出 less /man 手册返回终端空格 /f/PageDown向下翻一页b/PageUp向上翻一页j/↓/Enter向下滚动一行k/↑向上滚动一行g跳转到文档开头G跳转到文档末尾50%跳转到文档 50% 位置可修改数字h查看 less 自带帮助查看当前行号 / 页码 / 文档信息快捷键功能说明/关键词向下正向搜索关键词?关键词向上反向搜索关键词n跳到下一个匹配结果N跳到上一个匹配结果-i切换搜索是否忽略大小写关键词仅显示含关键词的行回车恢复全部快捷键功能说明v调用系统编辑器vim/nano!ls执行外部 shell 命令示例 lss filename将手册内容保存到指定文件环境变量shell 环境内置变量设置shell的运行环境。用户自定义变量字面意思用户自己定义的变量也就是普通变量。LANG命令 shell环境语言date 时间更改en_US.utf8 英文模式zh_CN.utf8 中文模式[rootCentOS79 ~11:08:08]# export LANGzh_CN.utf8[rootCentOS79 ~11:08:40]# date2026年 07月17日 星期五11:08:44 CSTPS1 命令 命令行提示符可以将用户名更改成自己想要的样子类似于这样PS1[\u\h \w \t]\$ 字体颜色 常用PS1[\[\e[91m\]\u\[\e[0m\]\[\e[93m\]\[\e[0m\]\[\e[92;1m\]\h\[\e[0m\]\[\e[94m\] \W\[\e[0m\] \[\e[35m\]\t\[\e[0m\]]\[\e[93m\]\$\[\e[0m\] # 彩色命令提示符# \[\e[0;30m\]黑色# \[\e[0;31m\]红色# \[\e[0;32m\]绿色# \[\e[0;33m\]黄色# \[\e[0;34m\]蓝色# \[\e[0;35m\]紫色# \[\e[0;36m\]青色# \[\e[0;37m\]白色# \[\e[0m\]恢复默认颜色变量定义查看 也是类似于PS1HISTTIMEFORMAT 命令 历史命令时间格式%F完整日期年 - 月 - 日如2024-10-24%T完整时间时分: 秒如15:30:45%Y四位年份如2024%m两位月份01-12%d两位日期01-31%H24 小时制小时00-23%M分钟00-59%S秒00-59# 命令类似于这样bashexportHISTTIMEFORMAT%m-%d %H:%M PATH命令 命令搜索路径***PATH系统的命令搜索路径列表保存了一堆目录路径用冒号:分隔直接输入命令比如ls、mkdir、java时系统会按顺序遍历 PATH 里的目录查找对应的可执行程序找到就运行找不到就报错command not foundPATH 决定系统能不能正常找到并运行命令是 Linux 最关键的环境变量必须正确维护不能随意破坏。# 查看当前PATH[wuyanzuCentOS79 ~14:30:49]$echo$PATH/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/wuyanzu/.local/bin:/home/wuyanzu/bin# 临时修改 适用于当前终端exportPATH$PATH:/my/bin# 永久修改写入 /etc/profile / ~/.bashrc长期生效# 示例exportPATH$PATH:/usr/local/bin# 生效source/etc/profile变量持久化保存echoexport LANGen_US.utf8/etc/profile写LANGen_US.utf8追加重定向到/etc/profile命令替换前提是 使用echo可选择 ’ ? ? ’ 或者$(? ?)# echo 语句 代码 %代码# 示例 动态时间[wuyanzuCentOS79 ~14:47:57]$echoToday isdate%AToday is Friday[wuyanzuCentOS79 ~14:52:41]$echoThetimeis$(date%M)minutes past$(date%l%p).Thetimeis57minutes past 2PM.# echo $[??] 先获取序列后替换空格为号# 示例 计算加法[wuyanzuCentOS79 ~14:57:46]$echo$[123]6[wuyanzuCentOS79 ~14:59:36]$echo{1..3}123[wuyanzuCentOS79 ~15:01:40]$echo{1..3}|tr 123[wuyanzuCentOS79 ~14:59:55]$echo$[$(echo{1..3}|tr )]6保留字符字面含义\取消后面单个字符的特殊含义。双引号(“”)压缩shell扩展含义不压缩命令替换、变量替换和转义字符\。单引号(‘’)可以压缩单引号内部的所有字符含义。# \示例[wuyanzuCentOS79 ~15:07:39]$echo\PATHPATH[wuyanzuCentOS79 ~15:07:52]$echo$PATH/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/wuyanzu/.local/bin:/home/wuyanzu/bin# 示例 如果没有“”则会显示所有的文件目录包括输入进去的命令[wuyanzuCentOS79 ~15:09:27]$usernameXieBaiQi[wuyanzuCentOS79 ~15:10:10]$echo******* Welcome$usernameto Linux Classroom On$(date%F)******* allinone dhcpd.conf hostname.cp lab multi_lines.txt passwd.err passwd.list passwd.man passwd.stdout profile profile.sh testfile 下载 公共 图片 文档 桌面 模板 视频 音乐 Welcome XieBaiQi to Linux Classroom On2026-07-17 allinone dhcpd.conf hostname.cp lab multi_lines.txt passwd.err passwd.list passwd.man passwd.stdout profile profile.sh testfile 下载 公共 图片 文档 桌面 模板 视频 音乐# 有“”的话则会只显示输入进去的命令[wuyanzuCentOS79 ~15:10:17]$echo******* Welcome$usernameto Linux Classroom On$(date%F)************** Welcome XieBaiQi to Linux Classroom On2026-07-17 *******# 和双引号同理Linux FHS 根目录完整速查/bin基础命令/sbin管理员命令/boot开机引导/dev硬件设备/home普通用户家目录/root root管理员家目录/lib/lib64依赖库/media/mnt挂载外设/opt第三方软件/proc/sys系统状态 / 硬件配置/usr用户软件程序/var日志 动态数据/etc全局配置/tmp短期临时文件Linux 用户和组管理用户和组介绍passwd文件/etc/passwdgrep 用户名name用户登录名password用户密码以x表示UID用户IDGID用户主组IDGECOS用户描述信息通常为用户的真实姓名directory用户主目录启动shell时的工作目录默认位于/home/usernameshell用户打开终端时运行的程序默认是shell。[wuyanzuCentOS79 ~16:54:11]$greppostfix /etc/passwd postfix:x:89:89::/var/spool/postfix:/sbin/nologin /etc/passwd:postfix:x:89:89::/var/spool/postfix:/sbin/nologin grep: postfix:x:89:89::/var/spool/postfix:/sbin/nologin: No suchfileor directorygroup文件/etc/groupgroup_name组名称password组密码用x表示GID组ID唯一表示组user_list作为补充的成员# 查看用户id[wuyanzuCentOS79 ~16:59:48]$iduid1000(wuyanzu)gid1000(wuyanzu)groups1000(wuyanzu),10(wheel)contextunconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023# 查看用户uid[wuyanzuCentOS79 ~17:00:56]$id-uwuyanzu1000本地用户管理whoami 命令# 查看当前终端中登录的用户 是users的分支[wuyanzuCentOS79 ~16:12:03]$whoamiwuyanzuw和who 命令# 查看当前系统中所有终端上登录的用户以及用户登录的时间[wuyanzuCentOS79 ~17:11:54]$ w17:12:06 up7:49,3users, load average:0.00,0.01,0.05USERTTY FROM LOGIN IDLE JCPU PCPU WHAT wuyanzu :0 :0 08:48 ?xdm?3:110.45s /usr/libexec/gnome- wuyanzu pts/010.1.8.115:523:420.06s0.06s-bashwuyanzu pts/210.1.8.114:476.00s0.19s0.05s wusers 命令# 查看当前系统中所有终端上登录的用户名[rootCentOS79 ~17:16:08]# userswuyanzu wuyanzu wuyanzuuseradd 命令 创建用户# 创建用户[rootCentOS79 ~17:16:13]# useradd user01[rootCentOS79 ~17:17:35]# grep user01 /etc/passwduser01:x:1001:1001::/home/user01:/bin/bash创建的新用户家目录来源于/etc/skel/当中[rootCentOS79 ~14:21:32]# ls -a /etc/skel....bash_logout .bash_profile .bashrc .mozilla创建的新用户默认属性参数在/etc/login.defs用vim进入[rootCentOS79 ~14:23:06]# vim /etc/login.defsusermod 命令 修改用户属性usermod用法# usermod 参数 用户名# -u 修改用户 UID用户数字 ID[rootCentOS79 ~16:56:10]# usermod -u 56 user01# -s 修改登录 shell# 允许登录[rootCentOS79 ~16:57:59]# usermod -s /bin/bash user01# 禁止登录[rootCentOS79 ~16:58:06]# usermod -s /bin/nologin user01# -aG 追加附属组重点-a 必须配 - G# 给 user02 额外加入 wheel、ftp 两个组不覆盖原有附属组[rootCentOS79 ~16:59:29]# usermod -aG wheel,ftp user01# -d 修改家目录路径-m 迁移旧家目录文件# 单独-d只改配置不会移动文件-md组合一起用# 改家目录为/home/newuser同时把旧文件全部移过去[rootCentOS79 ~17:02:13]# usermod -md /home/newuser user01# -l 修改用户名重命名账号# user02 改名叫 newuser[rootCentOS79 ~17:03:25]# usermod -l newuser user01userdel 命令 删除系统已存在的用户账号# userdel 参数 用户名# 不加任何参数仅删账号保留家目录 邮件# 删除 /etc/passwd、/etc/shadow 里的用户记录# 保留 /home/laowang 家目录、用户邮件文件[rootCentOS79 ~17:06:53]# userdel laowang# -r 彻底删除删账号 家目录 邮件常用 -f 常用# 删除用户账号、密码记录# 自动删除 /home/laowang 整个家目录# 删除该用户对应的邮件文件 /var/spool/mail/laowang[rootCentOS79 ~17:07:02]# userdel -r laowang在工作中常出现的问题/etc/bashrc 全系统共用终端配置/etc/skel 用户家目录模板bash 提示符变成初始字符当页面出现[rootCentOS79 ~17:11:21]# mv /etc/bashrc{,.ori}[rootCentOS79 ~17:18:32]# bashbash-4.2## {}里面逗号和点位置不对是因为 nologin shell打开的时候执行了/etc/bashrc 的配置若果需要恢复的话bash-4.2# mv /etc/bashrc{.ori,}bash-4.2# bash# 将{}里面的逗号和点转换位置误删用户家目录远程操控服务器在登录账号不小心将用户的家目录误删# 远程登录不上 报错发现没有LJY这个家目录代表家目录被删除[rootCentOS79 ~15:42:00]# ssh LJYlocalhostLJYlocalhosts password: Could not chdir to home directory /home/LJY: No such file or directory -bash: 配置内容: command not found -bash-4.2$ # /etc/skel 是系统给所有新用户准备的默认配置模板把整套模板复制出来重新生成家目录 [rootCentOS79 ~ 15:47:11]# cp -r /etc/skel/ /home/LJY # 刚复制的文件夹主人还是 root 管理员这条命令把文件夹所有权改成操作人本人 [rootCentOS79 ~ 15:47:24]# chown LJY:LJY /home/LJY # 验证登录 [rootCentOS79 ~ 15:47:32]# ssh LJYlocalhost LJYlocalhosts password: Last login: Sun Jul1915:46:152026from localhost -bash: 配置内容: 未找到命令[LJYCentOS79 ~15:48:12]$没有权限切换家目录读 r、写 w、进入 x# 当用ssh xxxlocalhost 登陆时出现Could not chdir to home directory /home/zhangsan: Permission denied -bash: /home/zhangsan/.bash_profile: 权限不够 -bash-4.2$ 说明出现没有权限切换家目录的问题[LJYCentOS79 ~16:18:28]$sshLJYlocalhost Could not create directory/home/LJY/.ssh.Failed toaddthehostto the list of known hosts(/home/LJY/.ssh/known_hosts).# 修复 把主人的读、写、进入权限还回去[rootCentOS79 ~16:20:20]# chmod urwx /home/LJY# 验证登录[rootCentOS79 ~16:20:41]# ssh LJYlocalhostLJYlocalhosts password: Last login: Sun Jul1916:19:072026from localhost -bash: 配置内容: 未找到命令[LJYCentOS79 ~16:20:51]$注意点没权限进家目录报错Permission denied文件夹还在但不让进误删家目录报错No such file or directory文件夹直接没了本地组管理groupadd 命令 新建用户组# 基础语法groupadd[参数]组名# 创建一个组[rootCentOS79 ~16:45:34]# groupadd dev# -g 将这个组的gid设置成2000[rootCentOS79 ~16:47:55]# groupadd -g 2003 dev# 验证[rootCentOS79 ~16:48:47]# grep dev /etc/groupstapdev:x:158: dev:x:2003:groupmod 命令 修改已经存在的用户组# 基础语法groupmod[参数]原组名# -n 修改组名称重命名组 修改组dev为del[rootCentOS79 ~16:54:27]# groupmod -n del dev# -g 修改组id 修改组id为2009[rootCentOS79 ~16:54:55]# groupmod -g 2009 del# 验证[rootCentOS79 ~16:57:54]# grep del /etc/groupdel:x:2009:groupdel 命令 删除已存在的用户组# 基础用法groupdel组名# 删除组del[rootCentOS79 ~16:58:40]# groupdel del# 验证[rootCentOS79 ~17:00:41]# grep del /etc/groupgroupmems管理组内附加成员添加 / 删除 / 查看 / 清空组里的用户# -g 组名指定要操作的组只有 root 能加这个参数# -a 用户名把用户添加进这个组附加组# -d 用户名从组里删除该用户# -l列出这个组里所有附加成员# -p一键清空组内全部附加成员# 基础用法groupmems-g目标组名[参数]用户名# 把 LJY 加入 dev 组[rootCentOS79 ~17:05:10]# groupmems -g dev -a LJY# 查看 dev 组里有哪些用户[rootCentOS79 ~17:05:53]# groupmems -g dev -lLJY# 把 LJY 从 dev 组移除[rootCentOS79 ~17:07:18]# groupmems -g dev -d LJY# 清空 dev 组所有成员[rootCentOS79 ~17:07:57]# groupmems -g dev -p# 验证[rootCentOS79 ~17:09:08]# groupmems -g dev -l管理用户密码shadow文件/etc/passwd所有人都能读密码放里面不安全所以系统把加密后的用户密码、账号有效期单独存在/etc/shadow# wuyanzu用户名# $6$xxxxxx$xxxxxxxxxxxx加密密码# ! 或 *账号锁定禁止登录# $6$ 代表 SHA512 加密算法# 19200从 1970-01-01 到上次改密码过了多少天# 0改完密码后最少隔 0 天才能再次修改# 99999密码最长有效期99999 天约 273 年# 7密码过期前 7 天弹窗提醒改密码# 空密码过期后宽限几天还能登录# 空账号彻底失效的绝对日期天数# 空预留字段[rootCentOS79 ~21:15:17]# grep wuyanzu /etc/shadowwuyanzu:$6$vcRdtzGIkOiuel6k$rWyGhaa.kv1a0aBv6bDkaxs8S8p7ebYt4HqcWkuRjDUEEwLjDuJl4NqC0p8Qa7xjXVHXAWCzC/1k19llO9e2P.::0:99999:7:::文件权限存储内容可读人群/etc/passwd644用户基础信息UID、家目录、shell所有用户都能读/etc/shadow600加密密码、账号有效期仅 root 可读chage命令# 专门管理用户密码 / 账号有效期修改 /etc/shadow 文件里的时效字段# -l 查看账号全部时效信息最常用)[rootCentOS79 ~21:24:11]# chage -l LJY最近一次密码修改时间 7月19,2026密码过期时间 从不 密码失效时间 从不 帐户过期时间 从不 两次改变密码之间相距的最小天数 0 两次改变密码之间相距的最大天数 99999 在密码过期之前警告的天数 7# -M 密码最大有效期多少天必须改密码# 密码30天到期到期强制改密码[rootCentOS79 ~21:25:43]# chage -M 30 LJY# -m 密码最小修改间隔 改完密码后最少要等多少天才能再次修改# 改完密码7天内不能重复修改[rootCentOS79 ~21:26:07]# chage -m 7 LJY# 0 随时能改[rootCentOS79 ~21:26:07]# chage -m 0 LJY# -W 过期前提醒天数 密码到期前几天登录时弹窗提醒改密码# 到期前5天开始提醒[rootCentOS79 ~21:26:07]# chage -W 5 LJY# -E 设置账号彻底失效日期绝对过期# # 2026-12-31 账号彻底作废无法登录[rootCentOS79 ~21:30:21]# chage -E 2026-12-31 LJY# # -1 取消永久失效恢复正常[rootCentOS79 ~21:31:00]# chage -E -1 LJY# -d 强制重置 “上次修改密码日期”# 把上次改密码时间清零用户下次登录强制改密码[rootCentOS79 ~21:31:07]# chage -d 0 LJYusermod -p更改用户密码# 删除用户密码 改密码放在‘’里面即可前提是必须要是加密密码为$6$开头[rootCentOS79 ~21:35:35]# usermod -p LJYusermod -s限定用户shell修改用户登录解释器登录 shell# 更改LJY的shell登陆方式 更改 sbin nologin[rootCentOS79 ~21:47:28]# usermod -s /sbin/nologin LJY# 报错显示登陆不上[rootCentOS79 ~21:47:55]# su -l LJYLast login: Sun Jul1921:47:05 CST2026on pts/0 This account is currently not available.# 修复 能够登录上 更改bin bash[rootCentOS79 ~21:51:45]# usermod -s /bin/bash LJY[rootCentOS79 ~21:51:55]# su - LJYLast login: Sun Jul1921:51:13 CST2026on pts/0 -bash: 配置内容:commandnot foundusermod -L锁定用户密码 相当于passwd -l# 即使输入正确的密码也登录不进去[wuyanzuCentOS79 ~21:52:00]$usermod-LLJYusermod -U解锁用户密码# 输入正确的密码即可登录[wuyanzuCentOS79 ~21:54:49]$usermod-ULJYpasswd -d删除密码# 删除用户名密码[wuyanzuCentOS79 ~22:02:30]$usermod-dLJYusermod -e 设置账号过期 类似于passwd -e[wuyanzuCentOS79 ~22:02:52]$usermod-e2026-7-20 LJY其他shell# 查看shell清单[rootCentOS79 ~22:08:23]# cat /etc/shells/bin/sh /bin/bash /usr/bin/sh /usr/bin/bash /bin/tcsh /bin/csh# 开头l代表快捷方式就像电脑桌面的软件快捷图标。# /bin/sh 只是个名字幌子你点它实际跑的还是 bash 程序。# 为啥要做这个快捷方式# 几十年前老脚本、老程序都写/bin/sh现在系统只有 bash做个快捷方式兼容老代码老脚本不会报错。[rootCentOS79 ~22:11:09]# ls -l /bin/sh /usr/bin/shlrwxrwxrwx.1root root4Jul1419:12 /bin/sh -bashlrwxrwxrwx.1root root4Jul1419:12 /usr/bin/sh -bash# 安装tmux# tmux 是运维最重要的工具 远程 ssh 连服务器跑几小时的任务比如编译、同步文件一旦关窗口、断网普通窗口会直接杀掉正在跑的程序全部白干。#tmux 可以把任务挂在服务器后台你电脑关机都不影响程序运行下次重新连上 ssh能切回刚才操作的界面。[rootCentOS79 ~22:12:22]# yum install -y tmuxtmux 基础操作所有 tmux 快捷键第一步必须先按Ctrlb松开再按后面字母按c新开一个独立窗口会话按数字0/1/2切换到对应编号的窗口/etc/shells能用来登录的窗口程序清单sh、csh 全是快捷方式真身分别是 bash、tcshtmux 是远程运维神器防止断网任务中断云计算必学csh 国内几乎不用认识概念即可不用深挖。Linux 提权管理su 命令su -l username启动一个登录shell设置了shell环境 可简写成su -su username启动一个非登录shell使用当前的环境设置上一个用户# 基本使用方法su- 用户名-c要执行的完整命令# -c 参数只执行一条命令用完立刻切回自己# 仅用LJY身份执行id执行完返回原账号[rootCentOS79 ~22:30:59]# su - LJY -c id/etc/profile: line1: 配置内容:commandnot founduid1002(LJY)gid2003(LJY)groups2003(LJY)contextunconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023# -s指定切换后使用的 shell# 仅用LJY身份执行id执行完返回原账号# 以完整登录模式切换到用户 LJY并且登录后不使用 bash强制使用/bin/sh作为交互命令行。[rootCentOS79 ~22:28:43]# su - LJY -s /bin/sh补充# 添加账户后为账户增加密码 1013为密码 LJY为账户[rootCentOS79 ~22:33:12]# echo 1013 | passwd --stdin LJYChanging passwordforuser LJY. passwd: all authentication tokens updated successfully.sudo 命令sudo配置# 进入visudo后找到以下两条# 其中两条记录wheel组中成员可以以任何用户身份执行任何命令rootALL(ALL)ALL# 组以%开头%wheelALL(ALL)ALL[rootCentOS79 ~22:36:15]# export EDITORvim[rootCentOS79 ~22:49:55]# visudo在分配命令的时候切记只给用户特定功能的命令例如用户管理相关命令而不是通用功能的工具例如 vim。配置文件路径主配置文件/etc/sudoers正常情况不要修改。从配置文件/etc/sudoer.d/*如果想添加配置在此处添加。# 全部在visudo页面操作# 无需输入密码直接登录LJYALL(ALL)NOPASSWD:ALL# 只能够执行特定命令LJYALL(ALL)/sbin/useradd,/sbin/usermod,/sbin/userdel# sudo vim 用管理员最高权限打开 vim 编辑器去编辑那些普通用户没资格修改的系统文件[rootCentOS79 ~23:17:55]$sudovim/etc/passwd以下是关于 Linux 中su和sudo使用的几条建议优先使用sudo而非susudo允许临时获取管理员权限操作完成后自动退回普通用户状态降低误操作风险而su会直接切换到 root 身份长期保持高权限状态存在安全隐患。限制su的使用范围尽量仅在需要长时间执行多个管理员操作时使用su且完成后立即通过exit退出 root 身份避免在 root 权限下进行日常操作。合理配置sudoers文件通过visudo命令配置sudoers精确控制用户可执行的管理员命令如user ALL(ALL) /bin/apt避免授予无限制的sudo权限。注意命令的完整路径使用sudo时尽量指定命令的绝对路径如sudo /usr/bin/apt update防止因环境变量篡改导致的安全风险。避免在脚本中硬编码sudo密码不要在脚本中直接写入sudo密码如通过管道传递可通过配置sudoers实现特定命令免密执行或使用更安全的权限管理方式。定期审计操作日志sudo的操作会记录在/var/log/auth.log或/var/log/secure中定期检查日志可追踪权限使用情况及时发现异常操作。userdelbash # sudo vim 用管理员最高权限打开 vim 编辑器去编辑那些普通用户没资格修改的系统文件 [rootCentOS79 ~ 23:17:55]$ sudo vim /etc/passwd以下是关于 Linux 中su和sudo使用的几条建议优先使用sudo而非susudo允许临时获取管理员权限操作完成后自动退回普通用户状态降低误操作风险而su会直接切换到 root 身份长期保持高权限状态存在安全隐患。限制su的使用范围尽量仅在需要长时间执行多个管理员操作时使用su且完成后立即通过exit退出 root 身份避免在 root 权限下进行日常操作。合理配置sudoers文件通过visudo命令配置sudoers精确控制用户可执行的管理员命令如user ALL(ALL) /bin/apt避免授予无限制的sudo权限。注意命令的完整路径使用sudo时尽量指定命令的绝对路径如sudo /usr/bin/apt update防止因环境变量篡改导致的安全风险。避免在脚本中硬编码sudo密码不要在脚本中直接写入sudo密码如通过管道传递可通过配置sudoers实现特定命令免密执行或使用更安全的权限管理方式。定期审计操作日志sudo的操作会记录在/var/log/auth.log或/var/log/secure中定期检查日志可追踪权限使用情况及时发现异常操作。使用sudo -i替代su进行交互式操作若需要类似su的交互式 root 环境可使用sudo -i它会加载 root 的环境变量同时保留sudo的日志记录功能。