Linux权限理解

发布于:2024-06-21 ⋅ 阅读:(101) ⋅ 点赞:(0)

目录

一.权限的概念

二.Linux权限管理

1.文件访问者的分类(人)

2.文件类型和访问权限(事物属性)

3.文件权限值的表示方法

4.文件访问权限的相关设置方法

5.修改文件的拥有者

6.修改文件所属组

7.查看或修改文件权限掩码

8.目录的权限

9.粘滞位


一.权限的概念

Linux下有两种用户:超级用户(root)、普通用户。

  • 超级用户:可以再linux系统下做任何事情,不受限制
  • 普通用户:在linux下做有限的事情。
  • 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。

命令:su [用户名]

功能:切换用户

例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令。

命令:adduser [用户名]

功能:添加用户

命令:userdel -r [用户名]

功能:删除用户

注意:我们在输入密码时是不显示的;创建用户删除用户都需要root的身份。

二.Linux权限管理

1.文件访问者的分类(人)

Linux中一切皆文件,对于一个文件,按照文件访问者的来分类,有三种情况:

  • 文件和文件目录的所有者:u---User   (拥有者)

        拥有者很好理解,就是拥有这个文件的人

  • 其它用户:o---Others   (其他人)

        其他人也很容易理解,就是外来的访问者

  • 文件和文件目录的所有者所在的组的用户:g---Group   (所属组)

        所属组与我们日常生活中的小组类似,将多人添加到同一个小组,可以方便权限的分配,即方便管理。对于小组外的成员,是没有权限访问所属组的文件的。

注意:Linux中没有对other的标注位,因为如果一个访问者既不属于拥有者,也不属于所属组,那他相对这个文件就是other。root用户对于所有文件都拥有最高权限,即便root用户对于某个文件为other角色。

2.文件类型和访问权限(事物属性)

注意:Linux不是以文件的后缀来区分文件类型的,而是通过属性的第一个字符来区分的。

文件类型

        d:目录文件

        -:普通文件

        l:软链接(类似Windows的快捷方式)

        b:块设备文件(例如硬盘、光驱等)

        p:管道文件

        c:字符设备文件(例如屏幕等串口设备)

        s:套接口文件

图示如下:

基本权限

r  :读(浏览)

w :写(修改)

x  :可执行

-   :表示不具有该项权限

3.文件权限值的表示方法

a)字符表示方法

        Linux表示 说明
        r-- 只读

        -w-

仅可写
        --x 仅可执行
        rw- 可读可写
        -wx 可写可执行
        r-x 可读可执行
        rwx 可读可写可执行
        --- 无任何权限

b)8进制数值表示方法

用二进制表示权限:即有对应权限为1,无对应权限为0,对应了八进制中的0到7.

权限符号 二进制 八进制
        r-- 100 4

        -w-

010 2
        --x 001 1
        rw- 110 6
        -wx 011 3
        r-x 101 5
        rwx 111 7
        --- 000 0

4.文件访问权限的相关设置方法

chmod

格式:chmod [参数] 权限 文件名

功能:设置文件的访问权限

常用选项:

 r : 递归修改目录文件的权限

说明:只有文件的拥有者和root才可以改变文件的权限

chmod 命令权限值的格式:

①用户表示符+/-=权限字符

  • +:向权限范围增加权限代号所表示的权限
  • -:向权限范围取消权限代号所表示的权限
  • =:向权限范围赋予权限代号所表示的权限 用户符号:  
  • u:拥有者
  • g:拥有者同组用
  • o:其它用户
  • a:所有用户

示例:

减去拥有者的读权限:chmod u-r 文件名

减去所属组其它用户的写权限:chmod g-w,o-w 文件名

给所有用户所有权限:chmod u+rwx,g+rwx,o+rwx 文件名

注意:root用户不受权限约束

即便root对于file.txt属于others,没有写权限,但仍能进行操作。

②三位8进制数字

有了上面的表格 ,我们不难看出每一种权限状态都能对应一种八进制数字且最高为7,所以chmod也可以用8进制数字来更改权限。

示例:

去掉所有人的所有权限:chmod 000 文件名

添加指定权限:

统一修改权限:chmod a=* 文件名

5.修改文件的拥有者

chown

格式:chown [参数] 用户名 文件名

功能:修改文件的拥有者

注意:chown 是一个管理命令,因此您需要是 root 或具有 sudo 权限才能使用 chown 命令进行更改。

如果不是root或没有sudo权限

正确示例:

6.修改文件所属组

chgrp

格式: chgrp [参数] 用户组名 文件名

功能:修改文件或目录的所属组

常用选项: -R 递归修改文件或目录的所属组

注意:对于一般用户,如果文件的拥有者是自己,所属组是别人,可以将所属组改为自己不需要他人同意,但改为别人则需要同意。

附:如何创建一个组

  • 增加用户:useradd -d /usr/username -m username
  • 为用户增加密码:passwd username
  • 新建工作组:groupadd groupname
  • 将用户添加进工作组:usermod -G groupname username
  • 删除用户:userdel username
  • 查看小组成员 : cat /etc/group | grep groupname

注意:创建完组后要把所有登录状态退出之后,重新登录后才可以正常访问组内文件。

7.查看或修改文件权限掩码

umask

功能:查看或修改文件掩码

新建文件夹默认权限=0666,新建目录默认权限=0777

但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是umask,则实际创建的出来的文件权限是:mask & ~umask。

本别用root和普通用户创建一个目录文件和一个txt文件,我们发现:

普通用户创建的目录文件权限值为775,txt文件权限值为334

root创建的目录文件权限值为755,txt文件权限值为344

之所以出现这样的结果,是因为普通用户和root用户的权限掩码不一致

注意:权限掩码往往只有后三位起作用,第一位是0.

下附普通用户创建目录文件的计算过程

8.目录的权限

  • r可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.
  • w可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件.
  • x可执行权限: 如果目录没有可执行权限, 则无法cd到目录中

9.粘滞位

通过对文件和目录权限的学习,我们不难发现一个问题,如果一个人有目录的w权限,但没有其中文件的w权限,但仍可以删除这个文件,这是不合理的。

所以为了解决这个不科学的问题,Linux引入了粘滞位的概念.

总结:当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由

  • 一、超级管理员root删除
  • 二、该目录的所有者删除
  • 三、该文件的所有者删除

可以使用ls -ld /tmp 来查看当前目录是否有粘滞位。


网站公告

今日签到

点亮在社区的每一天
去签到