首先明确的是 权限的分类: 普通权限,特殊权限
对于普通权限无非就是对MODE的修改,即对r,w,x(可读,可写,可执行)更改。
那么r,w,x对于文件和目录也是有区分的:
在目录中:
r:可以使用ls命令获得其中所有的文件名的列表;不能ls -l命令来获取目录中文件的详细的属性信息,也不能使用cd命令进入其中,也不能在路径中引用该目录;
w:可以修改此目录中的文件名或文件名列表,即;可以在此目录中创建、修改或删除文件名;
x:可以使用ls -l命令来获取其中的文件的详细属性信息;也可以在路径中引用该目录;也可以使用cd命令来进入其中
在文件中:
r:可以查看或获取该文件中存放的数据
w:可以修改文件中存放的数据
x:可以将此文件发起运行为进程
对r,w,x表示有不同的标识法即:
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
那么对于修改这些权限的操作命令chmod 可借助+,-,=来使用分别代表:
+:在原有的权限基础上添加新的权限;
-:在原有的权限基础上取出某些权限;
=:不考虑原有权限,直接将权限设置为目标权限;
举几个例子说:
chmod u+w file
chmod g+rw file
chmod u+x,g-wx,o-x file
chmod u=rw,g=r,o=r file
chmod ug-x file
chmod +x file 默认为a添加执行权限
chmod +w file 默认的只为属主添加写权限
OWNERSHIP:所有权
(u)属主:资源掌控的某个特定用户;owner(user);u
(g)属组:资源掌控的某些特定用户;group;g
(o)其他用户:未曾掌控资源的那些用户;other;o
(a)全部用户:all;a
除了这些chmod还有几个个常用的选项
1.chmod [OPTION]... OCTAL-MODE FILE...
意思是说使用八进制数字标识法来表示权限,需要注意的是使用这种方法的时候要给足所有的权限位,如果给的不完整,文件系统会自动补足,将给定的权限放置在右侧,左侧用0来补。
2.chmod [OPTION]... --reference=RFILE FILE...
举个例子说 # chmod --reference=a b
表示把当前目录下的b文件参考a文件设置权限
3.-R,--recursive 这个指的是将目标目录中的文件及目录和子目录中的文件统一的设置为指定的权限标识(类似于递归的选项)
举个例子:# chmod 640 -R /tmp/centos/*
表示:将目录/tmp/centos/下的文件的权限统一设置为640
有时候只靠chmod命令还不能彻底的更改的文件的使用权限为了方便还需要借助chown命令来改变它的属主,属组:
1. chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown OWNER FILE 只修改属主
chown :GROUP FILE 只修改属组
chown OWNER: FILE //将目标文件的属主改为OWNER,同时将属组修改为OWNER的基本组;
chown OWNER:GROUP FILE //将目标万能键的属组和属组修改为OWNER和GROUP
2. chown [OPTION]... --reference=RFILE FILE...
这里的--reference跟chmod中的用法是一样的。
3.-R,--recursive:将目标目录中的文件及目录和子目录中的文件统一的设置为指定的所有权。
还有个命令install这个命令即安装,复制文件:为文件赋予执行权限
单源复制:
install [OPTION]... [-T] SOURCE DEST
多源复制
install [OPTION]... SOURCE... DIRECTORY
install [OPTION]... -t DIRECTORY SOURCE...
创建目录
install [OPTION]... -d DIRECTORY...
常用的选项:
-m:指定目标文件的权限。默认为755
-g:设定目标文件的属主,只能是root可用
-o:设定目标文件的属主,只能是root用户可用
还有就是文件的特殊权限:SUID、SGID、STICKY
SUID:当用户发起执行一个进程时,该程序文件如果拥有SUID权限的话,那么此程序发起的进程其属主为该程序文件的属主,而不是其发起者;(比如说普通用户修改自己的密码的时候用的passwd命令。)
SUID权限所显示的位置:文件的属主权限中的执行权限位;如果属主本来就有执行权限,则显示为s;否则,显示为S;
SGID:如果某个目录对于一些用户有写权限,并且设置了SGID权限时,则所有对此目录有写权限的用户在创建新的文件或目录以后,新文件的属组不再是创建用户的基本组,而是集成了该目录的属组;
SGID权限显示的位置;文件的属组权限中的执行权限位;如果属组本来就有执行权限,显示为s;否则显示为S
修改文件的特殊权限也是用chmod命令:
chmod g+|-s FILE...(添加或删除s)
STICKY:sticky(粘性的)粘滞位
STICKY的功能作用:
如果为上述类似的目录设置了STICKY权限,则每个用户仍旧能够创建和修改文件名,但每个用户只能删除那些属主为其自身的文件名;
STICKY权限的显示位置:在文件权限的其他用户的执行权限位;如果原来就有执行权限,则显示为t;否则显示为T
依然有 chmod o+|-t FILE
suid sgid sticky
--- 000 0
--t 001 1
-s- 010 2
-st 011 3
s-- 100 4
s-t 101 5
ss- 110 6
sst 111 7