Linux权限
1.Shell
一般操作系统的发行版指的是:内核程序加外壳程序(Shell)。
Shell是外壳程序的统称。
一般情况下使用者并不会直接和操作系统的内核程序进行交互,因为这会让操作门槛变高,而且对系统本身也不安全。因此需要外壳程序来转化我们的需求,让操作者使用起来更方便。
外壳程序的总结
- 是用户和操作系统内核交互的中间软件层
- 可以在一定程度上保护操作系统
- 进行命令和图形化信息的翻译,处理结果显示给使用者,门槛降低
2.root用户
root是Linux中的超级用户,这一篇所讲的所有权限都不会限制root,其它用户要进行某些操作需要借助root的权限。
3.权限的两大核心
权限的两大核心:人+事物属性
(1)人
我们在Linux下查看文件的具体信息:
Linux下人分为3种:
- 拥有者:文件属于谁
- 所属组:文件属于那个组
- others:既不是拥有者,又不是所属组,都是others
(2)事物属性
我们现在回过头来看这一段:
4.权限的修改
(1)修改属性
这里需要用到chmod指令
语法:chmod 具体操作 文件
注意:只有文件的拥有者和root才可以改变文件的权限
[1]第一种修改方式
四种表示:
- u-代表拥有者
- g-代表所属组
- o-代表others**
- a-代表所有人
具体修改:
不过需要注意的是有权限不代表能做到,比如一个文本文件,即使你拥有x权限也没有办法执行,这是由文件本身类型决定的。
[2]第二种修改
(2)修改拥有者和所属组
在讲这部分之前,先问大家一个问题:我是这个文件的拥有者,我就可以随便转让这个文件给别人或者给其它组吗?
答案是不行,你肯给别人未必肯要,修改拥有者和所属组必须要用root的权限才能完成修改。
更改拥有者:
chown指令
语法:chown [选项] 用户名 文件名
常用选项:-R 递归修改文件或目录的拥有者
更改所属组:
chgrp指令
语法:chgrp [选项] 用户名 文件名
常用选项:-R 递归修改文件或目录的所属组
当涉及权限问题时,除了切换root用户,更好的做法是添加普通用户到信任列表,在需要的时候临时提高权限。
如何添加到信任列表:
- 打开终端切换到root用户
- 执行vim /etc/sudoers
- 找到这个位置
- shift+i切换到编辑模式
- 复制107行内容并在下面粘贴,前面的部分替换成用户名
- 先按ESC退出,后shift+:,依次输入w!和q!,添加完成。
临时提升权限方式:
sudo 指令(以root的权限执行后面指令)
5.目录权限理解以及粘滞位
- x(执行)权限:进入目录需要x权限
- r(读)权限:看目录文件需要r权限
- w(写)权限:在目录中创建、删除新文件需要w权限
试想一下,如果有多个人在同一目录进行开发,即使你创建的文件权限不对他人开放,别人虽然无法读写执行,但可以直接删除你的文件,毕竟文件的删除权限是由目录决定的。但你也不能直接修改目录的权限,不然大家都没法删除、创建新文件了。基于上述情况,我们引出粘滞位的概念。
粘滞位是 Linux 系统中一个特殊的文件权限属性(代替x权限的位置),只能给目录设置,设置完成后可以正常进入目录,创建文件,但只能删除自己的文件。
粘滞位设置:利用chmod命令
chmod +(-) t 目录 ->设置(取消)粘滞位
6.权限掩码umask
(1)查看umask
我们看到umask是一个数字码,第一位代表特殊权限,这个后面不需要,也比较少用。后三位依次对应拥有者、所属组、others,我们转化为二进制看看:
(2)umask作用
一般目录起始权限为777(rwx),普通文件为666(rw-)
文件/目录创建时的初始权限 = 起始权限 & (~umask)
凡是在umask中出现的权限,都不应该出现在最终权限中
默认情况下umask为0002
图解:
(3)umask设置
永久生效的修改就不讲了,前面配置文件没有硬性要求尽量别动。