重点:linux下一切皆文件
linux下有两种用户
1、超级用户,也就是root
2、普通用户
超级用户可以在linux下做任何事情,不受限制。
普通用户在linux下只能做有限的事情。
linux下的文件
第一个字符代表文件类型
-:代表普通文件;d:目录;s:套接字;p:管道;l:链接文件;b:块设备;c:字符设备。
后面九个字符每三个为一组,分别代表user、group、other的权限
rwx代表当前用户拥有读、写和执行的权限(权限可以被修改)
Linux表示 | 说明 | Linux表示 | 说明 |
r-- | 只读 | -w- | 只写 |
--x | 仅可执行 | rw- | 可读可写 |
-wx | 可写可执行 | r-x | 可读可执行 |
rwx | 可读可写可执行 | --- | 无权限 |
权限符号 | 八进制 | 二进制 |
r | 4 | 100 |
w | 2 | 010 |
x | 1 | 001 |
rw | 6 | 110 |
rx | 5 | 101 |
wx | 3 | 011 |
rwx | 7 | 111 |
--- | 0 | 000 |
注意:root 啥都能干。
接下来后面的数字代表的是与该文件硬链接的个数,也就是相同的inode的个数,包括自己。
往后走的两组字符串代表的是拥有者和所属组。
20和74代表的是文件的大小,单位字节。
后面的日期代表的是修改时间,字符串代表文件名。
权限的修改
chmod命令
用法:chmod 参数 权限 文件名
用法1:chmod u-r main.c,改变main.c文件的读权限,u代表的是user,-r代表的是删除读权限
同理chmod u+r main.c 增加user对main.c的读权限。对于group和other分别采用g和o来代替u就行
如果一个文件没有对应的操作的权限,就会报Permission denied的错误
用法2:用二进制的方式修改rwx为一组,1代表存在,0代表无权限
u g o所对应的有三组rwx,比如说110 101 011 -> 653,在字符方式所对应下就为rw-r-x-wx。
例如chmod 666 main.c,给u、g和o都添加 r 和 w 权限:
目录的权限
如果将一个目录的读权限去掉,就无法查看目录里面的内容
如果一个目录没有写权限,则不能在目录里面添加新的文件。
如果一个目录没有可执行权限,则无法进入目录,进而导致无法读写。
修改文件的拥有者和所属组
chown命令:修改文件拥有者
如果直接修改成 root 权限会报错,因为权限不够,需要sudo一下
可以看到main.c的拥有者变为root了。
在普通用户模式下无法修改root用户的文件权限
chgrp命令:修改文件所属组
使用方法与chown同理
-t 权限
正常情况下,不会随意删除其他用户的文件。但是普通用户是可以删除root用户的文件的。
为了解决这个问题,给特定目录设置粘滞位,即采用chmod +t dir 的方式,使得该目录下自己只能删除自己的文件。
给当前目录加上-t 权限
umask
文件或者目录最开始创建的时候默认的权限是如何来的?
文件的默认权限是666,目录的默认权限是777,但是由于umask的存在,凡是在umask中存在的为1的位都要在实际权限中去掉。umask默认是000 000 010 。例如:
666-> | 110 110 110 |
umask-> | 000 000 010 |
最终权限 -> | 110 110 100 |
umask 的值可以更改