基本权限
执行ll命令可以看到文件的基本权限,例如-rw-r--r--为一个基本权限,
- | rwx | rw- | r-- |
文件类型 | 所属用户对文件具有读写执行权限 | 所属用户组对文件具有读写权限 | 其他用户对文件具有读权限 |
赋予文件权限:chmod 权限 文件名,
其中权限可以使用字母u(所属用户)g(所属组)o(其他用户)来指定权限,例如为其他用户添加执行权限:chmod o+x 文件名,为所属用户指定读写执行权限:chmod u=rwx文件名。
还可以使用数字来表示权限:1代表读,2代表写,4代表执行,例如chmod 755,即为所属用户赋予7(rwx=1+2+4)权限,所属组5(rx=1+4)其他5。
对于文件来说,r权限可以查看文件,w可以编辑文件(不可用删除文件本身),x可以执行文件。对于目录来说,r可以查看目录下文件,w可以增删改目录下的文件,x可以进入目录。
修改文件所有者:chown 所有者:所属组 文件名
ACL权限
在linux中,文件权限有用户/所属组/其他三个用户类型,通过对三种类型用户的读写执行权限的分配来实现权限管理。然而,如果要为某一用户分配特定权限,就需要使用ACL权限了。
查看sda5分区是否支持acl权限,使用dumpe2fs -h /dev/sda5,显示default mount option 中有acl,表明支持。
如果不支持,则需要手动开启acl权限:mount remount,acl /(为根分区临时挂载acl权限),永久生效可修改/etc/fstab文件中的uuid对应的分区权限,在default后加“,acl”。
最大权限mask是文件拥有的最大权限,用户的权限与mask做‘&运算’之后才是它的实际权限,如果赋予用户rwx,而mask为r-x,运算结果为r-x,即用户实际上仍没有w权限。
权限递归设定是指对目录及目录下的子文件都设定,容易带来权限溢出问题,有时为了能让用户查看目录,设定了执行权限,但递归设定会导致目录内的子文件拥有可执行权限,造成想不到的后果。
默认权限为目录设置了acl权限模板,在目录新建的文件都会拥有默认规定的权限。
查看acl权限 | getfacl 文件名 |
设定用户acl权限 | setfacl -m u:用户:权限 文件 |
递归设定用户acl权限 | setfacl -m u:用户:权限-R 目录 |
设定组acl权限 | setfacl -m g:用户:权限 文件 |
删除用户acl权限 | setfacl -x u:用户:权限 文件 |
删除所有acl权限 | setfacl -b 文件 |
设定mask权限 | setfacl -m m:权限 文件 |
设定默认权限 | setfacl -m d:u:用户:权限 目录 |
Sudo权限
Linux中的许多命令只有作为root用户才可以执行,但root用户只有一个,这就需要root将一些命令赋予普通用户执行。执行visudo命令查看/etc/sudoers文件,修改赋予普通用户的命令。
Root | ALL=(ALL) | ALL |
用户名 | 被管理主机地址=(可使用的身份) | 授予的命令(绝对路径) |
普通用户执行时使用sudo 路径 命令来执行root命令:
Sudo /usr/sbin/useradd user1
授予的命令可以用正则表达式,取反(!)等加以限制,例如赋予passwd命令但不允许修改root的密码:user1 ALL=(ALL) /usr/bin/passwd [A-Za-z]* !/usr/bin/passwd “” !/usr/bin/passwd root
SUID权限
由于一些命令只有root用户才能执行,比如修改密码passwd命令,而普通用户有时也需要使用。Suid是指用户在执行具有suid权限的命令时会自动切换为root用户去执行。在三位用户权限之前还有一位权限位,suid权限生效后x变为s(S不生效)。在赋予suid权限时文件必须是可执行的,且用户具有执行权限。Suid权限一般不要随意赋予,容易造成普通用户通过相应命令修改系统敏感信息。
SBIT权限
root用户在普通用户目录下建立的文件,希望普通用户写入,所以赋予文件777权限,但是其他用户在可以写的同时也可以随意删除文件,这样是不希望看到的。赋予sbit权限后用户便只能删除自己创建的文件。Sbit权限生效后权限位为rwt。