权限概念
一件事是否允许被谁“做”,这就是权限。权限 = 用户 + 文件属性。
在Linux上,用户分为普通用户和root。root是超级管理员 ≈ 天王老子,只能够有一个。root的命令提示符是#;普通用户通过root创建,可以有多个。普通用户的命令提示符是$。
Linux的文件属性有:读(r)、写(w)、执行(x)。
上面方框中的内容表示了文件的类型和权限,方框中一共十位字符:
第一位字符表明了文件的类型,文件的类型并不由文件名的后缀决定,而是由文件属性决定的,这里的后缀只是为了方便我们知道这事什么类型的文件。
—(这里用中文的破折号代替-,因为-不明显):普通文件、文本、可执行文件、归档文件(压缩包)等
d:目录
—————————————————以下为不常见文件类型
b:块设备,block,磁盘
c:字符设备,键盘或显示器
p:管道文件
s:文罗socket文件
l:链接文件:link
第2至4位表示了文件拥有者的权限;
第5至7位表示了文件所属组的权限;
第8至10位表示了其他用户的权限;
其中r表示读权限、w表示写权限、x表示执行权限、 - 表示没有该权限,rwx顺序固定不可更改,如果不具备该权限就用 - 表示。
用户权限的修改:
chmod u + r表示添加文件拥有者读权限,u + w表示添加文件拥有者写权限,u + x表示添加文件拥有者执行权限;
chmod u - r表示删除文件拥有者读权限,u - w表示删除文件拥有者写权限,u - x表示删除文件拥有者执行权限;
chmod g + r表示添加文件所属组读权限,g + w表示添加文件所属组写权限,g + x表示添加文件所属组执行权限;
chmod g - r表示删除文件所属组读权限,g - w表示删除文件所属组写权限,g - x表示删除文件所属组执行权限;
chmod o + r表示添加其他用户读权限,o + w表示添加其他用户写权限,o + x表示添加其他用户执行权限;
chmod o - r表示删除其他用户读权限,o - w表示删除其他用户写权限,o - x表示删除其他用户执行权限;
chmod a + r表示给所有用户添加读权限,a + w表示给所有用户添加写权限,a + x表示给所有用户添加执行权限;
chmod a - r表示删除所有用户的读权限,a - w表示删除所有用户的写权限,a - x表示删除所有用户的执行权限。
权限还能通过3位八进制数来修改,如chmod 000 文件名,一位八进制数可以写成3位二进制数,正好对应读、写、执行三个权限,二进制位1表示有该权限,二进制位0表示没有该权限。
目录的权限
对于目录来讲,如果没有r权限,我们就无法查看当前目录下的文件名和文件属性;
对于目录来讲,如果没有w权限,我们就无法在该目录下创建新文件;
对于目录来讲,如果没有x权限,我们就无法进入这个目录。
默认权限
不同的文件一创建就有不同的初始权限,而不是需要我们逐一授权的,这些初始的权限被称为默认权限,并且不同系统的默认权限是不一样的。但是默认权限并不是直接设置在系统内的,而是经过一些列变化形成的。
系统对不同的文件设定了不同的起始权限,普通文件的起始权限是666,目录文件的起始权限是777。系统为了能够更好的控制文件的权限,系统设置了权限掩码。通过umask可以查看系统的掩码,也可以修改。
先对权限掩码按位取反,然后和其实权限按位与,就得到了最终权限,也就是我们看到的默认权限。