Linux—权限管理

Linux 权限管理

Linux权限是操作系统用来限制对资源访问的机制,权限一般分为读、写、执行。系统中每个文件都拥有特定的权限:属主、属组以及其他人,通过这样的机制来限制哪些用户或用户组可以对特定文件进行相应的操作。

  • 权限指向文件中的三种类型的对象:
    [En]

    permissions are directed to three types of objects in the file:*

全拼 翻译 简写 owner 属主 u group 属组 g other 其它人 o

  • 权限的分类:

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

注意:目录必须拥有 x 权限,否则无法查看其内容

  • 权限的表示方式:

第一种 第二种 – – – 0 – – x 1 – w – 2 – w x 3 r – – 4 r – x 5 r w – 6 r w x 7

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

文档有所有者和组,流程也有所有者和组。

[En]

The document has owners and groups, and the process has owners and groups.

  • 任何可执行程序文件是否可以作为进程启动,取决于发起者是否拥有对该程序文件的可执行权限。
    [En]

    whether any executable program file can be started as a process depends on whether the initiator has executable permission to the program file.*

  • 作为流程启动后,流程的所有者为发起方,下级组为发起方的基本组
    [En]

    after starting as a process, the owner of the process is the initiator, and the subordinate group is the basic group of the initiator*

  • 进程访问文件的权限取决于进程的发起者:
    [En]

    the permissions of the process to access the file depend on the initiator of the process:*

  • 进程的发起者是文件的属主时,则应用文件属主权限
  • 进程的发起者是文件的属组时,则应用文件属组权限
  • 应用文件”其它”权限
//权限修改主要修改三类对象的权限//语法:chmod MODE file,...    -R      //递归修改权限//修改某类对象权限:u,g,o,a权限修改的三种方式:chmod 对象类别=MODE file,.....chmod 对象类别=MODE,对象类别=MODE file,.....例如:[root@zsl ~]# chmod u=rwx zsl[root@zsl ~]# chmod u=rwx,g=rwx zslchmod 对象类别+|-MODE file,.....chmod 对象类别+|-MODE,对象类别+|-MODE file,.....chmod +|-MODE file,.....例如:[root@zsl ~]# chmod u+rwx zsl[root@zsl ~]# chmod u-x,g-x zsl[root@zsl ~]# chmod +x zslchmod "mode number" file,.....例如:[root@zsl ~]# chmod 777 zsl
//chown命令只有管理员可以使用。chown USERNAME file,...    -R      //修改目录及其内部文件的属主chown USERNAME:GROUPNAME file,...chown USERNAME.GROUPNAME file,...例如:[root@zsl ~]# chown root.root zsl[root@zsl ~]# chown root:root zsl

linux的权限默认是根据linux安全上下文的方式来控制的,而特殊权限的存在打破了linux安全上下文的规则。

SUID(4)     //运行程序时,这个程序启动的进程的属主是程序文件自身的属主,而不是发起者为属主
    chmod u+s file
    chmod u-s file
    //如果file本身原来就有执行权限,则SUID显示为s,否则显示为S

SGID(2)     //运行程序时,这个程序启动的进程的属组是程序文件自身的属组,而不是启动者所属的基本组
            //一旦某目录被设定了SGID,则对此目录有写权限的用户在此目录中创建的文件或目录,其所属的组为此设定了SGID的目录的属组
    chmod g+s DIR
    chmod g-s DIR
    //如果file本身原来就有执行权限,则SGID显示为s,否则显示为S

SBIT(1)     //公共目录,每个人都能创建文件,删除自己的文件,但是不能删除别人创建的文件
    chmod o+t DIR
    chmod o-t DIR
    //如果DIR本身原来就有执行权限,则SBIT显示为t,否则显示为T

特殊权限的数字表示法:<details><summary>*<font color='gray'>[En]</font>*</summary>*<font color='gray'>Numerical representation of special permissions:</font>*</details>
4755    //有SUID,文件权限为755
2755    //有SGID,文件权限为755
1755    //有Sticky,文件权限为755
//这里前面的4、2、1分别表示SUID、SGID、Sticky

facl(Filesystem Access Control List),利用文件扩展保存额外的访问控制权限。

//语法:setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...

    -m      //设定权限条目
        u:UID:perm
        g:GID:perm
    示例:
       setfacl -m u:test:rw file
       setfacl -m g:test:rw file

//如果要为某个目录设定默认的访问控制列表,只需要设定时在u或g前面加上d即可
    示例:
       setfacl -m d:u:test:rw file
//此时在此目录中创建的文件均继承此访问控制列表所设置的权限

    -x      //删除权限条目
        u:UID
        g:GID
    示例:
       setfacl -x u:test file
       setfacl -x g:test file

    -b      //Remove all
    示例:
       setfacl -b file

//查看文件系统访问控制列表getfacl
//语法:getfacl [-aceEsRLPtpndvh] file ...

    示例:
       getfacl file

为什么在创建文件之后是默认许可644?

[En]

Why is the default permission 644 after the file is created?

为什么在创建目录之后是默认许可755?

[En]

Why is the default permission 755 after the directory is created?

&#x65B0;&#x5EFA;&#x6587;&#x4EF6;&#x548C;&#x65B0;&#x5EFA;&#x76EE;&#x5F55;&#x7684;&#x9ED8;&#x8BA4;&#x6743;&#x9650;&#x662F;&#x7531;&#x906E;&#x7F69;&#x7801;umask&#x6765;&#x63A7;&#x5236;&#x7684;&#x3002;

从名字就能看出来,遮罩码umask是用来隐藏一些权限的。

&#x4E3E;&#x4F8B;&#xFF1A;&#x5982;&#x679C;&#x4F60;&#x4E0D;&#x60F3;&#x8BA9;&#x4EBA;&#x5BB6;&#x8BA4;&#x51FA;&#x4F60;&#xFF0C;&#x4F60;&#x4F1A;&#x600E;&#x4E48;&#x529E;&#xFF1F;

文件最终的权限为:

666-umask   &#x6587;&#x4EF6;&#x6700;&#x9AD8;&#x6743;&#x9650; - &#x906E;&#x7F69;&#x7801; = &#x6587;&#x4EF6;&#x6700;&#x7EC8;&#x6743;&#x9650;

目录最终的权限为:

777-umask   &#x76EE;&#x5F55;&#x6700;&#x9AD8;&#x6743;&#x9650; - &#x906E;&#x7F69;&#x7801; = &#x76EE;&#x5F55;&#x6700;&#x7EC8;&#x6743;&#x9650;

默认情况下,该文件不具有执行权限,如果该文件具有执行权限,则将其权限整体增加1。

[En]

The file cannot have execute permission by default, and if the file has execute permission, increase its permission as a whole by 1.

sudo可以实现某个用户能够以另外哪一个用户的身份通过哪些主机执行什么命令

sudo的配置文件:/etc/sudoers

//使用visudo命令进行sudo的配置,每一行就是一个sudo条目,条目格式如下:

示例:
    who which_hosts=(runas) command

who : User,User_Alias           //表示运行命令者的身份
which_hosts : Host,Host_Alias       //通过哪些主机
runas : User,Runas_Alias        //以哪个用户的身份
command : Command,Cmnd_Alias        //运行哪些命令

//别名必须全部而且只能使用大写英文字母的组合,可以使用感叹号取反

//别名分类
1.用户别名:
User_Alias "Alias" =
    用户的用户名
    组名,使用%引导
    还可以其它已经定义的用户别名

2.主机别名:
Host_Alias "Alias" =
    主机名
    IP地址
    网络地址
    其它主机别名

3.命令别名:
Cmnd_Alias =
    命令路径
    目录(此目录内的所有命令)
    其它已定义的命令别名

//sudo命令语法:sudo [options] COMMAND
    -V      //显示版本编号
    -h      //帮助信息,会显示版本编号及指令的使用方式说明
    -l      //列出当前用户可以使用的所有sudo类命令
    -v      //重新做一次密码确认,如果超过N(默认为5)分钟,也会问密码
    -k      //立刻清除认证信息,如果不指定-k,默认认证信息在5分钟后失效
    -b      //将要执行的指令放在后台执行
    -u USERNAME     //以指定的用户名执行命令,默认为root

chattr命令用于改变文件的特殊属性。与chmod命令相比,chmod只是改变文件的读写、执行权限,而chattr是基于内核的更底层的属性控制。

`shell
命令格式:
chattr [选项] [+/-/=属性] [文件或目录]

选项:
-R //递归
-V //显示过程

模式:
+ //用于增加属性
– //用户删除属性
= //用于指定属性
A //告诉系统不要修改该文件的最后访问时间
a //只能向文件追加数据,不能删除
i //设定文件不能被删除,改名,写入或新增内容

示例:
[root@hzz ~]# chattr +a hzz.txt //为hzz.txt增加a属性

[root@hzz ~]# lsattr hzz.txt //查看文件特殊属性

Original: https://www.cnblogs.com/Alone-8712/p/16522942.html
Author: Alone-林
Title: Linux—权限管理

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/522864/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球