linux命令--基本权限命令
⼀、权限介绍
使⽤ls命令查看时,发现长格式显⽰的第⼀列就是⽂件的权限
权限位⼀共有 10 位,这 10 位权限位的含义如下图所⽰。
linux删除子目录命令第 1 位代表⽂件类型。Linux 不像 Windows 使⽤扩展名表⽰⽂件类型,⽽是使⽤权限位的第 1 位表⽰⽂件类型。虽然 Linux ⽂件的种类不像 Windows 中那么多,但是分类也不少,详细情况可以使⽤“info ls”命令查看。
“-”:普通⽂件。
“b”:块设备⽂件。这是⼀种特殊设备⽂件,存储设备都是这种⽂件,如分区⽂件/dev/sda1 就是这种⽂件。
“c”:字符设备⽂件。这也是特殊设备⽂件,输⼊设备⼀般都是这种⽂件,如⿏标、键盘等。
“d”:⽬录⽂件。Linux 中⼀切皆⽂件,所以⽬录也是⽂件的⼀种。
“l”:软链接⽂件。
“p”:管道符⽂件。这是⼀种⾮常少见的特殊设备⽂件。
“s”:套接字⽂件。这也是⼀种特殊设备⽂件,⼀些服务⽀持 Socket 访问,就会产⽣这样的⽂件。
如果有字母,则代表拥有对应的权限;如果是“-”,则代表没有对应的权限。
第 2~4 位代表⽂件所有者的权限
r:代表 read,是读取权限。
w:代表 write,是写权限。
x:代表 execute,是执⾏权限
第 5~7 位代表⽂件所属组的权限,同样拥有“rx”权限。
第 8~10 位代表其他⼈的权限,同样拥有“rx”权限
⼆、基本权限命令。
1、chmod,修改权限的命令。
命令名称:chmod。
英⽂原意:change file mode bits。
所在路径:/bin/chmod。
执⾏权限:所有⽤户。
功能描述:修改⽂件的权限模式
1.1、命令格式
chmod 选项命令模式⽂件...
-R:递归设置权限,也就是给⼦⽬录中的所有⽂件设定权限
1.2、权限模式
chmod 命令的权限模式的格式是“[ugoa][[+-=][perms]]”,也就是“[⽤户⾝份][[赋予⽅式][权限]]” 的格式。
⽤户⾝份。
u:代表所有者(user)。
g:代表所属组(group)。
o:代表其他⼈(other)。
a:代表全部⾝份(all)。
赋予⽅式。
+:加⼊权限。
-:减去权限。
=:设置权限。
权限。
r:读取权限(read)。
w:写权限(write)。
x:执⾏权限(execute)。
例如
chmod 
#把a.txt针对其他⼈写权限移除。
1.3、数字权限
数字权限的赋予⽅式是最简单的,但是不如之前的字母权限好记、直观。
4:代表“r”权限。
2:代表“w”权限。
1:代表“x”权限。
例如
chmod
# 为a.txt 设置 rw-r--r-- 权限
1.4.常⽤权限
数字权限的赋予⽅式更加简单,但是需要⽤户对这⼏个数字更加熟悉。其实常⽤权限也并不多,只有如下⼏个。
644:这是⽂件的基本权限,代表所有者拥有读、写权限,⽽所属组和其他⼈拥有只读权限。
755:这是⽂件的执⾏权限和⽬录的基本权限,代表所有者拥有读、写和执⾏权限,⽽所属组和其他⼈拥有读和执⾏权限。
777:这是最⼤权限。在实际的⽣产服务器中,要尽⼒避免给⽂件或⽬录赋予这样的权限,这会造成⼀定的安全隐患。
三、基本权限的作⽤
3.1、权限含义的解释⾸先,读、写、执⾏权限对⽂件和⽬录的作⽤是不同的
权限对⽂件的作⽤。
读(r):对⽂件有读(r)权限,代表可以读取⽂件中的数据。如果把权限对应到命令上,那么⼀旦对⽂件有读(r)权限,就可以对⽂件执⾏ cat、more、less、head、tail 等⽂件查看命令。
写(w):对⽂件有写(w)权限,代表可以修改⽂件中的数据。如果把权限对应到命令上,那么⼀旦对⽂件有写(w)权限,就可以对⽂件执⾏ vim、echo 等修改⽂件数据的命令。注意:对⽂件有写权限,是不能删除⽂件本⾝的,只能修改⽂件中的数据。如果要想删除⽂件,则需要对⽂件的上级⽬录拥有写权限。
执⾏(x):对⽂件有执⾏(x)权限,代表⽂件拥有了执⾏权限,可以运⾏。在 Linux 中,只要⽂件有执⾏(x)权限,这个⽂件就是执⾏⽂件了。只是这个⽂件到底能不能正确执⾏,不仅需要执⾏(x)权限,还要看⽂件中的代码是不是正确的语⾔代码。对⽂件来说,执⾏(x)权限是最⾼权限。
权限对⽬录的作⽤。
读(r):对⽬录有读(r)权限,代表可以查看⽬录下的内容,也就是可以查看⽬录下有哪些⼦⽂件和⼦⽬录。如果把权限对应到命令上,那么⼀旦对⽬录拥有了读(r)权限,就可以在⽬录下执⾏ ls 命令,查看⽬录下的内容了。
写(w):对⽬录有写(r)权限,代表可以修改⽬录下的数据,也就是可以在⽬录中新建、删除、复制、剪切⼦⽂件或⼦⽬录。如果把权限对应到命令上,那么⼀旦对⽬录拥有了写(w)权限,就可以在⽬录下执⾏ touch、rm、cp、mv 命令。对⽬录来说,写(w)权限是最⾼权限。
执⾏(x):⽬录是不能运⾏的,那么对⽬录拥有执⾏(x)权限,代表可以进⼊⽬录。如果把权限对应到命令上,那么⼀旦对⽬录拥有了执⾏(x)权限,就可以对⽬录执⾏ cd 命令,进⼊⽬录。
3.2、⽬录的可⽤权限⽬录的可⽤权限其实只有以下⼏个。
0:任何权限都不赋予。
5:基本的⽬录浏览和进⼊权限。
7:完全权限。
四、所有者和所属组命令
4.1、chown 命令
chown 是修改⽂件和⽬录的所有者和所属组的命令,
命令名称:chown。
英⽂原意:change file owner and group。
所在路径:/bin/chown。
执⾏权限:所有⽤户。
功能描述:修改⽂件和⽬录的所有者和所属组。
命令格式
[root@love2 ~]# chown [选项] 所有者:所属组⽂件或⽬录
-R:递归设置权限,也就是给⼦⽬录中的所有⽂件设置权限
4.2.chgrp 命令 chgrp 是修改⽂件和⽬录的所属组的命令
命令名称:chgrp。
英⽂原意:change group ownership。
所在路径:/bin/chgrp。
执⾏权限:所有⽤户。
功能描述:修改⽂件和⽬录的所属组
命令格式
[root@love2 ~]# chgrp [选项] 组名⽂件或⽬录
-R:递归设置权限,也就是给⼦⽬录中的所有⽂件设置权限
五、umask 默认权限
当我们登录系统之后创建⼀个⽂件或者⽬录总是有⼀个默认权限的,那么这个权限是怎么来的呢?这就是umask⼲的事情。umask设置了⽤户创建⽂件的默认权限,它与chmod的效果刚好相反。
5.1查看umask权限。
# ⽤⼋进制数值显⽰ umask权限
[root@love2 ~]# umask
0022
# ⽤字母表⽰⽂件和⽬录的初始权限
[root@love2 ~]# umask -S
u=rwx,g=rx,o=rx
#设置umask值
umask 033
5.2 umask 权限的计算⽅法我们需要先了解⼀下新建⽂件和⽬录的默认最⼤权限。
对⽂件来讲,新建⽂件的默认最⼤权限是 666,没有执⾏(x)权限。这是因为执⾏权限对⽂件来讲⽐较危险,不能在新建⽂件的时候默认赋予,⽽必须通过⽤户⼿⼯赋予
对⽬录来讲,新建⽬录的默认最⼤权限是 777。这是因为对⽬录⽽⾔,执⾏(x)权限仅仅代表进⼊⽬录,所以即使建⽴新⽂件时直接默认赋予,也没有什么危险。
按照官⽅的标准算法,umask 默认权限需要使⽤⼆进制进⾏逻辑与和逻辑⾮联合运算才可以得到正确的
新建⽂件和⽬录的默认权限。
这种⽅法既不好计算,也不好理解,
所以这⾥还是按照权限字母来讲解 umask 权限的计算⽅法。我们就按照默认的 umask 值是 022 来分别计算⼀下新建⽂件和⽬录的默认权限吧。
⽂件的默认权限最⼤只能是 666,⽽ umask 的值是 022
“-rw-rw-rw-”减去 “-----w--w-”等于“-rw-r--r—”
⽬录的默认权限最⼤可以是 777,⽽ umask 的值是 022
“drwxrwxrwx”减去“d----w--w-”等于“drwx-r-xr-x”
注意:umask 默认权限的计算绝不是数字直接相减。
例如 umask 是 033
⽂件的默认权限最⼤只能是 666,⽽ umask 的值是 033
“-rw-rw-rw-”减去“-----wx-wx”等于“-rw-r--r—”
⽬录的默认权限最⼤可以是 777,⽽ umask 的值是 033
“drwxrwxrwx”减去“d----wx-wx”等于“drwx-r--r--”