Linux的文件操作权限
一个目录同时具有读权限和执行权限才可以打开并查看内部文件,而一个目录要有写权限才允许在其中创建其它文件,这是因为目录文件实际保存着该目录里面的文件的列表等信息
-rw-rw-r– ,
其中: 最前面那个 – 代表的是类型(详细如下面贴图所示)
中间那三个 rw- 代表的是所有者(user)
然后那三个 rw- 代表的是组群(group)
最后那三个 r– 代表的是其他人(other)
然后我再解释一下后面那9位数:
r 表示文件可以被读(read)
w 表示文件可以被写(write)
x 表示文件可以被执行(如果它是程序的话)
– 表示相应的权限还没有被授予
drwxrwxrwx 2 root root 4096 11月816:38 excel
drwxr-xr– 2 777 root 4096 11月816:47 zip
共显示了七列信息,从左至右依次为:权限、文件数、归属用户、归属群组、文件大小、创建日期、文件名称
d :第一位表示文件类型
d 文件夹
– 普通文件
l 链接
b 块设备文件
p 管道文件
c 字符设备文件
s 套接口文件
rwx :第2-4位表示这个文件的属主拥有的权限。r是读、w是写、x是执行
r-x :第5-7位表示和这个文件属主所在同一个组的用户所具有的权限
r-x :第8-10位表示其他用户所具有的权限
常用的linux文件权限:
444 r–r–r–
600 drw——-
644 drw-r–r–
666 drw-rw-rw-
700 drwx——
744 drwxr–r–
755 drwxr-xr-x
777 drwxrwxrwx
1、从左至右,1-3位数字代表文件所有者的权限,4-6位数字代表同组用户的权限,7-9数字代表其他用户的权限。
一共有10位数,其中:最前面那个 – 代表的是类型
中间那三个 rw- 代表的是所有者(user)
然后那三个 rw- 代表的是组群(group)
最后那三个 r– 代表的是其他人(other)
而具体的权限是由数字来表示的,读取的权限等于4,用r表示;写入的权限等于2,用w表示;执行的权限等于1,用x表示;
2、通过4、2、1的组合,得到以下几种权限:
0(没有权限);4(读取权限);5(4+1 | 读取+执行);6(4+2 | 读取+写入);7(4+2+1 | 读取+写入+执行)
以755为例:
1-3位7等于4+2+1,rwx,所有者具有读取、写入、执行权限;
4-6位5等于4+1+0,r-x,同组用户具有读取、执行权限但没有写入权限;
7-9位5,同上,也是r-x,其他用户具有读取、执行权限但没有写入权限。
权限 | 简写 | 对普通文件的作用 | 对文件夹的作用 |
---|---|---|---|
读取 | r | 查看文件内容 | 列出文件夹中的文件(ls) |
写入 | w | 修改文件内容 | 在文件夹中删除、添加或重命名文件(夹) |
执行 | x | 文件可以作为程序执行 | cd 到文件夹 |
特殊权限
在 linux 系统中还有三种与用户身份无关的三个文件权限属性,即
SUID
、
SGID
、
Sticky
SUID
SUID是
Set User ID
的简写。该属性只对有执行权限的文件有效,对目录无效。执行具有SUID权限的程序时,引发的进程的所有者是程序文件的所有者,而不是启动程序的用户(除非二者是同一个人)。比如,如果一个程序的所有者是root且具有SUID属性,一个普通用户执行此程序时,如同root执行此程序一样。(请注意该属性对Shell脚本程序无效)该属性为一些特殊程序(如lpr)的启动带来了方便。但有时也带来了安全隐患:比如一个具有SUID属性的程序如果在执行时运行了一个shell,那么用户可以籍此得到系统的最高权限。SUID可用s表示。
SGID
SGID是
Set Group ID
的简写。对于可执行文件,SGID与SUID类似,引发的进程的所有组是程序文件所属的组。对于目录,SGID属性会使目录中新建文件的所属组与该目录相同。SGID也可以用s表示。
Sticky
仅对目录有效。带sticky属性的目录下的文件或目录可以被其拥有者删除或改名。常利用sticky属性创建这样的目录:组用户可以在此目录中创建新文件、修改文件内容,但只有文件所有者才能对自己的文件进行删除或改名。如系统中的/tmp文件夹。在属性字符串中,通常用t表示。
chmod命令
命令原型:
chmod [-cfvR] [--help] [--version] mode file...
-c
: 若该档案权限确实已经更改,才显示其更改动作
-f
: 若该档案权限无法被更改也不要显示错误讯息
-v
: 显示权限变更的详细资料
-R
: 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
--help
: 显示辅助说明
--version
: 显示版本
在linux系统中,可以使用
chmod
命令来修改文件或文件夹对应用户的操作权限,
chmod
命令也有两种方式修改,一种是使用代表相应操作权限的字母简写表示,另一种是使用代表相应操作权限的数字表示,这两种权限表示方式也就是上述命令原型中的
mode
部分。
chmod ugoa[rwxst]
使用字符表示权限法
第一个字符是
u
、
g
、
o
或
a
中的一个(分别表示用户、组、其他人和所有人)。其后还可以更随添加(+)、删除(-)或设置(=)各种不同的权限:
r
可读、
w
可写、
x
可执行、
s
SUID或SGID特殊权限、
t
Sticky特殊权限。
chown命令
命令原型:
chown [-cfhvR] [--help] [--version] user[:group] file...
user
: 新的档案拥有者的使用者ID
group
: 新的档案拥有者的使用者群体(group)
-c
或
-change
:作用与-v相似,但只传回修改的部分
-f
或
–quiet
或
–silent
:不显示错误信息
-h
或
–no-dereference
:只对符号链接的文件做修改,而不更改其他任何相关文件
-R
或
-recursive
:递归处理,将指定目录下的所有文件及子目录一并处理
-v
或
–verbose
:显示指令执行过程
–dereference
:作用和-h刚好相反
–help
:显示在线说明
–reference=<参考文件或目录>
:把指定文件或目录的所有者与所属组,统统设置成和参考文件或目录的所有者与所属组相同
–version
:显示版本信息
使用八进制数表示权限法
chmod命令中权限的描述和表示方法也可以用一个四位八进制数来表示,其中最高位表示特殊权限,随后的三位依次是所有者权限、组权限和其他人权限。每一个八进制位的权限数值是文件具有的相应权限所对应的数值之后。
数值权限的算法存在一个二进制转八进制的过程,比如rw-其实就是110的二进制,也就是:0*2^0 + 1*2^1 + 1*2^2 = 6。有相应的权限就用1表示,没有相应的权限就用0表示。数值权限表示法不能用于表示特殊权限。
加减赋值操作
u 代表所有者(user)
g 代表所有者所在的组群(group)
o 代表其他人,但不是u和g (other)
a 代表全部的人,也就是包括u,g和o
+ 和 – 分别表示增加和去掉相应的权限。+号一般不显示(初学练手时我还是会加上)
在终端输入:
chmod o+w xxx.xxx
chmod o w xxx.xxx 表示给其他人授予写xxx.xxx这个文件的权限
chmod go-rw xxx.xxx 表示删除xxx.xxx中组群和其他人的读和写的权限
chmod ug-r xxx.xxx