Linux的权限管理操作


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

一、 权限概述

总述:Linux系统一般将文件可存/取访问的身份分为3个类别:ownergroupothers,且3种身份各有readwriteexecute等权限。

1 权限介绍

什么是权限:在多用户(可以不同时)计算机系统管理中,权限是指某个特定的用户具有特定的系统资源使用权利,例如文件夹、特定系统指令的使用或存储量的限制。
在Linux中分别由读、写、执行权限:
(1) 读权限

  • 对于文件夹来说,读权限影响用户是否能够列出目录结构;
  • 对于文件来说,读权限影响用户是否能够查看文件内容。

(2) 写权限

  • 对于文件夹来说,写权限影响用户是否能够在文件夹下“创建/删除/复制到/移动到”文档;
  • 对于文件来说,写权限影响用户是否能够编辑文件内容。

(3) 执行权限

  • 一般都是对于文件来说,特别是脚本文件,因为普通的文件(如txt文件)来说,能不能执行并不重要。

2 身份介绍

2.1 owner身份(文件所有者,默认为文档的创建者)

由于Linux是多用户、多任务的操作系统,因此可能常常有多人同时在某台主机上工作,但每个人均可在主机上设置文件的权限,让其成为个人的“私密文件”,即个人所有者。因为设置了适当的文件权限,除本人(文件所有者)之外的用户无法查看文件内容。

2.2 group身份(与文件所有者同组的用户)

与文件所有者用足最有用的功能就体现在多个团队在用一台主机上开发资源的时候。例如主机上有A、B两个团队,A有a1, a2, a3三个成员,B有b1, b2两个成员,这两个团队要共同完成一个项目F。由于设置了适当的权限,A、B团队中的成员都能互相修改对方的数据,当团队C的成员不能修改F的内容,甚至连查看的权限都没有。同时,团队的成员也能设置自己的私密文件【owner】,让团队的其他成员也读取不了文件数据。在Linux中,每个账户支持多个用户组,如用户a1, b1既属于A用户组,也能属于B用户组【主组和附加组】。

2.3 others身份(其他人,相对于所有者)

例如团队A有a1, a2, a3三个成员,则a1, a2, a3就是一个用户组,若文件F的所有者是a1,b与a1没有关系,则b就是其他人(others)。

2.4 root用户(超级用户)

在Linux中,还有一个神一样存在的用户,这就是root用户,因为在所有用户中它拥有最大的权限,所以管理者普通用户。

3 Linux的权限介绍

要设置权限,就需要知道文件的一些基本属性和权限分配的规则。在Linux中,ls命令常用语查看文件的属性,能够显示文件的文件名及其相关属性。

#ls -l 路径  【ls -l等价于 ll】

在这里插入图片描述
第1列红框就是Linux的文档权限属性信息。

Linux中存在用户、用户组和其他人的概念,各自有不同的权限,对于一个文档来说,其权限具体分配如下:
在这里插入图片描述
其中:

  • r:read,可读
  • w:write,可写
  • x:execute,可执行
  • -:没有对应的权限

十位字符表示含义:

  • 第1位:表示文档类型,取值常见的有“d”表示文件夹,“-”表示文件,“l”表示软连接,“s”表示套接字等等;
  • 第2-4位:表示文档所有者的权限情况,第2位表示读权限的情况,r表示可读,-表示不可读;第3位表示写权限的情况,w表示可写,-表示不可写;第4位表示执行权限的情况,x表示可执行,-表示不可执行;
  • 第5-7位:表示与所有者同在一个组的用户的权限情况,第5位表示读权限的情况,r表示可读,-表示不可读;第6位表示写权限的情况,w表示可写,-表示不可写;第7位表示执行权限的情况,x表示可执行,-表示不可执行;
  • 第8-10位:表示除了上面的前2部分的用户之外的其他用户的权限情况,第8位表示读权限的情况,r表示可读,-表示不可读;第9位表示写权限的情况,w表示可写,-表示不可写;第10位表示执行权限的情况,x表示可执行,-表示不可执行。

权限分配中,均是rwx的三个参数组合,且位置顺序不会变化,没有对应权限就用-代替。

二、权限设置

语法:#chmod 选项 权限模式 文档
常用选项:-R【递归设置权限(当文档为文件夹的时候)】
权限模式:就是该文档需要设置的权限信息
注:如果想给文档设置权限,操作者要么是root用户,要么就是文档的所有者。

1 字母形式

在这里插入图片描述
给谁设置:

  • u:表示所有者身份owner(user)
  • g:表示给所有者同组用户设置(group)
  • o:表示others,给其他用户设置权限
  • a:表示all,给左右人(包括ugo)设置权限

如果在设置权限的时候不指定给谁设置,则默认给所有用户设置,即a写和不写是一样的。

权限字符:

  • r:读
  • w:写
  • x:执行
  • -:没有权限

权限分配方式:

  • +:表示给具体的用户新增权限
  • -:表示删除用户的权限
  • =:表示将权限设置为具体值

实例:为test.txt文件(-r--------)设置权限,要求所有者拥有全部的权限,同组用户拥有读和执行权限,其他用户只读权限。
方法一:

#chmod u+wx,g+rx,o+r test.txt

在这里插入图片描述
方法二:

#chmod u=rwx,g=rx,o=r test.txt

在这里插入图片描述
实例:使用root用户为test.txt文件(-r--------)设置所有人都拥有执行权限

#chmod +x test.txt
#chmod a=x test.txt【会覆盖原有权限】
#chmod a+x test.txt

在这里插入图片描述

实例:使用root用户为test.txt文件(-r--------)设置所有人都没有任何权限

#chmod a=- test.txt
#chmod a=--- test.txt

在这里插入图片描述

2 数字形式

在这里插入图片描述
以二进制的方式来理解:

  • 000(0):---
  • 001(1):--x
  • 010(2):-w-
  • 011(3):-wx
  • 100(4):r--
  • 101(5):r-x
  • 110(6):rw-
  • 111(7):rwx

实例:需要给test.txt(----------)设置权限,权限要求所有者拥有全部权限(111),同组用户拥有读和执行权限(101),其他用户只读(100)。

#chmod 754 test.txt

在这里插入图片描述
注:如果命令出现能“写”当不可“读”的情况,是不合理的。

3 注意事项

使用root用户创建一个文件夹(/example),权限默认,权限如下:
在这里插入图片描述
需要在/example目录下创建文件/example/test.txt,并赋予所有人全部权限:
在这里插入图片描述
切换到其他用户,如wangerma(不是文件所有者,也不是同组用户,属于others部分):
问题1:wangerma用户是否可以打开/example/test.txt文件?【是】
问题2:wangerma用户是否可以编辑/example/test.txt文件?【是】
问题3:wangerma用户是否可以删除/example/test.txt文件?【否,此外,也不允许在/example目录下创建/移动/重命名文件或文件夹】
在这里插入图片描述
在Linux中,如果要删除一个文件,不是看文件有没有对应的权限,而是看文件所在的目录是否有权限,如果有才能够删除。

三、属主与属组设置

属主:所属的用户(文件的主人)
属组:所属的用户组
在这里插入图片描述
红色方框即为属主,蓝色方框即为属组。
这两项信息在文档创建的时候会使用创建者的信息(用户名,用户所属主组名)。如果删除某个用户,则该用户对应的文档的属主和属组信息就需要去修改。

1 chown

作用:更改文档的所属用户
语法:#chown [-R] 用户名 文档路径

实例:将root用户创建的/example目录的所有者更改为wangerma

#chown wangerma /example

在这里插入图片描述

2 chgrp

作用:更改文档的所属用户组
语法:#chgrp [-R] 用户组名 文档路径

实例:将root用户创建的/example目录的所属用户组改为lin

#chgrp lin /example

在这里插入图片描述
通过chown命令实现同时对所属用户和所属用户组的修改:

#chown [-R] username:groupname 文档路径

实例:将root用户创建的/example目录的所属用户和所属用户组均设置为root,包含其子目录

#chown -R root:root /example

在这里插入图片描述

四、扩展

问题:reboot、shutdown、init、halt、user管理,在普通用户身份上都操作不了,但是有些特殊情况又需要有执行权限,除了将root用户的密码告诉普通用户之外,可以使用sudo(switch user do)命令来进行权限设置。sudo可以让超级管理员(root)事先定义某些特殊命令哪些用户可以执行。
默认sudo是没有除root之外用户的规则,要想使用则需要先对sudo进行配置。
sudo配置文件:/etc/sudoers
(1) 配置sudo文件请使用“#visudo”,打开之后其使用方法与vim一致。
(2) 配置普通用户的权限
先看一下/etc/sudoers文件中的示例:
用户:
在这里插入图片描述

用户组:
在这里插入图片描述

  • root:表示用户名,如果是用户组,则可以写成“%组名
  • ALL:表示允许登录的主机(地址白名单)
  • (ALL):表示以谁的身份执行,ALL表示root身份
  • ALL:表示当前用户可以执行的命令,多个命令可以使用“,”分割

实例:本身lin用户不能添加用户,要求使用sudo配置,将其设置为可以添加用户,并且可以修改密码(但是不能修改root用户密码)
注:在写sudo规则的时候不建议写直接形式的命令,而是写命令的完整路径。路径可以使用which命令来查看。
语法:#which 指令名称
在末行模式下输入指令:
在这里插入图片描述
在这里插入图片描述
现在添加sudo规则:

lin ALL=(ALL) /usr/sbin/useradd,/usr/bin/passwd,!/usr/bin/passwd root

注:先定义可执行,再定义不可执行,否则后续命令会覆盖前者

在添加好对应的规则之后就可以切换用户,切换到普通用户lin,再去执行
在这里插入图片描述
此时要想使用刚才的规则,则根据以下命令执行:

#sudo 需要执行的指令

在这里插入图片描述
注:在输入sudo指令之后需要输入当前用户的密码进行确认操作,输入之后再接下来5分钟内再次执行sudo指令无需密码。
在这里插入图片描述
补充:在普通用户下查看自己具有哪些特殊权限

#sudo -l

在这里插入图片描述
最后,sudo不是任何Linux分支都有的命令,常见的Centos和Ubuntu都具有sudo命令。

  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值