文件/目录权限chmod
#查看目录/文件的权限 [root@linux1~]#ls-l/tmp/a/ 总用量0 drwxr-xr-x.2rootroot610月2409:282 #drwxr-xr-x一共有十位数,其中:最前面第一位表示类型 #前三个代表所有者(user)拥有的权限 #中间三个代表组群(group)拥有的权限 #最后三个代表其他人(other)拥有的权限 #r表示文件可以被读(read) #w表示文件可以被写(write) #x表示文件可以被执行 #-表示相应的权限还没有被授予
需要注意的是:查看文件权限的目录问题:如果有文件夹 /a/b/c
那么执行ls -l /a/b查看权限的文件并不是b,而是查看的c的权限。
ls -l /a查看的是b文件的权限
ls -l /a/b查看的是cls -l /a/b/c查看的是文件的权限
#修改权限 drwxr-xr-x.4rootroot2410月2520:25a #user=rwx #group=r-x #other=r-x 语法: #chmodu=[选项],g=[选项],o=[选项]文件/目录 #实例如下: [root@centos7tmp]#chmodu=rwx,g=r,o=ra [root@centos7tmp]#ls-l drwxr--r--.4rootroot2410月2520:25a #取消权限 #chmoda-x,u-x,g-x文件/目录 #实例如下: [root@centos7tmp]#chmodu-r,g-r,o-ra [root@centos7tmp]#ls-l d-wx------.4rootroot2410月2520:25a
#rwx:可以用数字来代替 r----------4 w----------2 x----------1 ---------0 #实例 -rw-r--r--.1rootroot33410月2521:34a/1.txt #---------(600)所有者有读和写的权限 #------(400)群组(用户组)有读的权限 #---(400)其他人只有读的权限 #所以,可以标记为644如果每位加1即755如下设置 [root@centos7tmp]#chmod755a/1.txt [root@centos7tmp]#ls-la/1.txt -rwxr-xr-x.1rootroot33410月2521:34a/1.txt #这样子,就把简单的把执行权限都加上了 #chomd-R的用法如下,更改当前目录或子目录的权限 [root@centos7tmp]#chmod-R777a [root@centos7tmp]#ls-l/tmp/a 总用量4 -rwxrwxrwx.1rootroot33410月2521:341.txt drwxrwxrwx.3rootroot1510月2521:32b
更改所有者和所属组chown,chgrp
#chown即changeowner的缩写改变文件所有者属性 #chown所有者:所属组1.txt修改所属组 [root@centos7a]#chownuser:user1.txt [root@centos7a]#ls-l1.txt -rw-r--r--.1useruser33910月2522:001.txt #chown可以加R选项,用来修改目录及以下的所有文件的权限 [root@centos7tmp]#ls-la/ 总用量4 -rw-r--r--.1useruser34610月2522:011.txt drwxrwxrwx.3useruser1510月2521:32b #chgrp(changegroup) #chgrp命令:chgrp命令用来改变文件或目录所属的用户组。该命令用来改变指定文件所属的用户组。 格式:chgrp[选项]组名文件名 [root@centos7tmp]#ls-la -rw-r--r--.1useruser34610月2522:011.txt [root@centos7a]#chgrproot1.txt [root@centos7a]#ls-l1.txt -rw-r--r--.1userroot34610月2522:011.txt
umask
umask 每个用户都有一个默认的umask值,是用来确认用户的默认权限。
#查看umask值 [root@centos7a]#umask 0022 默认文件权限计算方法 1)假设umask值为:022(所有位为偶数) 666==>文件的起始权限值 022-==>umask的值 --------- 644 2)假设umask值为:045(其他用户组位为奇数) 666==>文件的起始权限值 045-==>umask的值 --------- 621==>计算出来的权限。由于umask的最后一位数字是5,所以,在其他用户组位再加1。 001+ --------- 622==>真实文件权限 默认目录权限计算方法 777==>目录的起始权限值 022-==>umask的值 --------- 755 #实例一:umask所有位全为偶数时,多数读者对这个例子无疑问 [root@oldboyoldboy]#umask 0022#→umask当前数值 [root@oldboyoldboy]#umask044#→更改为044 [root@oldboyoldboy]#umask 0044 [root@oldboyoldboy]#mkdirumask_test#→建目录测试 [root@oldboyoldboy]#ls-ldumask_test drwx-wx-wx2rootroot4096Nov1219:21umask_test#→对应数字权限为733,是不是符合上面的计算方法? [root@oldboyoldboy]#touchumask_test.txt [root@oldboyoldboy]#ls-lumask_test.txt -rw--w--w-1rootroot0Nov1219:21umask_test.txt#→对应数字权限为622,是不是符合上面的计算方法?
#实例二:umask值的部分或全部位为奇数时,这个是读者疑问最大的 #当umask值的其他属组位为奇数时 [root@oldboyoldboy]#umask0023 [root@oldboyoldboy]#mkdirdir [root@oldboyoldboy]#touchfile [root@oldboyoldboy]#ls-l 总计4 drwxr-xr--2rootroot409611-1501:04dir#→对应数字权限为754 -rw-r--r--1rootroot011-1501:04file#→对应数字权限为644 #提示:根据前面的计算方法,当umask为0023时,dir的权限应该是754,而file的权限应该为643,但是由于umask的其他组位为奇数,因此最终权限为其他组位加1,即643加001(对应实践结果644)。注意:umask为偶数的位不要加1。 #实例三:umask值的所有位为奇数时 [root@oldboyoldboy]#umask0551 [root@oldboyoldboy]#umask 0551 umask为0551根据掩码方法计算:目录权限为226,文件权限115,而实际文件权限为226(umask的三个权限位都是奇数,所以,每个位分别加1就是正确的权限) [root@oldboyoldboy]#mkdirdir5 [root@oldboyoldboy]#touchfile5 [root@oldboyoldboy]#ls-l 总计4 d-w--w-rw-2rootroot409611-1501:27dir5#→目录对应数字权限为226 --w--w-rw-1rootroot011-1501:27file5#→目录对应数字权限为226 再来一例验证下: [root@oldboyoldboy]#umask0333 [root@oldboyoldboy]#umask 0333 umask为0333根据掩码方法计算:目录权限为444,文件权限333,而实际文件权限为444(umask的三个位都是奇数,所以,每个位分别加1就是正确的权限) [root@oldboyoldboy]#mkdirdir3 [root@oldboyoldboy]#touchfile3 [root@oldboyoldboy]#ls-l|grep3 dr--r--r--2rootroot409611-1501:30dir3#→目录对应数字权限为444 -r--r--r--1rootroot011-1501:30file3#→目录对应数字权限为444
隐藏权限lsattr_chattr
除了设置文件或目录的读(r)、写(w)、执行(x)权限外,对于某些有特殊要求的档案(如服务器日志)还可以追加隐藏权限的设定。
chattr 设置隐藏权限 选项参数有
i:设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容。
a:即append,设定该参数后,只能向文件中添加数据,而不能删除,多用于服务器日志文件安全,只有root才能设定这个属性。
+ :在原有参数设定基础上,追加参数。
- :在原有参数设定基础上,移除参数。
lsattr 查看隐藏权限 选项有
-a:显示所有文件属性,包括隐藏文件(.)、当时目录(./)及上层目录(../)。
-d:仅列示目录属性。
#实例: #给目录添加隐藏权限 [root@centos7a]#chattr+ic#添加权限 [root@centos7a]#lsattr-dc#查看权限 ----i-----------c #给文件添加隐藏权限 [root@centos7a]#chattr+i1.txt [root@centos7a]#lsattr-d1.txt ----i-----------1.txt
[root@centos7a]#chattr-i1.txt [root@centos7a]#lsattr-d1.txt ----------------1.txt 关于其他用法,详情请参阅在线帮助man