《Linux操作系统》课程报告 第16页
3Linux权限管理
3.1相关权限简介
3.1.1基本权限
Linux系统中的每个文件和目录都有访问许可权限,用来确定谁能通过何种方式对文件和目录进行访问和操作。文件或目录的访问权限分为只读、只写和可执行三种[6]。
有三种不同类型的用户可对文件或目录进行访问:文件所有者、同组用户、其他用户。所有者一般是文件的创建者,所有者能允许同组用户有权访问文件,还能将文件的访问权限赋予系统中的其他用户。在这种情况下,系统中每一位用户都能访问该用户拥有的文件或目录。
每一个文件或目录的访问权限都有三组,每组用三位表示,分别文件属主的读、写和执行权限;和属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限[6]
。
举例来说, drwxr-xr--
这10个字符确定不同用户能对文件干什么:
第一个字符代表文件(-)、目录(d)、链接(l);其余字符每3个一组即(rwx),分别代表读(r)、写(w)、执行(x)。
其中,这10个字符,代表这是个目录(d)。而这个目录对于文件属主来说是可读、可写、可执行(rwx)的;对于同组的用户来说,是可读和可执行(r-x);对于其他用户来说,是可读(r)的。
(换算成数字为r--4;w--2;x--1)
而rwx这三个权限对于文件和目录的作用是不同的,其中:
(1)对于文件而言:r为读取文件内容(cat more head tail);w为编辑、新增、修改文件内容,但是不能够删除这个文件(vi echo);x代表可执行这个文件。
(2)对于目录而言:r为可以查询目录下文件名(ls);w为具有修改目录结构的权限,如新建、删除、重命名、剪切文件或目录(touch rm mv cp);x为可以进入目录(cd)。
对文件来讲,最高权限是x;对目录来讲,最高权限是w。
关于文件的默认权限:用666减去umask值即可得到默认权限。 对于目录的默认权限:用777减去umask值即可得到默认权限。 3.1.2特殊权限
(1)ACL权限 ACL是Access Control List的缩写,主要目的是在提供传统的owner、group、others的r、w、x权限之外的局部权限设定。ACL可以针对单个用户,单个文件或目录来进行r、w、x的权限设定,特别适用于需要特殊权限的使用情况[7]。
ACL主要针对用户(user)、用户组(group)以及掩码(mask)方面来控制权限[7]。
简单讲,ACL可以设置特定用户或用户组对于一个文件/目录的操作权限[7]。
[6]
《Linux操作系统》课程报告 第17页
(2)sudo权限
sudo通过更严谨的管理,为用户分配可通过root权限运行某些特定的命令或软件,避免直接将root用户账号的密码公开给普通用户。
sudo的操作对象是系统命令。 (3)文件特殊权限
s或S(SUID,Set SUID):可执行的文件搭配这个权限,便能得到特权,任意存取该文件的所有者能使用的全部系统资源。SetUID权限只在该程序执行过程中有效,也就是说身份改变只在该程序执行过程中有效。
s或S(SGID,Set GID):设置在文件上面,其效果与SUID相同,只不过将文件所有者换成用户组,该文件就可以任意存取整个用户组所能使用的系统资源。
(4)黏着位权限 当一个目录被设置了黏着位,在权限允许的情况下,可以在这个目录里面创建文件,但是只可以删除所有者是自己的文件,不可以删除其他用户创建的文件(root用户除外)。
(5)不可改变位权限
可以通过不可改变位,控制对文件或目录禁止删除改名、添加和修改以及只允许增加不允许删改的权限。
3.2权限相关命令介绍
3.2.1基本权限命令
(1)修改文件和目录的基本权限 chmod [选项] 模式 文件名 选项:
-R#可以把该目录内所有的子目录和文件都进行权限的修改 模式:
[ugoa][+-=][rwx]
#[ugoa]中,u代表所属主,g代表同组用户,o代表其他用户,a代#表三者皆是 #[+-=]中,+代表加上权限,-代表减去权限,=代表直接设定权限 #[rwx]中,r、w、x分别代表读、写和执行
[mode=421]
#用三位数字来代表权限,第一位代表所属主的权限,第二位代表同#组用
户的权限,第三位代表其他用户的权限
#r--4;w--2;x--1
(2)修改文件基本权限的其他命令
①修改文件的所有者 chown 用户名 文件名 ②修改文件的所属组 chgrp 组名 文件名 (4)关于默认权限的命令
①查看默认权限
《Linux操作系统》课程报告 第18页
umask#查看系统的umask值:比如0022第一位0代表文件特殊权限 #022代表文件默认权限 ②修改默认权限
umask xxxx #xxxx为4位数字,临时修改 vi /etc/profile #永久修改 3.2.2ACL权限命令
(1)查看分区ACL权限是否开启 dumpe2fs -h /dev/sda5 (2)临时开启分区ACL权限
mount -o remount,acl/ (3)查看ACL命令 getfacl 文件名
(4)设定ACL权限 setfacl 选项 文件名 其中选项:
-m 设定ACL权限;-x 删除指定的ACL权限;-b 删除所有的ACL权限;
-d 设定默认ACL权限;-k 删除默认ACL权限;-R 递归设定ACL权限
setfacl -m u:用户名:权限 文件名 #给用户赋予ACL权限
setfacl -m g:组名:权限 文件名 #给用户组赋予ACL权限 setfacl -x u:用户名 文件名 #删除指定用户的ACL权限 setfacl -x g:组名 文件名 #删除指定用户组的ACL权限 setfacl -b 文件名 #删除文件的所有的ACL权限 setfacl -m m:rx 文件名 #设定最大有效权限 setfacl -m u:用户名:权限 -R 目录名
#递归ACL权限 setfacl -m d:u:用户名:权限 目录名 #默认ACL权限
#该目录设定后新建的子文件将会继承
#该目录的ACL权限
3.2.3sudo权限命令
(1)查看可用的sudo命令: sudo -l
(2)普通用户执行sudo赋予的命令 sudo 系统命令
《Linux操作系统》课程报告 第19页
3.2.4文件特殊权限命令
(1)设定SetUID
chmod 4755 文件名 #4代表SUID,后三位为ugo的权限 chmod u+s 文件名 (2)取消SUID
chmod 0755 文件名 #后三位为ugo的权限 chmod u-s 文件名 (3)设定SGID
chmod 2755 文件名 #2代表SGID,后三位为ugo的权限 chmod g+s 文件名
(4)取消SGID
chmod 0755 文件名 #后三位为ugo的权限 chmod g-s 文件名 3.2.5SBIT黏着位命令
(1)设置黏着位
chmod 1755 目录名 #1代表黏着位,后三位为ugo的权限 chmod o+t 目录名 (2)取消黏着位 chmod 0777 目录名 chmod o-t 目录名 3.2.6不可改变位权限命令
chattr [+-=] [选项] 文件或目录名 选项包括i和a:
对于选项i来说,如果对文件设置i属性,则不允许对文件进行删除、改名,也不能添加和修改数据;如果对目录设置i属性,那么只能修改目录下文件的数据,但不允许建立和删除文件。
对于选项a来说,如果对文件设置a属性,那么只能在文件中增加数据,但是不能够删除、修改数据;如果对目录设置a属性,那么只允许在目录中建立和修改文件,但是不允许删除。
相关推荐: