1. 在Linux中,权限一般为读、写、执行三种,而且进程的权限与用户的权限一样。
2. X对于目录而言,表示可以查看目录的内容,因此目录必须具有X(执行)权限,否则无法查看其内容;
对于文件而言,形容该文件可作为执行文件。
3. Linux权限基于UGO模型进行控制。U代表用户user,G代表组Group,O代表其他Other,权限三个一组(rwx),对应UGO分别设置。每一个文件拥有一个所属用户和所属组(对应UG),不属于该文件所属用户和所属组的使用O权限。
一般格式为:drwxr-xr--,其中d表示文件类型,前三个rwx表示U权限,中间三个r-x表示G权限,最后三个r--表示O权限。
4. 修改文件所属用户和所属组
命令chown(change owner)用于改变文件的所属用户,格式为:chown 新用户 文件/文件夹,如:chown user_su linux
参数:-R表示递归修改目录下的所有文件的所属用户
chgrp(change group)用于修改文件的所属组,格式为:chgrp 新组 文件/文件夹
参数:-R表示递归修改目录下的所有文件的所属组
5. 修改权限
命令chmod用于修改文件的权限,格式为:chmod 模式 文件,模式指:
(1) u、g、o分表代表用户、组和其他
(2) a可指代ugo三个全部
(3) +、-代表加入或删除对应权限,或者是一个“=”,表示只有指定的权限可用,其它所有的权限被删除
(4) r、w、x代表三种权限
示例:chmod u+rw tempchmod g-x temp
chmod go+r rempchmod a-x temp
参数:-R 表示递归修改文件夹下的所有文件的权限
chmod也支持以数字方式修改权限,三个权限分别对应三个数字:-r = 4-w = 2 -x = 1
使用数字方式表示权限时,每组权限分别对应着三者的数字之后,示例如下:
chmod 660 temp== rw-rw----
chmod 755 temp== rwxr-xr-x
6. 实际情况示例:
组 用户 training lilei
bobmarket alice
johnmanage steve
david现要求为各部门、员工建立相应的工作文件夹,要求如下:(1) 所有目录、文件保存在统一的文件夹下(2) 每个部门拥有一个独立的文件夹(3) 不同部门之间不可访问各自文件夹(4) 每个员工在所在部门文件夹下拥有一个所属的文件夹(5)同部门不同员工可以查看各自文件夹内容,但不可修改,用户仅能够修改自己的内容步骤如下://创建用户和组groupadd traininggroupadd marketgroupadd manageuseradd -G training lileiuseradd -G training bob
useradd -G market alice
useradd -G market john
useradd -G manage steve
useradd -G training david
//所有目录、文件保存在统一的文件夹下,因此在根目录" / "下创建文件夹companycd /mkdir company//每个部门拥有一个独立的文件夹,因此在company下创建文件夹training、market、managemkdir trainingmkdir marketmkdir manage//查看三个文件夹的属性,将所属组改为各自对应的组llchgrp training trainingchgrp market marketchgrp manage manage//不同部门之间不可访问各自文件夹chmod o-rx trainingchmod 650 market
chmod o-rx manage
//每个员工在所在部门文件夹下拥有一个所属的文件夹,分别在training、market、manage三个文件夹下创建各自员工的文件夹//在training文件夹下mkdir lileimkdir bob//在market文件夹下mkdir alicemkdir john//在manage文件夹下mkdir stevemkdir david//同部门不同员工可以查看各自文件夹内容,但不可修改,用户仅能够修改自己的内容,因此设置文件夹的所属用户和所属组chown lilei lileichgrp training lileichmod o-rx lilei
chown bob bobchgrp training bobchmod o-rx bob
chown alice alicechgrp market alicechmod o-rx alice
chown john johnchgrp market johnchmod o-rx john
chown steve stevechgrp nanage stevechmod o-rx steve
chown david davidchgrp manage davidchmod o-rx david7. 默认权限:每一个终端都有一个umask属性来确定新建文件/文件夹的默认权限。umask使用数字权限方式表示,普通用户的默认umask为002,root用户的默认umask为022.目录的默认权限为:777-umask文件的默认权限为:666-umask因此,对于普通用户:创建新文件的权限为:666-002=664,创建新目录的权限为:777-022=755.umask命令可以查看设置umask的值,并且umask+num命令可以改变umask的默认值。
8. 特殊权限:(1) suid:对于文件的影响---以文件的所属用户身份执行,而非执行文件的用户,即为用户提供权限,实现它原本没有的权限所执行的功能,一般都为可执行文件进行设置,如:passwd与shadow;对于目录来说没有影响。
当应用到一个可执行文件时,它把有效用户 ID从真正的用户(实际运行程序的用户)设置成程序所有者的 ID。这种操作通常会应用到一些由超级用户所拥有的程序。当一个普通用户运行一个程序,这个程序由根用户(root)所有,并且设置了 setuid 位,这个程序运行时具有超级用户的特权,这样程序就可以访问普通用户禁止访问的文件和目录。很明显,因为这会引起安全方面的问题,所有可以设置 setuid 位的程序个数,必须控制在绝对小的范围内。
(2) sgid:对于文件的影响---以文件所属组身份执行(一般很少使用);对于目录的影响---在该目录中创建的任意新文件的所属组 都与该目录的所属组相同。
这个相似于 setuid 位,把有效用户组 ID 从真正的用户组 ID 更改为文件所有者的组 ID。如果设置了一个目录的 setgid 位,则目录中新创建的文件具有这个目录用户组的所有权,而不是文件创建者所属用户组的所有权。对于共享目录来说,当一个普通用户组中的成员,需要访问共享目录中的所有文件,而不管文件所有者的主用户组时,那么设置 setgid 位很有用处。
(3) sticky:对于文件没有影响,对于目录的影响---对目录拥有写入权限的用户仅可以删除其拥有的文件,无法删除其他用户所拥有的文件。它可能把一个可执行文件标志为“不可交换的”。在 Linux 中,会忽略文件的 sticky 位,但是如果一个目录设置了 sticky 位,那么它能阻止用户删除或重命名文件,除非用户是这个目录的所有者,或者是文件所有者,或是超级用户。这个经常用来控制访问共享目录,比方说/tmp。
9. 设置特殊权限,之前的x将变为s(1) suid u+s temp(2) sgid g+s temp(3) sticky o+t temp10. 数字方式:-SUID = 4 -SGID = 2 -sticky = 1chmod 4755 temp
11. 常见的文件类型