一.shell命令及原理
Linux系统可以看作是:Linux内核,Linux外壳及配套程序的集合。
Linux外壳也就是shell,为什么需要shell呢?
主要有两个原因:
- 内核的设计非常复杂,绝大部分使用者无法直接与Linux内核进行沟通交互,也无法直接读懂内核执行完命令的结果所以shell外壳充当媒介来往于操作者和内核之间。(外壳程序将用户输入的指令解释后传递给内核,内核执行命令后得到的结果经外壳处理后传递给用户)
- 有时用户想要内核执行的命令非法或者使用的指令内核完成不了,那么此指令会在shell外壳进行翻译时就被驳回。
注:shell是所有命令行解释器的统称,Linux下是bash,Windows下是图形化界面
二.普通用户与超级用户
一个Linux账户下只有一个超级用户:root,其余创建的用户都是普通用户。
su -用户名 :切换用户,root切换其他用户没有限制,普通用户切换root或者其他普通用户需要输入密码。
sudo 指令 :以root权限运行该指令 (sudo使用的前提是当前用户被添加到了白名单)。
三.文件的权限
【1】文件的角色属性
当ll查看当前路径下文件详细信息时会发现文件名前会出现框内的标志:
其中红框内的是文件的读写权限,绿框内是文件的拥有者,蓝框内是文件的所属组。
对于文件来说,除了拥有者和所属组还有other这个概念,other代表除了拥有者和所属组的其他人。
【2】文件的读写权限
其中,红色部分的第一列代表文件类型,普通文件是-,目录是d。
常见的文件类型:
后面的九列代表文件的读写权限,当用户不拥有权限是用”-“表示。
权限的总结:
【3】读写权限的二进制表示
有权限用1表示,无权限用0表示,上面的权限汇总表则可以用1和0表示。
四.修改文件权限
chmod 用户符号 +/-/= 权限符号 文件名
示例:
五. 文件权限的八进制修改方式
这里的666的二进制形式是:
110 110 110,
所有人的读写权限都存在,而无执行权限
六.修改文件的拥有者/所属组
chown 用户名 文件名 :修改拥有者
chgrp 所属组 文件名 :修改所属组
七.目录的权限理解
和普通文件不同,文件夹的读写和可执行权限对应的功能并不完全一样:
- 读权限( r ):用户能否查看文件夹下文件的信息
- 写权限( w ):用户能否在此文件夹下创建/删除文件
- 可执行权限( x ): 用户能否进入此文件夹
八.默认权限以及权限掩码
我们先创建一个目录和一个普通文件:
我们会发现以下:
- 目录的默认权限为:
7 7 5
- 普通文件默认权限:
6 6 4
这是因为默认权限由两个因素共同决定:
- 文件的起始权限
- 文件的权限掩码
文件的起始权限:
- 目录的起始权限为:
7 7 7
- 普通文件的起始权限为:
6 6 6
文件的权限掩码:
umask :查看文件的权限掩码
如图所示,我的Linux账号下权限掩码为0002,文件和目录的起始权限减去权限掩码后就得到了默认权限。
当然,权限的计算并非是简单的减法,而是:最终权限=起始权限&(~权限掩码)
示例:
九.修改权限掩码
umask 修改目标权限掩码
示例: