Linux之权限管理

Linux的权限操作与用户、用户组是兄弟操作。

一、权限概述

Linux系统一般将文件可存/取访问的身份为:owner、group、others,且3种身份各有read、write、execute等权限。权限是指某个特定的用户具有特定的系统资源使用权力,像文件夹的使用或存储量的限制。

1、权限介绍
读权限:
对于文件夹来说,读权限影响用户能否列出目录结构
对于文件来说,读权限影响用户能否查看文件内容

写权限:
对于文件夹来说,写权限影响用户是否可以创建、删除、复制、移动文档
对于文件来说,写权限影响用户能否编辑文件内容

执行权限:
对于文件夹来说,执行权限影响用户能否进入该文件夹
对于文件来说,影响文件是否可以执行(特别是脚本文件)。

2、身份介绍
① Owner身份(文件所有者,默认为文档的创建者)
② Group身份(指与文件所有者同组的用户)
③ Others身份(其他人)
④Root(超级管理员,拥有最大权限)

3、权限介绍

使用语法:ls -l 路径, ls -l等价于llLinux之权限管理第1个字符表示文档类型,“ d ”表示文件夹,“ - ”表示文件,“ l ”表示软连接,“ s ”表示套接字;第2-4个字符表示文件拥有者的权限;第5-7个字符表示与当前用户同组用户的权限;第8-10个字符表示其他人的权限。“ r ”(read)表示读权限;“ w ”表示(write)写权限;“ -x ”表示执行权限;“ - ”表示没有权限。

【从第二个字符开始,三个字符为一组,且位置不会变化

二、设置权限

如果想要给文档设置权限,要么是root用户,要么是文档所有者

语法:chmod 选项 权限模式 文档
选项:“ -r ”表示递归设置权限,文档类型为文件夹时

1、字母形式
Linux之权限管理u:(user)表示所有者身份owner
g:(group)表示给所有者同组用户设置
o:(others)表示给其他用户设置权限
a:(all)表示给所有人(包含ugo部分)设置权限
如果在设置权限的时候不指定给谁设置,则默认给所有用户设置

+:表示给具体的用户新增权限(相对当前)
-:表示删除用户的权限(相对当前)
=:表示将权限设置成具体的值(注重结果)【赋值】

例如:需要给anaconda-ks.cfg文件(-rw-------.)设置权限,要求所有者拥有全部的权限,同组用户拥有读和执行权限,其他用户只读权限。

chmod u+x,g+rx,o+r anaconda-ks.cfg 或者 chmod u=rwx,g=rx,o=r anaconda-ks.cfg
Linux之权限管理提示:当文档拥有执行权限(任意部分),则其颜色在终端中是绿色。

例如:如果anaconda-ks.cfg文件什么权限都没有,可以使用root用户设置所有人都有执行权限,则可以写成
①#chmod +x anaconda-ks.cfg 不指定默认给全部用户
②#chmod a=x anaconda-ks.cfg
③#chmod a+x anaconda-ks.cfg

2、数字形式

经常会在一些技术性的网页上看到类似于#chmod 777 a.txt 这样的一个权限,这种形式称之为数字形式权限(777)。

读:r 4
写:w 2
执行:x 1
没有任何权限:0
如果一个权限中出现 2/3则不合理,因为只有在读(r 4)的基础上才可以写 (w 2)
Linux之权限管理

例如:需要给 /home/linux123/test.php 设置权限,权限要求所有者拥有全部权限,同组用户拥有读执行权限,其他用户只读。
#chmod 754 /home/linux123/test.php
Linux之权限管理

3、注意事项

其他人不允许创建文件/文件夹、移动文件、重命名文件,因为文件夹没有权限。在Linux中,如果要删除一个文件,不是看文件有没有对应的权限,而是看文件所在的目录是否有写权限,如果有才可以删除。

三、属主与属组设置

属主:所属的用户(文件的主人)
属组:所属的用户组Linux之权限管理

前面的那个root就是属主
后面的那个root就是属组

1、修改文件拥有者
语法:chown [-R] 用户名:用户组名 文档
案例:将root用户创建的oo目录,所有者更改为linux123
#chown linux123 oo/

2、修改所属用户组
语法:chgrp [-R] 用户名 文档
案例:将刚才root用户创建的oo目录,所有者更改为test,并且将所属用户组也改为test
#chgrp test oo/

四、扩展

例如reboot、shutdown、init、halt、user管理,在普通用户身份上是操作不了的,但是有些特殊的情况下又需要有执行的权限。又不可能让root用户把自己的密码告诉普通用户,可以使用 sudo (switch user do)命令来进行权限设置。sudo 命令可以让超级管理员事先定义某些特殊命令谁可以执行

默认sudo中没有除root之外用户的规则,想要使用可以先配置sudo,文件位置:/etc/sudoers 。

a、配置 sudo 文件可以使用 visudo 命令,打开之后使用方法和 vim 一致
Linux之权限管理

b、配置文件,修改普通用户的权限
Linux之权限管理root 表示用户名,如果是用户组可以使用 “ %组名 ”;
ALL表示允许登录的主机(地址白名单);
(ALL)表示以谁的身份去执行,ALL表示root身份;
ALL表示当前用户可以执行的命令,多个命令可以使用“ , ”分割。

案例:本身linux123不能添加用户,要求使用sudo配置,将其可以添加用户,并且可以修改密码(除了 root 用户密码)

注意:写sudo规则的时候不建议写直接形式的命令,而是写命令的完整路径。可以使用 which 指令 查看Linux之权限管理
Linux之权限管理特别注意:此处按照案例要求,不能让test用户修改root密码,因此规则还需要调整,不然其可以修改root密码的。禁止修改root密码的配置(先允许全部,再拒绝root密码设置): /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root

更新上面的操作,如下:
Linux之权限管理

此时要想使用刚才的规则,则需要以下命令去执行:sudo 属于执行的命令

可以使用su -l 查看存在的权限
Linux之权限管理