Linux下的用户分为超级用户(root)和普通用户(user)。
它们的区别在于:
sudo command
让普通用户以root的身份执行 command,只需要输入用户密码而不需要知道 root 的密码
注:使用一次sudo后短期内再次使用不需要输入用户密码

对于文件来说,访问者分为:所有者(user)、所属组(group)和其他人(others)。
在命令行中使用ll命令会显示当前目录下的文件详细信息,比如:
-rw-r--r-- 1 root root 231 Oct 1 15:58 file.txt
①- 表示文件类型,分为:
-:普通文件
d:目录
l:软链接(类似Windows的快捷方式)
p:管道文件
b:块设备文件(例如硬盘、光驱等)
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件
注:通过 file+文件名 查看文件类型
②rw-r--r--这9个字符三个为一组,分别代表user、group、others对于该文件的访问权限。
其中,r表示可读,w表示可写,x表示可执行,而对应位置为 - 的则表示没有对应权限,比如:rw-表示可读可写不可执行;
③1表示连接数
④root root分别代表:文件所有者和所属组的名字。如果文件的访问者不是这两种,那么他就是others。
⑤231表示文件大小。
⑥Oct 1 15:58表示该文件最近的修改日期。
⑦file.txt表示文件名。
注意:文件的权限只能约束普通用户,无法约束root用户!
rwx对应111,即7;
---对应000,即0;
对应位为1表示拥有该权限。
文件的初始权限为: (默认权限) & (~权限掩码);
其中:
普通文件的默认权限为666(rw- rw- rw-),目录为777(rwx rwx rwx)。
普通用户的默认权限掩码为002,root为022。
示例:
当普通用户创建目录,那么目录的初始权限就是:
777 & ~(002) = 775(rwx rwx r-x)
目录是一种特殊的文件,它的权限也分别有特殊的定义。
cd)该目录。如果一个目录没有x权限,那么就无法对该目录下的文件执行读写,因为读写的前提是:必须先进入该目录。
而要删除一个文件,对该文件所在目录需要拥有w和x权限,但是对该文件本身却没有w权限要求。
对于只有---权限的用户,无法读、写、执行文件,但是可以删除该文件!
因此linux为目录增添了一种特殊权限:粘滞位(t)。
粘滞位的设置方法为:chmod +t file_name;
当设置了粘滞位后,目录下的文件只能由三种用户删除:
系统根目录下保存程序产生的临时文件的tmp目录就使用了粘滞位。

注:粘滞位实际上是针对其他人(others)设置的。当其他人拥有目录x权限时,粘滞位在x处显示t,未拥有x权限时,显示T。
chmod [选项] 文件名
修改文件的权限,该命令只有文件的拥有者和root可以执行
+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户
示例:
chmod o+w f.txt 给others增加写权限
chmod o-r f.txt 回收others的读权限
chmod o=--- f.txt 不给others任何权限
当然,也可以通过八进制的方式增减权限,例如:
chmod 000 f.txt 不给任何人权限
chmod 777 f.txt 给任何人所有权限
注:对于只有写权限,没有读权限的普通用户,想要写文件就必须使用echo+重定向的方式。
chown [选项] 新的拥有者 文件名
改变文件的拥有者(普通用户需要sudo)
-R:递归修改所有子文件和子目录的拥有者
chgrp [选项] 新的所属组 文件名
改变文件的所属组(普通用户需要sudo)
-R:递归修改所有子文件和子目录的拥有者
查看/修改文件掩码
umask:查看掩码
umask + 数字:修改当前用户的掩码