文件/目录权限chmod
需要注意的是:查看文件权限的目录问题:如果有文件夹 /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-i1.txt
- [root@centos7a]#lsattr-d1.txt
- ----------------1.txt
- 关于其他用法,详情请参阅在线帮助man