
shell 命令及其运行原理Linux严格意义上说的是一个操作系统我们称之为“核心kernel“ 但我们一般用户不能直接使用kernel。而是通过kernel的“外壳”程序也就是所谓的shell来与kernel沟通。从技术角度shell的最简单定义命令行解释器 主要包含将使用者的命令翻译给核心(kernel)处理同时将核心处理的结果翻译给使用者Linux 权限概念Linux下有两种用户超级用户(root)普通用户超级用户可以再linux系统下做任何事情不受限制普通用户在linux下做有限的事情。超级用户的命令提示符是“#”普通用户的命令提示符是“$”。su 指令切换用户语法su [用户名]从超级用户切换到普通用户使用 su user。前面提到过普通用户执行一条命令但是没有权限可以使用sudo command短暂的提权使用root身份执行命令。但是现在我们使用sudo进行提权还是不能成功是因为系统并不信任这个用户需要将当前用户添加到/etc/sudoersz中后面我们再说这个配置问题。什么是权限权限是约束人的(一个人或某些群体)权限一件事情是否允许被谁做。Linux权限更多是文件权限文件权限 人 文件属性文件属性r(读) w(写) x(执行)文件类型注意Linux和windows文件的后缀差别很大Linux与文件后缀无关但是却可以使用后缀区分文件类型。如果要使用后缀仅仅是给用户做一个提示符来使用后缀本质上就是文件名的一部分。gcc等工具对文件后缀可能有要求。文件权限相关设置方法我们知道文件权限人文件属性因此设置权限时设置文件属性同时又要设置文件所属角色。chmod 指令设置文件的访问权限只有root和文件拥有者可以改变文件权限语法chmod [参数] 权限 文件名常用选项R- 递归修改目录文件权限chmod 命令权限值格式(1)用户表示符 /- 权限字符(2)三位八进制数字chown 指令修改文件的拥有者语法chown [参数] 用户名 文件名chgrp 指令修改文件或目录所属组语法chgrp [参数] 用户组名 文件名常用选项-R 递归修改文件或目录所属组权限便于我们系统进行安全管理为什么我们创建的文件或者目录默认权限是我们看到的样子Linux 规定目录起始权限 777普通文件起始权限 666umask 指令查看或修改文件掩码超级用户默认掩码值为0022普通用户默认为0002。系统默认配置号umask权限掩码凡是在umask中出现的权限都必须在起始权限中去掉。0777 -0022 0755 rwx r-x r-xfile 指令辨识文件类型语法file [选项] 文件或目录...常用选项-c 详细显示指令执行过程便于排错或分析程序执行的情形-z 尝试去解读压缩文件的内容如果我们要进入一个目录需要什么权限进入目录需要x权限r权限并不影响进不进目录而影响进入目录之后能不能查看目录文件列表w权限也不影响进不进目录而影响进入目录之后能不能创建文件。为什么系统规定目录必须是777开始的因为所有目录被创建处理一般都要能被进入必须要有x权限。粘滞位一般创建目录或文件都会在家目录下创建只能自己或者root进行操作其他人不能操作。但是可能存在这样一种情况允许其他人对自己的文件做一些自己允许权限的操作。我们知道Linux是一个多用户操作系统因此我们需要在一个公共的目录下允许其他人对临时文件的操作。Linux 默认公共目录tmp在公共目录中各个用户可以自由操作。但是在公共目录下即使没有其他用户文件的操作权限仍然可以可以对其进行删除操作。原因在于删除文件不是由文件权限决定的而是由目录所决定的。为了解决这个问题Linux 引入了粘滞位。在公共目录下允许各自rwx操作为了禁止大家互删对方文件需要给目录设置粘滞位。当一个目录被设置为粘滞位(用chmod t),则该目录下的文件只能由1.超级管理员删除2.该目录的所有者删除3.该文件的所有者删除