来源——《鸟哥的Linux私房菜 基础学习篇》第五章
学习笔记
引言
Linux是一个多用户系统,那么就不可避免的会涉及到用户权限的问题。
群组:另外Linux通过群组来框定某个范围的用户的权限。举例来说,通常一个团队开发资源时通常将每个专题组设定为一个群组,专题组内能访问修改自己的群组文件,不能访问其他的群组文件。每个账号都可以有多个群组的支持。
一般来说,在Linux里面,任何一个文件都有 [User] [Group] [Others] 三种身份的权限。
root就是“神”,拥有全部权限。
用户身份与群组记录文件
/etc/passwd #账号与一般身份使用者,root的相关信息
/etc/shadow #个人密码
/etc/group #组名
文件属性
我们直接使用root账户登录,然后输入 [ls -al] 查看所有文件权限列表。(若不是管理员身份登录的话,先使用 [su -] 切换一下身份)
由左到右依次是 [权限] [连结数] [拥有者] [群组] [文件容量] [修改日期] [文件名]
-
权限
示例:“drwxr-xr-x”,一共有10位。
第一位是文件类型,剩下的每三位一组,分别是 [拥有者权限] [群组权限] [其他人权限]
第一个字符:
[d] #目录
[-] #文件
[l] #连接文件(类似快捷方式)
[b] #可随机存取装置
[c] #串行端口设备(键盘鼠标等)
三个一组 :
除第一个外,接下来的9个字符按顺序每三个为一组,为 [rwx] 的组合,其中 [r] 代表可读、[w] 代表可写,[x] 代表可执行。这三个权限的位置不会改变,没有权限就显示 [-]。
-
连结数
记录有多少文件名连接到此节点
-
拥有者
-
群组
举例:class1、class2、class3均属于projecta群组,假设某个文件所属群组为projecta,且该文件权限为 [-rwxrwx---] 则class1、class2、class3三人对于该文件均可读可写可执行(第5 6 7位),如果是不属于projecta的其他账号,对于此文件就不具有任何权限了(第8 9 10位)
-
文件容量
默认单位为byte
-
修改日期
建档日期或最近修改日期
-
文件名
文件名前面若有 [ . ],则代表这个文件为隐藏文件。
文件权限的作用
- 系统保护
- 团队开发管理,数据共享
改变文件属性与权限
改变所属群组:chgrp
是change group的缩写,要被改变的组名必须在/etc/group文件内存在。
另外:chgrp -R 文件名,代表子目录所属群组也跟着一起更改,下同。
第1行和第5行是查看文件权限属性,第4行将文件的 [群组] 改为 users,由第3、7行对比,可见群组名已被更改。
改变文件拥有者:chown
change owner的缩写,注意,用户必须是已经存在系统中的账号,即在/etc/passwd中有记录
改变权限:chmod
有两种设定方法,分别是数字或者符号。
-
以数字类型设定
r:4,w:2,x:1。将三组中的每个字母转化成数字后叠加。
由上图得,将权限设置为770以后,nano.txt文件的权限由“-rw-r--r--”变为“-rwxrwx---”
以符号类型设定
u、g、o 分别代表 [users] [group] [others] 三种身份,且 a 代表 all .
根据上图,将权限由“-r-rwx---”更改为“-r--r-xr-x”
另外,还可以通过a+(-) [单个权限] 来对文件操作。
其中 a+w 代表所有的都加上可写属性。a-w代表,所有的都去掉可执行属性。