1.1 Linux权限管理
Linux权限是操作系统用来限制对资源访问的机制,权限一般分为读、写、执行。系统中每个文件都拥有特定的权限、所属用户及所属组,通过这样的机制来限制哪些用户或用户组可以对特定文件进行相应的操作。
Linux每个进程都是以某个用户身份运行,进程的权限与该用户的权限一样,用户的权限越大,则进程拥有的权限就越大。
Lnux中有的文件及文件夹都有至少权限三种权限,常见的权限如表5-1所示:
Linux权限授权,默认是授权给三种角色,分别是user、group、other,Linux权限与用户之间的关联如下:
- U代表User,G代表Group,O代表Other;
- 每个文件的权限基于UGO进行设置;
- 权限三位一组(rwx),同时需授权给三种角色,UGO;
- 每个文件拥有一个所属用户和所属组,对应UGO,不属于该文件所属用户或所属组使用O来表示;
在Linux系统中,可以通过ls –l查看jfedu.net目录的详细属性,如图5-1所示:
drwxrwxr-x 2 jfedu1 jfedu1 4096 Dec 10 01:36 jfedu.net |
图5-1 Linux jfedu.net目录详细属性
jfedu.net目录属性参数详解如下:
- d表示目录,同一位置如果为-则表示普通文件;
- rwxrwxr-x 表示三种角色的权限,每三位为一种角色,依次为u,g,o权限,如上则表示user的权限为rwx,group的权限为rwx,other的权限为r-x;
- 2表示文件夹的链接数量,可理解为该目录下子目录的数量;
- 从左到右,第一个jfedu1表示该用户名,第二个jfedu1则为组名,其他人角色默认不显示;
- 4096表示该文件夹占据的字节数;
- Dec 10 01:36 表示文件创建或者修改的时间;
- Jfedu.net 为目录的名,或者文件名。
1.2 Chown属主及属组
修改某个用户、组对文件夹的属主及属组,用命令chown实现,案例演示如下:
(1) 修改jfedu.net文件夹所属的用户为root,其中-R参数表示递归处理所有的文件及子目录。
(2) 修改jfedu.net文件夹所属的组为root。 chown -R :root jfedu.net或者chgrp –R root jfedu.net |
(3) 修改jfedu.net文件夹所属的用户为root,组也为root。 chown -R root:root jfedu.net |
1.3 Chmod用户及组权限
修改某个用户、组对文件夹的权限,用命令chmod实现,其中以代指ugo,、-、=代表加入、删除和等于对应权限,具体案例如下:
(1) 授予用户对jfedu.net目录拥有rwx权限
(2) 授予组对jfedu.net目录拥有rwx权限
(3) 授予用户、组、其他人对jfedu.net目录拥有rwx权限 chmod –R u+rwx,g+rwx,o+rwx jfedu.net |
(4) 撤销用户对jfedu.net目录拥有w权限
(5) 撤销用户、组、其他人对jfedu.net目录拥有x权限 chmod –R u-x,g-x,o-x jfedu.net |
(6) 授予用户、组、其他人对jfedu.net目录只有rx权限 chmod –R u=rx,g=rx,o=rx jfedu.net |
1.4 Chmod二进制权限
Linux权限默认使用rwx来表示,为了更简化在系统中对权限进行配置和修改,Linux权限引入二进制表示方法,如下代码:
Linux权限可以将rwx用二进制来表示,其中有权限用1表示,没有权限用0表示; Linux权限用二进制显示如下: rwx=111 r-x=101 rw-=110 r--=100 依次类推,转化为十进制,对应十进制结果显示如下: rwx=111=4+2+1=7 r-x=101=4+0+1=5 rw-=110=4+4+0=6 r--=100=4+0+0=4 得出结论,用r=4,w=2,x=1来表示权限。 |
使用二进制方式来修改权限案例演示如下,其中默认jfedu.net目录权限为755:
(1) 授予用户对jfedu.net目录拥有rwx权限 (2) 授予组对jfedu.net目录拥有rwx权限 (3) 授予用户、组、其他人对jfedu.net目录拥有rwx权限 (4) 撤销用户对jfedu.net目录拥有w权限 (5) 撤销用户、组、其他人对jfedu.net目录拥有x权限 (6) 授予用户、组、其他人对jfedu.net目录只有rx权限
1.5 Linux特殊权限及掩码
Linux权限除了常见的rwx权限之外,还有很多特殊的权限,细心的读者会发现,为什么Linux目录默认权限755,而文件默认权限为644呢,这是因为Linux权限掩码umask导致。
每个Linux终端都拥有一个umask属性,umask熟悉可以用来确定新建文件、目录的默认权限,默认系统权限掩码为022。在系统中每创建一个文件或者目录,文件默认权限是666,而目录权限则为777,权限对外开放比较大,所以设置了权限掩码之后,默认的文件和目录权限减去umask值才是真实的文件和目录的权限。
- 对应目录权限为:777-022=755;
- 对应文件权限为:666-022=644;
- 执行umask命令可以查看当前默认的掩码,umask -S 023可以设置默认的权限掩码。
在Linux权限中,除了普通权限外,还有如下表5-2所示,三个特殊权限:
Linux中设置特殊权限方法如下: - 设置suid: chmod u+s jfedu.net
- 设置sgid: chmod g+s jfedu.net
- 设置sticky: chmod o+t jfedu.net
特殊权限与设置普通权限一样,可以使用数字方式表示: q SUID = 4 q SGID = 2 q Sticky = 1
可以通过chmod 4755 jfedu.net对该目录授予特殊权限为s的权限,Linux系统中s权限的应用常见包括:su、passwd、sudo,如图5-2所示:
图5-2 Linux特殊权限s应用
|