• Linux权限


    Linux权限

    一、用户权限

    1、用户分类

    Linux下的用户分为超级用户(root)和普通用户(user)。

    它们的区别在于:

    1. 超级用户在Linux系统下做任何事情不受限制,而普通用户只能做有限的事情;
    2. 超级用户的命令行提示符为**#,普通用户为$**。

    2、权限提升sudo

    sudo command

    让普通用户以root的身份执行 command,只需要输入用户密码而不需要知道 root 的密码

    注:使用一次sudo后短期内再次使用不需要输入用户密码

    img


    二、文件权限

    1、文件的访问者

    对于文件来说,访问者分为:所有者(user)、所属组(group)和其他人(others)。

    • 所有者:文件的建立者
    • 所属组:一组用户的集合,在该组中,除了文件所有者,其他人对该文件的访问权限都一样,他们是合作关系(除非某一个user特别设定某一文件的访问权限)
    • 其他人:非所有者和非所属组成员都是其他人,对文件的权限非常有限,甚至没有。

    2、文件的属性信息

    在命令行中使用ll命令会显示当前目录下的文件详细信息,比如:

    -rw-r--r-- 1 root root 231 Oct 1 15:58 file.txt

    - 表示文件类型,分为:

    -:普通文件

    d:目录

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

    p:管道文件

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

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

    s:套接口文件

    注:通过 file+文件名 查看文件类型

    rw-r--r--这9个字符三个为一组,分别代表user、group、others对于该文件的访问权限。

    其中,r表示可读,w表示可写,x表示可执行,而对应位置为 - 的则表示没有对应权限,比如:rw-表示可读可写不可执行;

    1表示连接数

    root root分别代表:文件所有者和所属组的名字。如果文件的访问者不是这两种,那么他就是others。

    231表示文件大小。

    Oct 1 15:58表示该文件最近的修改日期。

    file.txt表示文件名。

    注意:文件的权限只能约束普通用户,无法约束root用户!

    3、文件权限的概念

    I.权限的八进制表示法

    rwx对应111,即7;

    ---对应000,即0;

    对应位为1表示拥有该权限。

    II.文件掩码

    文件的初始权限为: (默认权限) & (~权限掩码);

    其中:

    普通文件的默认权限为666(rw- rw- rw-),目录为777(rwx rwx rwx)

    普通用户的默认权限掩码为002,root为022

    示例:

    当普通用户创建目录,那么目录的初始权限就是:

    777 & ~(002) = 775(rwx rwx r-x)

    III.目录的权限

    目录是一种特殊的文件,它的权限也分别有特殊的定义。

    1. 目录可读是指:能够查看在该目录下有哪些文件;
    2. 目录可写是指:能够在该目录下创建、删除文件;
    3. 目录可执行是指:能够对该目录执行指令,或者说,能够进入(cd)该目录。

    如果一个目录没有x权限,那么就无法对该目录下的文件执行读写,因为读写的前提是:必须先进入该目录。

    而要删除一个文件,对该文件所在目录需要拥有wx权限,但是对该文件本身却没有w权限要求

    IV.粘滞位

    对于只有---权限的用户,无法读、写、执行文件,但是可以删除该文件!

    因此linux为目录增添了一种特殊权限:粘滞位(t)

    粘滞位的设置方法为:chmod +t file_name;

    当设置了粘滞位后,目录下的文件只能由三种用户删除:

    • 文件所有者
    • 目录所有者
    • root

    系统根目录下保存程序产生的临时文件的tmp目录就使用了粘滞位。

    img

    注:粘滞位实际上是针对其他人(others)设置的。当其他人拥有目录x权限时,粘滞位在x处显示t,未拥有x权限时,显示T

    4、文件权限相关命令

    chmod

    chmod [选项] 文件名

    修改文件的权限,该命令只有文件的拥有者和root可以执行

    +:向权限范围增加权限代号所表示的权限

    -:向权限范围取消权限代号所表示的权限

    =:向权限范围赋予权限代号所表示的权限

    用户符号:

    u:拥有者

    g:拥有者同组用

    o:其它用户

    a:所有用户

    示例:

    chmod o+w f.txt 给others增加写权限

    chmod o-r f.txt 回收others的读权限

    chmod o=--- f.txt 不给others任何权限

    当然,也可以通过八进制的方式增减权限,例如:

    chmod 000 f.txt 不给任何人权限

    chmod 777 f.txt 给任何人所有权限

    注:对于只有写权限,没有读权限的普通用户,想要写文件就必须使用echo+重定向的方式。

    chown

    chown [选项] 新的拥有者 文件名

    改变文件的拥有者(普通用户需要sudo)

    -R:递归修改所有子文件和子目录的拥有者

    chgrp

    chgrp [选项] 新的所属组 文件名

    改变文件的所属组(普通用户需要sudo)

    -R:递归修改所有子文件和子目录的拥有者

    umask

    查看/修改文件掩码

    umask:查看掩码

    umask + 数字:修改当前用户的掩码

  • 相关阅读:
    亚马逊刷关键词软件——亚马逊鲲鹏系统
    初识C语言
    Typora+Node.js+PicGo+Gitee 设置图片自动上传
    Zookeeper (四) --------- 服务器动态上下线监听案例
    设计模式-行为性模式:策略模式
    Unity 中使用foreach注意
    为什么讨厌Java的人比较多且易见?
    Spark零基础入门实战(一)Scala安装
    [附源码]Python计算机毕业设计Django时间管理软件app
    2022吃透这份“Java面试八股文+各大厂的面试真题”金九银十稳了
  • 原文地址:https://blog.csdn.net/Wyf_Fj/article/details/126090378