RHEL里面执行ls命令时,可以看见第一个字母来判断类型。

常见的类型有 

d (目录)

- (普通文件)

c (设备文件 字符型)

b (设备文件,块文件)

l ( 软连接,快捷方式)


例如,目录和普通文件

RHCE 学习笔记(6)权限管理_第1张图片


设备文件

wKiom1SY8R-AaZovAABJjBHTsqs564.jpg


软连接

wKioL1SY8cqj5ajDAABnAy4ooZI544.jpg


设备文件,块文件(硬盘)

wKiom1SY8SPwQ0LBAABXm2TYFPo445.jpg


首先看看如何更改文件的所有者 chown, -R表示递归的处理所有的子目录和子文件,-v表示输出详细的变化结果


wKiom1SY_tyju1BoAACb5nCc26s598.jpg


更改文件或者目录的组


wKiom1SY_p7gMMBxAAB7QQaN8NU896.jpg


具体的权限可以通过中间9位2进制数值来设置,分别代表u(所有者),g(组)和 o (其他人)的 r (读)w(写)x(执行)权利



可以用 rwxrwxrwx来表示对应拥有的权限,如果没有权限,标记-

wKiom1SY_qCwsmWOAABOi9CKToA768.jpg


简单的例子,可以用u+或者g-来添加或删除权限

a=u+g+o


RHCE 学习笔记(6)权限管理_第2张图片


值得注意的是对于目录的权限设定,必须至少具有读和执行的权限才能正常访问。如果只具有X,那么只能cd 进去,但是无法ls内容。


例如,新创建的xx目录,默认是755权限


wKiom1SY_qOQEAK3AABOdHh-MGU170.jpg

去掉其他用户的读权限以后

wKioL1SY_0-RNd4qAABjssCx_30393.jpg


beanxyz用户可以cd该目录,但是无法读取内容

wKiom1SY_qeTGMP2AABhcGRVnH4485.jpg


改回来就回复正常访问了

wKiom1SY_qmQG0_RAABbJdhJbIY716.jpg


前面说了默认创建的文件权限是644,目录权限是755, 这是怎么回事呢,这是通过umask过滤造成的。

文件的默认权限本应该是666,而目录是777,umask的默认值为0022,通过对应位的过滤,就变成了644和755.

文件  (666)           110 110 110
umask(222)            000 010 010
-----------------------------------------------
                        110 100 100 (644)
目录     (777)        111 111 111
umask    (222)         000 010 010
------------------------------------------------
                        111 101 101 (755)




类似的给定一个需要的默认权限,如何倒推回去?

比如我需要创建的默认文件和目录权限都是444,那么我的umask应该是多少?


如下所示,对于文件而言,每个用户的第三位本身就是没有权限的,因此不论是否过滤,都是0,对于Umask而言,第三位的部分是0 是1都不影响结果; umask可以是333,323,222,223,232,332等等任意组合


对于目录而言,结果是唯一,只能是333;


综上所述,umask的选择应该是333

文件    (666)       110 110 110
umask(???)          011 011 011
-----------------------------------------------
                     100 100 100 (444)
目录      (777)        111 111 111
umask    (???)          011 011 011 ( 333)
------------------------------------------------
                        100 100 100 (444)


权限设置还有两个特殊的属性位, s位和t位;


s位位于二进制的可执行程序的U位的时候,简称SUID,这个时候其他人执行这个程序,具有和所有者相同的权限;


例如用户可以通过passwd更改自己的密码,而实际的密码是保存在/etc/shadow中的,用户执行passwd的时候其实是通过所有者root的权限对shadow文件进行了修改


wKiom1SZCEaSSWvzAACdFBgpxyw322.jpg


s位位于目录的G位的时候,简称GUID,这个时候的作用是所有新创建的子目录和文件会自动的继承这个组


例如创建一个testgroup组,加到test目录上

wKioL1SZCPLC_S9AAACnUUkYbIk152.jpg


然后修改g位

wKiom1SZCEryHaeeAABod9NMLtw006.jpg


创建新文件和目录

wKioL1SZCPXSXk0iAABFjvRX26E297.jpg

查看属性

wKioL1SZCPfC_UsJAABzAEqkWFk023.jpg


最后还有一个特殊的属性位是t 位,他一般是位于目录的o位置,锁定文件不可删除。只有root和所有者可以删除。比如系统自带的/tmp就是这样


wKiom1SZCE_BgRPqAABOpQqRIw0952.jpg


简单的记忆 SUID 4, SGID 2, SBIT 1

因此,如果将一个可执行文件设置为 -rwsr-xr-x,可以标记为4755


最后看看隐藏的特殊属性


chattr 可以设置一些特设性质,比如+a 只能增加不可减少


RHCE 学习笔记(6)权限管理_第3张图片


+i 不可对文件进行任何修改

wKiom1SZC0rxOEgKAACfSTJK43M299.jpg


lsattr可以查看特殊属性

wKiom1SZC2yw0d9hAABLZAX28OE409.jpg