Linux权限管理
Linux下的用户
在linux下有两种用户:超级用户(root)和普通用户。
- 超级用户拥有最高的权限,做任何的事情都不受限制,且其命令提示符是“#”。
- 普通用户的权限没有root那么高,会受限制,它的命令提示符是“$”。
解释下面两个命令:
命令:su[用户名](su-[用户名])后面的目录可以切换到用户的家目录下,路径发生改变,前者路径不发生改变。
功能:切换目录。
例子:root用户普通用户和普通用户切root用户,前者不需要密码,后者需要密码。
文件的权限
文件访问者:
(1)文件和文件目录所有者:
u(user),所有者就是创建文件的用户,用户是所有用户所创建文件的所有者,用户可以允许所在的用户组能访问用户的文件。
(2)文件和文件目录的所在者的所在组的用户:
g(group):用户都组合成用户组,例如某一类或某一项目中的所有用户能够被系统管理员归为一个用户组,一个用户能够授予所在用户组的其他成员的文件访问权限。
(3)其他用户:
o(others):用户(上面hym就是创建的一个用户)也将自己的文件向系统内的所有用户开放,在这种情况下,系统内的所有用户都能访问用户的目录或文件。在某种意义上,系统内的其他所有用户就是other用户类。
这点有点类似QQ空间的访问权限:
这个QQ空间属于我的,我相当于管理者(也就是所有者),我想怎么访问就怎么访问。
同样,我可以设置允许QQ好友访问,这些QQ好友就类似于“用户组”。
当然,我可以允许所有人访问,这里的所有人就类似于(不完全等价)“其他用户”。
文件类型和访问权限
文件类型:
- d:文件夹(目录文件)
- -:普通文件(文本,各种动态静态静态库,可执行程序等)
- l :软连接(相当于windows下的快捷方式)
- b :块设备文件(硬盘、光驱等)
- p :管道文件(用于通信)
- c :字符设备文件(屏幕等串口设备)
- s : 套接字文件
总结: Linux下一切皆文件,且Linux系统下不区分文件后缀。
基本权限:
- r(读权限):read对于文件而言,具有读取文件内容的权限;对于目录而言,具有浏览该目录信息的权限,目录如果r权限,那么就意味着不能通过ls查看这个目录内部的内容。
- w(写权限):write对于文件而言,具有修改文件内容的权限;对于目录而言,具有创建或删除目录下文件的权限。
- x(执行权限):execute对于文件而言,具有执行文件的权限;对于目录而言,具有进入目录的权限(因为进入目录其实是修改了pwd)。
文件权限值的表示
文件权限值的表示有两种:字符表示法和八进制数字表示法,字符表示法不常用,所以这里只介绍八进制数字表示法。
字符表示 | 八进制 | 二进制 |
---|---|---|
rwx | 7 | 111 |
rw | 6 | 110 |
rx | 5 | 101 |
wx | 3 | 011 |
r | 4 | 100 |
w | 2 | 010 |
x | 1 | 001 |
— | 0 | 000 |
rwx可以看作三位二进制数,缺失哪一位那一位就置为0,否则置为1。
权限设置
chmod
语法:chomd[参数] 权限 文件名
功能:设置文件访问权限,只有文件的拥有者和root才可以改变文件权限。
常用选项:-R :递归修改目录文件的权限。
示例:
示例1:使用八进制方法修改权限(这里只介绍八进制方法,因为简单)
示例2:使用参数-R递归的修改目录文件的权限
chown
语法:chown[参数] 用户名 文件名或目录 (chown o:g file1 file2...)
功能:修改文件的拥有者
说明:可以批量处理文件,其中o写的是修改后的所属用户,g写的是修改后的所属用户组
示例:
示例1:修改文件所属用户
示例2:批量修改文件所属用户和所属组
chgrp
语法:chgrp [参数] 用户组名 文件名
功能:修改文件或目录的所属组
常用选项:-R 递归修改文件或者目录的所属组
umask
语法:umask权限值
功能:
- 查看或者修改文件掩码
- 新建文件夹默认权限=0666
- 新建目录默认权限=0777
说明:将文件默认权限值减去权限掩码中有的权限值就是创建一个文件有的权限。
示例:
示例1:查看默认的掩码值
示例2:修改默认权限掩码,使得创建一个文件时,所有人都只有读权限,也就是(444)
目录权限
目录下的三种权限
- r:可以浏览目录内容
- w:可以在该目录下创建或删除文件
- x:可以进行目录。进入目录本质是修改了路径,也就是pwd。