权限介绍

在服务器上运行的数据越重要(如游戏数据),价值越高(如电子商城数据、银行数据),那么对权限的设定就要越详细,用户的分级也要越明确。所以,在服务器上,绝对不是所有的用户都使用 root 身份登录,而要根据不同的工作需要和职位需要,合理分配用户等级和权限等级。


在Linux中分别有读、写、执行权限:

1.读权限:

对于文件夹来说,读权限影响用户是否能够列出目录结构

对于文件来说,读权限影响用户是否可以查看文件内容

2.写权限:

对文件夹来说,写权限影响用户是否可以在文件夹下“创建/删除/复制到/移动到”文档

对于文件来说,写权限影响用户是否可以编辑文件内容

3.执行权限:

一般都是对于文件来说,特别脚本文件。

对于文件来说,执行权限影响文件是否可以运行。

对于文件夹来说,执行权限影响对应的用户是否可以在文件夹内执行指令。


权限查看:ls  -l 路径 (等价于 ll )

centos 文件写入权限 centos文件权限详解_root用户


红框的就是权限位置

centos 文件写入权限 centos文件权限详解_root用户_02


解释:

文档类型:“d表示文件夹”  “-表示文件”,还有别的类型,只记住这两个就行了
文档所有者(属主):就是创建这个文档的人
文档所属用户组(属组):用户的集合。 体现共享的特性
其他人:这个是相对的概念,相对于所有者与同组用户
注意:
root也属于其他人,但是root用户可以访问用户组的内容
每个身份的第一位都代表:读的权限(所以要么是r 要么是-)
每个身份的第二位都代表:写的权限(所以要么是w 要么是-)
每个身份的第三位都代表:执行的权限(所以要么是x 要么是-)
 


权限设置:chmod[选项] 权限模式 文档

-R:递归设置权限(文档类似是文件夹的时候)

权限模式:就是该文档需要设置的权限信息

文档:可以是文件,也可以是文件夹,可以是相对路径也可以是绝对路径。

注意:只有 root用户 或者 文档的所有者 能够设置权限


权限设置的方式一:字母形式(设置多个身份的权限时候,每个身份之间需要通过英文逗号分开)

centos 文件写入权限 centos文件权限详解_用户组_03



案例1:给/root/anaconda-ks.cfg文件设置权限,要求所有者拥有全部的权限,同组用户拥有读和写权限,其他用户只读权限。

在这之前,先看一眼/root/anaconda-ks.cfg文件的权限

centos 文件写入权限 centos文件权限详解_用户名_04


分析:首先这是-开头的说明它是个文件,因为设置权限的时候不用加-R,其次文档所有者已经拥有了r w 的权限,我们只需要再添加一个x就代表设置了全部的权限

指令如下(相对于当前权限的增加)

centos 文件写入权限 centos文件权限详解_root用户_05


同样这种方式也是可以的(直接强行赋值权限)

centos 文件写入权限 centos文件权限详解_用户组_06


Tips:当文档拥有执行权限(任意身份),则其颜色是绿色的

权限还能合并的写在一起

chmod ug=rwx  形式,如果有两部分权限一样则可以合在一起写的

等价于:#chmod u=rwx,g=rwx

例:如果anaconda-ks.cfg文件什么权限都没有,可以使用root用户设置所有的人都有执行权限,则可以写成

什么权限都没有应该是:----------

目标的效果:---x--x--x

#chmod a=x anaconda-ks.cfg
#chmod a+x anaconda-ks.cfg
#chmod u+x,g+x,o+x anaconda-ks.cfg
#chmod ugo=x anaconda-ks.cfg
#chmod ugo+x anaconda-ks.cfg
#chmod +x anaconda-ks.cfg
权限设置的方式二:数字形式(每个身份都用一个数字代表)

centos 文件写入权限 centos文件权限详解_root用户_07

例1:给/root/anaconda-ks.cfg文件设置权限,使其所有者拥有全部的权限,同组用户拥有全部的权限,其他用户全部的权限。

centos 文件写入权限 centos文件权限详解_用户名_08


例2:用超级管理员设置文档的权限命令是#chmod -R 731 aaa,请问这个命令有没有什么不合理的地方?

问题在权限731中3表示写+执行权限,

但是写必须需要能打开之后才可以写,

因此必须需要具备读权限,因此权限不合理。

该权限可以设置成功,但是不合理,因此单独出现2、3的权限数字一般都是有问题的权限

注意事项:在Linux中,如果要删除一个文件,不是看文件有没有对应的权限,而是看文件所在的目录是否有写权限,如果有才可以删除,在博文的开头三种权限介绍中已经说明了这个问题,这是第二次强调


 


属主与属组

centos 文件写入权限 centos文件权限详解_root用户_09


属主:红色标记

属组:蓝色标记

这两项信息是在文档创建的时候会使用创建者的信息(用户名,和用户名所属的主组名称)


chown [-R] 新的所有者 文档路径:修改文档属主

案例:把/oo 的所有者修改为admin

先再根目录创建一个 oo文件

centos 文件写入权限 centos文件权限详解_用户组_10


此时,/oo的文件文件所有者是root

centos 文件写入权限 centos文件权限详解_用户名_11


修改所有者为admin

centos 文件写入权限 centos文件权限详解_用户名_12


结果成功改为admin

centos 文件写入权限 centos文件权限详解_root用户_13


注意:只有root和文档所有者才有权限修改

chgrp [-R] 新的组 文档路径:修改文档属组



chown [-R] 新的所有者:新的组 文档路径:同时修改文档属主和属组

案例:把/oo文件的 属主和属组都改成root

centos 文件写入权限 centos文件权限详解_root用户_14


修改成功

centos 文件写入权限 centos文件权限详解_centos 文件写入权限_15


案例:假如zhangsan创建了一个文件,设置了文件的权限为644,此时root管理员将这个文件的属主和属组改成了lisi那么,此时zhangsan对这个文件的权限有发生变化么?如果有,那么此时的权限是多少?

有,此时的权限是4,因为zhangsan从属主变成了其他人sudu 需要执行的指令(这个指令是需要配置的):以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行


假设场景,reboot shutdown init halt 在普通用户都是操作不了的,但是在某些特殊情况下有需要执行权限,我们又不可能把root的密码告诉用户,这种场景下就可以使用sudu了,sudo可以让管理员root事先定义某些特殊命令谁能执行


默认sudu中是没有除root之外的用户规则的,想要使用必须先配置sudo


sudo配置文件位置:/etc/sudoers

该文件默认只读不允许修改,只能修改它的.tmp(临时)文件,修改完毕之后才会替换原始文件


因此配置sudo文件直接使用visudo打开,打开之后和vim编辑器的用法是一样的

centos 文件写入权限 centos文件权限详解_用户名_16


其中是有一个配置的案例的在98行,我们直接98G快速定位过去

centos 文件写入权限 centos文件权限详解_用户组_17


注意:在配置权限的指令的时候最好要写完整路径,可以用which 指令名称 ,来查看指令的完整路径

解释: 用户名  允许操作的主机=(以什么身份运行,ALL 表示 root)   允许运行的指令ALL 代表所有的指令


在104行还有一个案例:允许wheel这个用户组下面的用户能够执行的指令

centos 文件写入权限 centos文件权限详解_root用户_18


如果是针对用户组的需要在最前面加上%

案例:给admin用户添加一个添加用户的权限

查看添加用户指令的完整路径

centos 文件写入权限 centos文件权限详解_centos 文件写入权限_19


来到98行,给admin配置权限,然后保存退出

centos 文件写入权限 centos文件权限详解_用户名_20


配置好了之后,切换到admin验证一下这个权限是否可用

centos 文件写入权限 centos文件权限详解_用户组_21


很多时候都以为有了权限就直接使用,这是错误的,需要遵从sudo语法,在指令前面加上sudu

centos 文件写入权限 centos文件权限详解_用户名_22


此时需要输入密码,密码是当前用户的密码不是root的密码,看看是否添加用户成功

centos 文件写入权限 centos文件权限详解_root用户_23



sudo -l:查看管理员赋予自己的权限

centos 文件写入权限 centos文件权限详解_用户组_24



注意:不是所有的centos都有sudo指令,常见的 ubnutn和centos 才有该指令