• Linux 入门记录:十二、Linux 权限机制


    一、权限

    权限是操作系统用来限制资源访问的机制,权限一般分为读、写、执行。

    系统中每个文件都拥有特定的权限、所属用户及所属组,通过这样的机制来限制哪些用户、哪些组可以对特定的文件进行什么样的操作。

    每个进程都是以某个用户的身份运行,所以进程的权限与该用户的权限一样,用户的权限越大,该进程所拥有的权限也就越大。

    二、文件权限

    Linux 中,每个文件拥有以下三种权限:

    权限 对文件的影响 对目录的影响
    r(读取) 可读取文件内容 可列出目录内容
    w(写入) 可以修改文件内容 可在目录创建、删除文件
    x(执行) 可以作为命令执行 可访问目录内容

    所以,目录必须拥有 "x" 权限才可查看其内容。很多时候,执行权限 "x" 对于目录而言也叫浏览权限。仅有 "r" 权限是无法查看目录内容的(因为连访问都做不到)。

    三、UGO模型

    Linux 权限基于 UGO 模型进行控制:

    • U 代表 User,是文件或文件夹所属用户的权限;G 代表 Group,是文件或文件夹所属组的权限;O 代表 Other,是其他用户对文件或文件夹的权限
    • 每一个文件的权限基于 UGO 模型进行设置
    • 权限三个一组(rwx),对应 UGO 分别设置(总共有 3 个组 9 个权限)
    • 每一个文件拥有一个所属用户和所属组,对应 U、G模型;不属于该文件所属用户和所属组的使用 O(Other)模型对应的权限

    命令 ls -l 可以查看当前目录下所有文件的详细信息:

    上图中,每一行的格式如下:

     drwxr-xr-x.  2  mingc  mingc  4096   Sep 23 14:54   Desktop

     UGO模型的权限

     第1位是文件类型描述符,"d"表示目录,"-"表示文件

     第2-4位"rwx"是U模型权限,可读可写可执行

     第5-7位"r-x"是G模型权限,可读可执行,不可写

     第8-10位"r-x"是O模型权限

     链接数量   所属用户U   所属组G   大小  日期时间  文件或目录名 

    四、修改文件所属用户和组

    命令 chown 用以改变文件的所属用户:

    chown username filename

    常用参数:

    -R   归地修改目录下所有文件的所属用户

    命令 chgrp 用以改变文件的所属组:

    chgrp groupname filename
    

    常用参数:

    -R   递归地修改目录下所有文件的所属组
    

      

    五、修改文件权限

    命令 chmod 用以修改文件的权限:

    chmod mode filename
    

    mode 参数格式如下:

    u、g、o     分别代表用户、组、其他
    a           代表ugo
    +、-        代表加入或删除对应权限
    r、w、x     代表三种权限
    -R          递归地修改

    示例:

    chmod u +rw test.md    给文件的所属用户添加rw权限
    chmod g -x test.md     给文件的所属组移除x权限
    chmod go +r test.md    给文件的所属组和其他用户添加r权限
    chmod a -x test.md     给文件的所属UGO三个模型均移除x权限

    命令 chmod 也支持以三位八进制数值的方式修改权限,rwx 权限值分别由数字表示如下:

    r = 4 (2 ^ 2)
    w = 2 (2 ^ 1)
    x = 1 (2 ^ 0)

    使用数字表示权限时,每组权限分别为对应数字之和:

    rw  = 4 + 2 = 6
    rwx = 4 + 2 + 1 = 7
    r-x = 4 + 1 = 5

    所以,使用数字表示 UGO 权限时,可以用如下方式表示:

    chmod 0660 test.md  设置 UGO 权限为 rw-rw----
    chmod 0775 test.md  设置 UGO 权限为 rwxrwxr-x

    六、实例

    案例描述

    现在有个某公司 Company,部门和员工如下:

    部门 员工
    培训部(Training)

    李雷(LiLei)

    王雪(WangXue)

    市场部(Market)

    韩梅梅(HanMeimei)

    林立(LinLi)

    管理部(Manage)

    路人甲(User1)

    路人乙(User2)

    不行了,名字想不出来了~~

    现在,要为每个部门和员工建立相应的工作文件夹,要求如下:

    1. 所有目录、文件均保存在一个统一的文件夹下
    2. 每个部门拥有一个独立的文件夹
    3. 不同部门之间不能访问对方文件夹
    4. 每个员工在所在部门文件夹下拥有一个所属的文件夹
    5. 相同部门不同员工之间可以查看对方的文件夹,但不可修改,员工只能修改自己的文件夹

    解决方案

    好的,下面开始:

    用组来表示部门,用用户来表示员工,我以 root 用户登录添加组和用户,并为用户指定附属组(部门):

    为了让整个公司的文件夹 Company 有足够的访问权限,在根目录 "/" 下创建公司的文件夹目录 /Company,并创建三个部门子目录,去掉每个部门目录的 O 模型权限并指定所属部门:

    OK,这样就满足了前 3 个要求:有统一文件夹和多个不同的部门目录,并且不同部门之间全没有 O 模型权限,不能访问对方。

    下面继续创建员工目录,并为每个目录指定它的所属员工和所属部门:

    好的,第 4 和第 5 个要求也满足了:每个员工有自己的文件夹,并且不同员工之间只能查看不能修改。

    最后测试一下,登录 LiLei 账号:

    不同部门之间不能查看,同一部门之间可以查看不能修改,完成。

    相关链接:

    Linux安全体系的文件权限

    linux文件权权限

  • 相关阅读:
    员工看公司
    Java多线程
    Intellij热部署插件JRebel的详细配置及图解
    Java并发处理锁 Lock
    Java8 Stream
    Eclipse下Maven安装和配置
    IntelliJ IDEA 部署Tomcat及创建一个web工程
    IntelliJ IDEA 下搭建vue项目工程
    Vue Router路由管理器介绍
    用WebStorm搭建vue项目
  • 原文地址:https://www.cnblogs.com/mingc/p/7591287.html
Copyright © 2020-2023  润新知