权限是指某个特定的用户是否具有特定的系统资源使用权力,用于限制人的,被访问的对象可能本身没有这种“属性”。
权限 = 人 + 事物属性
Linux用户分类
超级用户(root):可以在Linux系统做几乎任何事情,命令提示符为"#"。
普通用户:可以在Linux系统做有限的事情,命令提示符为"$"。
一个Linux系统只能有一个超级用户,而普通用户可以有多个。
Linux权限管理
文件访问者分类(人)
文件和文件目录的所有者:u(User)
文件和文件目录的所有这所在的组的用户:g(Group)
其他用户:o(Other)
文件类型和访问权限(事物属性)
在命令行任意目录输入"ll"或"ls -l"后会出现以下内容
文件类型
Linux不用文件后缀区分文件类型,而是使用文件属性中的第一列第一个字符来区分文件类型,可将后缀看作文件名的一部分。
- :普通文件(文本文件、可执行文件、归档文件等)
d:目录
b:块设备文件(磁盘、光驱等)
c:字符设备(键盘、显示器等)
p:管道文件
s:网络socket文件
l :链接文件
基本权限
(1)读(r):
(2)写(w)
(3)执行(x)
(4)无权限(-)
文件属性更改指令
更改权限
chmod a/u/g/o +/- rwx 文件名称
a:全部用户
u:文件拥有者
g:文件所属组
o:其他用户
+:增加权限
-:减少权限
如:
在输入以下指令后
chmod u+x text.txt
一次修改单个文件的多个权限使用 "," 隔开,如下
chmod u+r,g+w,o+x text.txt
一次修改单个文件的所有用户权限,如下
chmod a+r text.txt
表示权限的八进制方案
由于每个权限只有两种状态,读权限有"r"和"-",写权限有"w"和"-",运行权限有"x"和"-",有权限用1表示和没有权限用0表示,例如
文件拥有者的rwx权限可以表示为110,文件所属组的rwx权限可以表示为110,其他用户的rwx权限可以表示为100,将这些放在一起110 110 100转化为八进制是664,可以使用八进制数字来更改权限。
例如:
输入下列代码后
chmod 777 text.txt
默认权限
在创建普通文件(除可执行文件)时默认权限是664,而目录的默认权限是775。这是因为我们看到的默认权限是由系统设置的起始权限和权限掩码进行一些操作之后成为的最终权限。
最终权限 = 起始权限 & (~权限掩码)
如:
普通文件的起始权限为666,转换为二进制110 110 110
权限掩码为002,转换为二进制000 000 010
权限掩码取反为 111 111 101
110 110 110
&111 111 101
————————
110 110 100
普通文件的最终权限就是110 110 100,也就是664
目录的起始权限为777,转化为二进制111 111 111
权限掩码为002转换为二进制000 000 010
权限掩码取反为 111 111 101
111 111 111
&111 111 101
————————
111 111 101
普通文件的最终权限就是111 111 101,也就是775
更改文件拥有者及所属组
chown 用户 文件名称
chgrp 用户 文件名称
root用户以外的其他用户输入之后会提示操作不被允许,因为更改文件拥有者或所属组也要用户的允许。这时可以使用sudo强制更改。
sudo chown root text.txt
sudo chgrp root text.txt
上述两句指令可用一句代替
sudo chown root:root text.txt
粘滞位
有时需要共享目录给别人,这时文件的权限可以生效,但是不能阻止别人删除你的文件。为了防止别人删除你在目录中创建的文件,就可以使用粘滞位。
在目录中其他用户是否可以删除你的文件,由其他用户的w权限决定,当目录的其他用户有w权限时,其他用户可以在目录中创建或删除文件。
sudo chmod +t 目录名称
这时目录中的文件就只有文件拥有者和超级用户(root)可以删除。
粘滞位只可以对目录添加。
如果想要删除粘滞位,则需要输入以下命令
sudo chmod -t 目录名称