Linux权限管理操作

概述

Linux系统一般将文件可存/取访问的身份分为3个类别:owner、group、others,且3种身份各有read、write、execute等权限。

  • 什么是权限?
    在多用户(可以不同时)计算机系统的管理中,权限是指某个特定的用户具有特定的系统资源使用权力,像是文件夹、特定系统指令的使用或存储量的限制。
  • 在Linux中分别有读、写、执行权限:
    读权限:
    对于文件夹来说,读权限影响用户是否能够列出目录结构对于文件来说,读权限影响用户是否可以查看文件内容
  • 写权限:
    对文件夹来说,写权限影响用户是否可以在文件夹下“创建/删除/复制到/移动到”文档
    对于文件来说,写权限影响用户是否可以编辑文件用
  • 执行权限:
    一般都是对于文件来说,特别脚本文件。

身份

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

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

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

多个团队在同一台主机上开发资源,所以设置用户组是很有必要的。在同一组下的用户,对于某个文件,权限都是一样的。

Others身份(其他人)

这个是个相对(相对于所有者)概念,相对于所有者和组,不在一个组,也不是所有者那就是other

Root用户(超级用户)

在Linux中,在所有用户中它拥有最大的权限,所以管理着普通用户。

权限

我们可以用ls -l 查看权限,

image-20210122212050987

第一列的数据,就权限的数据

image-20210122212903289

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

设置权限 chmod

设置权限只能是拥有者或者root用户

字母形式

#chmod 选项 文件

如果给目录下所有文件都设置一样的权限,那么就+R 递归一下,同时给用户和组,其他设置不同权限可以逗号隔开

字母的含义:

  • u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
  • + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
  • r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。

不指定文件ugoa 的话默认就是 u

例如:

将文件 file1.txt 设为所有人皆可读取 :

chmod ugo+r file1.txt 
chmod a+r file.txt

将文件 file1.txt 与 file2.txt 设为该文件拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :

chmod ug+w,o-w file1.txt file2.txt

八进制模式

chmod 三个8进制数 文件或目录

#权限rwx二进制
7读 + 写 + 执行rwx111
6读 + 写rw-110
5读 + 执行r-x101
4只读r--100
3写 + 执行-wx011
2只写-w-010
1只执行--x001
0---000

其实记忆起来十分方便 ,

二进制 0 0 0 每一位分别对应 读 写 执行 (从左到右),有对应权限就是1,没有就是 0

那么 有对应权限 八进制就是 r 读对应 4,w写对应 2 ,x执行对应 1,

如果用户就有写和读的权限就是 4+2=6

例如, 765 将这样解释:

  • 所有者的权限用数字表达:属主的那三个权限位的数字加起来的总和。如 rwx ,也就是 4+2+1 ,应该是 7。
  • 用户组的权限用数字表达:属组的那个权限位数字的相加的总和。如 rw- ,也就是 4+2+0 ,应该是 6。
  • 其它用户的权限数字表达:其它用户权限位的数字相加的总和。如 r-x ,也就是 4+0+1 ,应该是 5。

例如

给file 所用权限

chmod 777 file

属主与属组设置

属主:所属的用户(文件的主人)
属组:所属的用户组

如果有时候去删除某个用户,则该用户对应的文档的属主和属组信息就需要去修改。

chown 更改文档的所属用户

chown 需要超级用户 root 的权限才能执行此命令。

作用:更改文档的所属用户

语法:#chown -R username 文档路径

-R 递归

sudo 授权

reboot、shutdown、init、halt、user管理,在普通用户身份上都是操作不了,但是有些特殊的情况下又需要有执行权限。又不可能让root用户把自己的密码告诉普通用户,这个问题该怎么解决?

该问题是可以被解决的,可以使用sudo(switch user do)命令来进行权限设置。sudo可以让管理员(root)事先定义某些特殊命令谁可以执行。

Sudo 配置文件:/etc/sudoers ,当然修改他的方式,不能 vi去修改 ,配置sudo文件请使用“visudo”,编辑他的零时文件。

username ALL=(ALL) ALL

给的案例,username就写用户名了,

  • 第一个ALL,表示允许登录的主机(ip白名单)
  • 第二个,(ALL):表示以谁的身份执行,ALL表示root身份
  • 第三个ALL,表示可以允许执行所有命令,多个命令可以使用“,”分割
  • 当然命令,必须是命令的完整路径,可以使用switch 来查询

当然我们也可以给用户组设置sudo

%用户组名 ALL=(ALL) ALL

在输入sudo指令之后需要输入当前的用户密码进行确认的操作(不是root用户密码),输入之后在接下来5分钟内再次执行sudo指令不需要密码。

当然自己使用的话,每次输入密码,太麻烦了

youuser ALL=(ALL) NOPASSWD: ALL,NOPASSWD就是无需密码

案例

不能让mua用户修改root密码,但有其他的root权限:

mua ALL=(ALL) ALL,!/usr/bin/passwd root

在普通用户下怎么查看自己具有哪些特殊权限呢?
#sudo -l

结语

放假咸鱼的第28天
微信小程序

努力成长的程序员