4.16日志

张开发
2026/4/20 20:06:07 15 分钟阅读

分享文章

4.16日志
第七章 命令解释器 Shell一、Shell 是什么Shell 俗称壳是用户与 Linux 内核之间的命令解释器负责解析用户输入的命令再交给内核去执行。Shell 的命令分为两类内置命令Shell 自带的命令用于完成基本的自我管理如cd、echo等外置命令存储在文件系统某个目录下的可执行文件命令名即文件名如/usr/bin/ls二、type 命令 —— 查看命令类型type命令可以告诉你一个命令究竟是内置命令、外置命令还是 alias 别名。格式type -参数 命令名常用参数-a列出当前命令所有可能的执行方式-t仅显示命令的类型builtin / file / alias[rootserver ~]# type cd cd 是 shell 内建 [rootserver ~]# type -t cd builtin [rootserver ~]# type ls ls 是ls --colorauto的别名 [rootserver ~]# type tree tree 是 /usr/bin/tree三、PATH 环境变量 —— Shell 如何找到命令系统把所有外置命令的存放路径记录在环境变量PATH中每次执行外部命令时Shell 会依次到 PATH 记录的路径中查找同名文件。找到就执行找不到就报命令未找到。复制[rootserver ~]# echo $PATH /root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin四、Linux 中的特殊符号Linux 中有一组常用的特殊符号熟练掌握可以让命令更高效;分隔多条命令在一行内依次执行*匹配任意零个或多个字符不能用于创建文件?匹配任意单个字符[]匹配方括号内的任意一个字符[^]或[!]取反匹配{string,string}匹配括号中任意一个字符串可用于创建/查看/删除文件\转义符使其后的特殊字符失去特殊含义也可用于命令换行反引号引用命令等同于$()括号内的命令会被先执行单引号所有内容原样输出特殊字符在单引号内均失效双引号大多数内容原样输出但$、\和反引号仍保留含义五、命令别名 alias别名是命令的快捷方式对于参数很多、需要频繁使用的长命令非常有用。格式alias 别名原命令 -参数查看当前所有别名[rootserver ~]# alias alias cpcp -i alias llls -l --colorauto alias rmrm -i ...一些实用的别名示例alias untartar -zxvf # 快速解压 alias pingping -c 5 # 限制 ping 次数为5次 alias getpassopenssl rand -base64 20 # 随机生成20位密码 alias cclear # 快速清屏删除别名unalias 别名⚠️ 注意别名持久化在命令行中设置的 alias仅当次登录有效重新登录后失效。要让别名永久生效需要写入配置文件vim ~/.bashrc # 针对当前用户 source ~/.bashrc # 立即生效 vim /etc/bashrc # 针对所有用户 source /etc/bashrc六、命令历史 historyhistory命令可以查阅之前执行过的命令记录在需要重复执行某条命令时非常方便。history 10 # 显示最近10条命令 history -c # 清空当前历史记录 !16 # 重新执行历史记录中第16条命令历史记录条数由/etc/profile文件中的HISTSIZE决定默认值通常为 1000。第八章 账户和组管理一、用户分类Linux 系统中的用户分为三类超级账户root拥有一切权限UID 为 0仅在系统维护时使用系统账户系统运行所需的内置账户如 bin、daemon、sshd 等UID 范围 1999不能登录普通用户日常使用的账户UID ≥ 1000工作组分为两类基本组私有组新建用户时自动创建的与用户名同名的组扩展组公有组可容纳多个用户组内所有成员共享组权限二、相关配置文件账户和工作组的信息存储在以下四个文件中/etc/passwd用户账号信息用户名、UID、GID、家目录、Shell 等/etc/shadow加密后的用户密码只有 root 可读/etc/group工作组信息/etc/gshadow工作组密码/etc/passwd 字段说明每行7个字段用:分隔格式为账号名:密码占位:UID:GID:个人资料:家目录:Shell密码字段现在显示x实际密码存储在/etc/shadowroot UID0系统账户 UID 1999普通用户 UID ≥ 1000三、用户管理添加用户 useradduseradd -参数 账户名常用参数-u UID指定 UID-g 组名指定基本组-G 组名指定附加组可多个逗号分隔-d 目录指定家目录-s shell指定登录 Shell-M不创建家目录-e 日期设置账号失效日期# 新建普通用户 useradd test1 # 查看是否创建成功 tail -1 /etc/passwd tail -1 /etc/shadow ls -ld /home/test1Linux 账号必须设置密码才能登录。passwd 账户名也可以非交互式设置密码脚本常用echo 密码 | passwd --stdin 用户名常用参数-l锁定账户禁止登录-u解锁账户-d清空密码密码为空时仍可登录与未设置密码不同# 设置 test1 密码 echo redhat | passwd --stdin test1 # 锁定账户 passwd -l test1复制echo redhat | passwd --stdin test1 tail -1 /etc/shadow修改用户 usermodusermod -参数 账户名常用参数与 useradd 基本相同另外有-l 新名称重命名用户-L锁定用户-U解锁用户# 将 test1 添加进附加组 wheel usermod -G wheel test1删除用户 userdeluserdel 账户名 # 仅删除账户 userdel -r 账户名 # 同时删除家目录⚠️ 若该用户当前已登录有活跃进程直接删除会报错需先退出该用户的 Session多按几次 CtrlD 退回 root再删除。复制useradd tempuser echo 123456 | passwd --stdin tempuser id tempuser userdel -r tempuser id tempuser四、账户切换su 命令su 账户名 # 切换用户保留当前环境变量 su - 账户名 # 切换用户完整加载目标用户的环境su和su -的区别在于加载的配置文件不同su仅加载~/.bashrc、/etc/bashrcsu -完整加载/etc/profile、~/.bash_profile等相当于重新登录从 root 切换到任意用户无需密码从普通用户切换到其他用户需要输入目标用户密码。sudo 命令sudo可以让普通用户以 root 权限执行特定命令需要 root 先在/etc/sudoers中配置授权。配置方式visudo # 或 vim /etc/sudoers # 在文件中添加 fox ALL(ALL) ALL # 格式账户名 允许的主机(以谁的身份) 可执行的命令配置后fox 用户使用 sudo 时输入自己的密码即可临时获得 root 权限。五、组管理创建工作组 groupaddgroupadd 组名 groupadd -g GID 组名 # 指定 GID修改工作组 groupmodgroupmod -g 新GID -n 新组名 原组名添加/删除组成员 gpasswdgpasswd -a 用户名 组名 # 将用户加入组 gpasswd -d 用户名 组名 # 将用户从组中移除 gpasswd -M 用户1,用户2 组名 # 批量添加多个用户 gpasswd -A 用户名 组名 # 指定组管理员删除工作组 groupdelgroupdel 组名⚠️ 若该组是某用户的基本组必须先删除该用户才能删除组。六、查看用户登录情况users # 查看当前登录的所有用户 who # 显示当前登录用户及终端信息 w # 详细显示登录用户及其正在执行的命令 last # 查看历史登录记录 lastlog # 查看每个账号的最近登录时间w命令输出最详细第一行显示系统运行时长和负载之后每行为一个登录用户包含 TTY、登录时间、空闲时间、当前执行的进程等信息。第九章 Linux 文件系统权限一、文件权限基础执行ll或ls -l查看文件详细信息时最左侧的一段字符就是权限信息-rw-r--r--. 1 root root 2083 4月 26 14:39 /etc/passwd权限针对三类对象定义uowner文件所有者ggroup所属组oother其他人每类对象有三种权限rread读权限 —— 对文件可读取内容对目录可列出内容wwrite写权限 —— 对文件可修改内容对目录可创建/删除文件需配合 xxexecute执行权限 —— 对文件可作为程序执行对目录可cd进入权限的数字表示每种权限对应一个数字r4、w2、x1三类对象各自相加rwx 421 7 rw- 420 6 r-- 400 4 --- 000 0例如rwxr-xr-- 754⚠️ root 账户不受 r、w 权限限制但执行权限 x 仍然受限制。二、chmod 命令 —— 修改权限# 字符模式 chmod [ugoa][-][rwx] 文件或目录 # 数字模式 chmod nnn 文件或目录 # 递归修改对目录下所有文件生效 chmod -R nnn 目录参数说明u/g/o/a所有者/所属组/其他人/全部添加权限-移除权限直接赋值覆盖原有权限# 添加执行权限给所有人 chmod x t1.txt # 只给 other 添加写权限 chmod ow t1.txt # 数字方式设置为 rwxrwxrwx chmod 777 t2.txt # 数字方式设置为 no permission chmod 000 t2.txt # 递归设置整个目录权限为 755 chmod -R 755 m1/三、chown 命令 —— 修改所有者和所属组chown 所有者:所属组 文件名 chown -R 所有者:所属组 目录 # 递归修改、[rootserver ~]# touch t4.txt [rootserver ~]# ll t4.txt -rw-r--r--. 1 root root 0 5月 6 t4.txt [rootserver ~]# chown fox:fox t4.txt [rootserver ~]# ll t4.txt -rw-r--r--. 1 fox fox 0 5月 6 t4.txt四、特殊权限除了 r/w/x 三种一般权限Linux 还有三种特殊权限SUIDSet UID设置在可执行文件上执行期间临时获得该文件所有者的权限典型例子/usr/bin/passwd具有 SUID普通用户执行它时可以临时以 root 身份写入/etc/shadow[rootserver ~]# ll /usr/bin/passwd -rwsr-xr-x. 1 root root 32648 /usr/bin/passwd # 注意所有者执行位是 s代表 SUIDSGIDSet GID设置在文件上执行期间临时获得该文件所属组的权限设置在目录上目录内新建的文件/子目录自动继承该目录的所属组Sticky Bit粘滞位只对目录有效在具有 Sticky Bit 的目录下用户只能删除/移动自己创建的文件不能删除其他人的文件典型例子/tmp目录设置特殊权限chmod us 文件 # 添加 SUID chmod gs 目录 # 添加 SGID chmod ot 目录 # 添加 Sticky Bit # 数字方式四位数第一位为特殊权限 # 4SUID, 2SGID, 1Sticky Bit chmod 4755 文件 # SUID rwxr-xr-x chmod 1777 目录 # Sticky Bit rwxrwxrwx五、ACL 权限一般权限只能针对 owner/group/other 三类对象设置**ACLAccess Control List**可以为指定的某个用户或某个组单独设置权限更加灵活。查看 ACL 权限getfacl 文件名设置 ACL 权限setfacl -m u:用户名:权限 文件名 # 给指定用户设置 ACL setfacl -m g:组名:权限 文件名 # 给指定组设置 ACL setfacl -R -m u:用户名:权限 目录 # 递归设置删除 ACL 权限setfacl -x u:用户名 文件名 # 删除指定用户的 ACL setfacl -b 文件名 # 删除文件所有 ACL综合示例创建项目目录允许旁听用户 pt 只读访问mkdir /project groupadd QQgroup useradd zhangsan useradd lisi useradd pt gpasswd -M zhangsan,lisi QQgroup chown root:QQgroup /project chmod 770 /project # 此时 pt 完全没有权限使用 ACL 单独授权 setfacl -m u:pt:rx /project ll -d /project # 注意权限后有 号表示存在 ACL getfacl /project六、权限掩码 umaskumask决定了新建文件和目录的默认权限新建文件的默认权限 0666 - umask新建目录的默认权限 0777 - umask[rootserver ~]# umask 0022 # 所以新建文件默认权限 666 - 022 644 # 新建目录默认权限 777 - 022 755 [rootserver ~]# touch file1 [rootserver ~]# mkdir dir1 [rootserver ~]# ll -d file1 dir1 drwxr-xr-x. 2 root root 6 dir1 # 755 -rw-r--r--. 1 root root 0 file1 # 644临时修改 umaskumask 000 # 修改后新建文件权限666, 目录777

更多文章