Linux权限管理命令

一、权限概述

1、什么是权限

Linux 系统的架构里,权限是构建安全堡垒的基石,精准界定了不同用户对文件与目录的操作边界, 对系统安全的维护以及数据完整性的保障起着决定性作用。Linux 将权限归纳为读(r)、写(w)和执行(x)这三种基础类别,它们各司其职,共同守护系统资源。
权限针对文件权限针对目录
读(r)

表示可以查看文件内容:cat

查看文件权限:ls -l

查看目录权限:ls -ld
写(w)表示可以更改文件的内容;vim 修改,保存退出(wq:保存退出,q:不保存退出,wq!:强制保存退出)表示是否可以删除目录中的子文件或者新建子目录(rm/touch/mkdir)
执行(x)表示是否可以开启文件当中记录的程序,一般指二进制文件(.sh)表示进入目录中(cd)

一般给予目录读权限时,也将会给其执行权限,属于“套餐”组合。 

2、Linux中文件所有者

2.1所有者分类

        user(文件拥有者)

        group(文件拥有组)

        other(其他用户)

2.2所有者的表现方式

        文件拥有者权限
        u(the user who owns it)(文件拥有者权限)

        用 u 表示,文件所有者,默认为文档的创建者

        文件拥有组权限
        g(other users in the file's group)(文件拥有组权限)

        用 g 表示,在文件所属组(默认是创建文件的用户的主组)里的用户

        其他权限
        o(other user not in the file's group)(其他用户权限)

        用 o 表示,既不是文件的创建者,也不在文件拥有组里的用户,称为其他用户!

        linux ugo权限,所谓ugo,就是User, Group,Other三个单词的首字母

        就指拥有者,主组,其他三种权限。

        ugo 等于 u + g + o

        a (all) 等于u + g + o

        root用户(超级管理员)
        在Linux 中,root 用户,在所有用户中 root 用户 拥有最大的权限 ,可以管理着普通用户,设置文档的权限时不必考虑 root 用户。

二、文件权限的种类

1、文件权限的种类

(1)文件权限信息

-       rw-r--r--. 1     root   root  0    Mar 30 10:04 yxx15
文件类型 文件权限   链接数 拥有者 拥有组  大小  最后修改时间  文件名

(2)目录权限信息

d    rwxr-xr-x. 2      root    root   45    Mar 30 10:05   yyy
类型  权限      链接数  拥有者   拥有组 大小   最后修改时间   目录名称

2、文件权限详解

Linux 中存在三类身份:

        user(文件拥有者)

        group(文件拥有组)

        others(其他用户)

各自有不同的权限,对于一个文档来说,其权限具体分配如下:

linux一共有7种文件类型,分别如下:

  -普通文件
d目录文件
l软链接(类似Windows的快捷方式)

下面四种是特殊文件:

b块设备文件(例如硬盘、光驱等)
p管道文件
c字符设备文件(例如猫等串口设备)
s套接口文件/数据接口文件

3、设置文件/目录权限

        命令:chmod

        语法:

#chmod 复制权限#
chmod --reference=/tmp /mnt/yyy           #复制/tmp目录的权限到/mnt/yyy上
chmod -R --reference=/tmp /mnt/westosdir  #复制/tmp目录的权限到/mnt/westosdir及
                                          #目录中的子文件上 -R 代表第归操作

#chmod 字符方式设定权限

chmod <a|u|g|o><+|-|=><r|w|x> file ##用字副方式设定文件权限

        作用:增加或者减少当前文件所有者的权限(不能改变所有者,只能改变现有所有者的权限)。

        常用选项:-R:递归设置权限 (当文档类型为目录的时候)

        权限模式:就是该文档需要设置的权限信息

        文档:可以是文件,也可以是目录,可以是相对路径也可以是绝对路径。

        **如果想要给文档设置权限,操作者要么是root 用户,要么就是文档的所有者。

        字母形式实例 

         相关权限总结

字母选项作用
uuser文件拥有者
ggroup文件拥有组
oother其他用户
aall所有人
+增加
-移除
=等于赋值
rread可读权限
wwrite可写权限
xexecute可执行权限

        chmod 数字方式设定权限
        权限波尔指表示方式

4、注意

在Linux 中,如果要删除一个文件,不是看文件有没有对应的权限,而是看文件所在的目录是否有写权限,如果有才可以删除(同时必须具备执行权限)。

比如说监控中显示
-rW-r--r--.1 lee shengchan 0 Mar 30 14:44 leefile
就证明yee是在shengchan目录下的
那么
[adminaTiminglee ~l$ rm -fr /pub/leefile就无法删除lee文件

 三、文件拥有者和拥有组的设置

 1、chown修改文件的拥有者

        基本语法:chown [-R] 新文档拥有者名称 文档路径

        作用:更改文档的所属用户(change owner)

        选项:-R 代表递归修改文件的拥有者

 示例代码1

建立文件example
[root@localhost mnt]# touch example

把example的所属用户更改为yqq
[root@localhost mnt]# chown yqq example 

我们从监控中可以看到

更改前:所属用户是root 

 更改后:所属用户是yqq

示例代码2

创建目录ddl
[root@localhost mnt]# mkdir ddl

把目录ddl的所属用户更改为yqq
[root@localhost mnt]# chown yqq ddl

从监控中可以看出:

更改前:目录ddl的所属用户是root 

更改后:ddl的所属用户是yqq

2、chgrp修改文件的拥有组 

        基本语法: chgrp [-R] 新文档组名称 文档的路径

        作用:更改文档的所属用户组(change group)

 示例代码1

[root@localhost mnt]# chgrp yqq example

更改前:文件example所属组为root 

更改后:文件example所属组为yqq 

示例代码2 

[root@localhost mnt]# chgrp yqq ddl

更改前:目录ddl所属组为root 

更改后:目录ddl所属组为yqq 

3、chown同时修改所属用户与所属组


        基本语法:语法:# chown [-R] username:groupname 文档路径

        示例代码:将example.txt文件的拥有者与所属组都更改为root

[root@localhost mnt]# chown root:root example

更改前:所属用户和所属组为yqq

 更改后:所属用户和所属组为root

注意:

一般来说,chown 指令是由系统管理者(root)所使用,普通用户没有权限可以改变别人的拥有者,也没有权限可以将自己的拥有者改设为别人,只有系统管理者(root)才有这样的权限。

四、ACL访问控制 

1、简述

        ACL,是 Access Control List(访问控制列表)的缩写,在 Linux 系统中, ACL 可实现对单一用户设定访问文件的权限。

2、ACL权限开启标识

-rw-rw---- 1 root root 0 Mar 31 10:23 yxx
          ^
没有"+"代表acl列表未开启
-rw-rw----+ 1 root root 0 Mar 31 10:23 yxx
          ^
     acl列表开启

3、基本命令

        getfacl命令:查看文件的ACL策略及权限

        setfacl命令: 给文件针对某个用户或者某个组来增加(设置)ACL策略

3.1getfacl命令  

 显示内容分析

[root@localhost mnt]# getfacl example
# file: example    文件名称
# owner: root      文件拥有者
# group: root      文件所属组
user::rw-          文件拥有者权限
group::---         文件所属组权限
other::---         其他用户权限

3.2setfacl命令 

#删除/mnt/ddl/目录上所有扩展的 ACL 条目。执行后,该目录的权限将完全由传统的chmod权限设置来控制,而不再受到任何自定义的 ACL 规则的影响。
[root@localhost Desktop]# setfacl -b /mnt/ddl/

#为用户admin赋予对/mnt/ddl/目录的读、写和执行权限。
[root@localhost Desktop]# setfacl -m u:admin:rwx /mnt/ddl/

#为用户组root设置对/mnt/ddl/目录的权限为“无权限”。也就是说,用户组root中的所有用户都将被禁止访问 /mnt/ddl/目录,包括读取、写入或进入该目录。
[root@localhost Desktop]# setfacl -m g:root:0 /mnt/ddl/

#将/mnt/ddl/目录的 掩码权限设置为rwx这意味着,除所有者和组所有者之外的用户或用户组的权限将被限制为最多rwx 。
[root@localhost Desktop]# setfacl -m m::rwx /mnt/ddl/

#将/mnt/ddl/目录的所有者权限设置为读(r)和执行(x)权限,但不包括写(w)权限。这意味着目录的所有者将能够读取目录内容并进入目录,但无法修改目录中的文件或子目录。
[root@localhost Desktop]# setfacl -m u::rx /mnt/ddl/

#将/mnt/ddl/目录的默认用户组的权限设置为读(r)权限,但不包括写(w)和执行(x)权限。这意味着目录的默认用户组成员将能够读取目录内容,但无法修改目录中的文件或进入目录。
[root@localhost Desktop]# setfacl -m g::r /mnt/ddl/

#将/mnt/ddl/目录的所有者权限设置为读(r)、写(w)和执行(x)权限。这意味着目录的所有者将能够读取、修改和进入该目录。
[root@localhost Desktop]# setfacl -m u::rwx /mnt/ddl/

#将/mnt/ddl/目录的默认用户组的权限设置为读(r)和执行(x)权限,但不包括写(w)权限。这意味着目录的默认用户组成员将能够读取目录内容并进入目录,但无法修改目录中的文件或子目录。
[root@localhost Desktop]# setfacl -m g::rx /mnt/ddl/

#移除/mnt/ddl/目录中针对用户组root的特定ACL条目。移除后,用户组root的权限将不再由ACL控制,而是由传统的chmod权限决定。
[root@localhost Desktop]# setfacl -x g:root /mnt/ddl/

#移除/mnt/ddl/目录中针对用户admin的特定ACL条目。移除后,用户admin的权限将不再由 ACL 控制,而是由传统的chmod权限决定。
[root@localhost Desktop]# setfacl -x u:admin /mnt/ddl/

4、acl 权限优先级 

                拥有者 > 特殊指定用户 > 权限多的组 >权限少的组 > 其他 

五、umask 

1、系统默认权限设定

       (1) 系统本身存在的意义共享资源。
       (2) 从安全角度讲系统共享的资源越少,开放的权力越小系统安全性越高。
       (3) 既要保证系统安全,又要系统创造价值,于是把应该开放的权力默认开放把不安全的权力默认保留。

        (4)umask表示创建文件时的默认权限(即创建文件时不需要设置而天生的权限)。

2、umask值

        可以使用umask命令来查看umask的值。

        基本语法:# umask

示例:

3、修改umask值

3.1 临时更改

#umask临时更改
[root@localhost Desktop]# umask 077

3.2 永久更改

打开系统配置文件 

[root@localhost Desktop]# vim /etc/profile

在最后输入 umask 077命令 

打开shell配置文件

[root@localhost Desktop]# vim /etc/bashrc

在文件最后输入umask 077命令 

 让配置文件中的设定在当前的shell中立即生效

[root@localhost profile.d]# source /etc/profile
[root@localhost profile.d]# source /etc/bashrc

六、特殊权限 

1、SGIDSet GID 

        作用:为了让一般使用者临时具有该文件所属用户/组的执行权限。

示例:

每秒刷新一次,列出所有进程,并显示用户、组和命令行,然后只显示最后5行,列出/bin/cat文件的详细信息。
[root@localhost Desktop]# watch -n 1 "ps ax -o user,group,command  |  tail -n 5 ;ls -l /bin/cat"

为/bin/cat文件设置 SGID(Set Group ID)权限
[root@localhost Desktop]# chmod g+s /bin/cat

为/bin/cat设置SGID(Set Group ID)权限,并同时设置文件的读、写和执行权限。
[root@localhost Desktop]# chmod 2755 /bin/cat

 注意:sgid这对于文件,仅对二进制可执行文件生效当开启sgid的二进制可执行文件被任何用户调用产生的进程都属于二进制可执行文件的所有组和执行者组身份没关系。

2、 SUIDSet UID

        当一个设置了 SUID 权限的程序被执行时,内核会将进程的有效用户 IDEffective User ID)临时设置为 文件所有者的用户 ID,而实际用户 IDReal User ID)保持不变。这样,在程序执行期间,该进程就具 有了文件所有者的权限。

2.1SUID权限位:

        SUID由文件权限位中用户部分的"s"表示。如果一个文件被设置了SUID位,会表现在所有者(文件的属主)的权限的可执行位上(x)。

        所有者的权限的可执行位(x)上定义了一个补充的s位,如果文件设置了SUID,那么它在执行的时候,会把进程的权限设置成文件所属用户的uid。
        当设置了SUID时,还需要所有者的执行权限。当s这个标志出现在文件所有者的x权限上时,则就被称为SUID。

示例:

/usr/bin/passwd命令,它具有SUID权限,因此普通用户可以在不具备修改密码文件权限的情况下,通过执行该命令来更改自己的密码。

[yqq@localhost ~]$ ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 32648 Aug 10  2021 /usr/bin/passwd

3、Sticky Bit

        命令:chmod

        语法:# chmod [选项] 文件夹

        作用:只允许文件的创建者和root用户删除文件

        常用选项:

                o+t 添加粘滞位

   示例:

[root@localhost Desktop]# su - admin
[admin@localhost ~]$ touch /pub/adminfile
[admin@localhost ~]$ rm -fr /pub/adminfile
[admin@localhost ~]$ rm -fr /pub/leefile
[admin@localhost ~]$ touch /pub/adminfile
[admin@localhost ~]$ rm -fr /pub/adminfile
[admin@localhost ~]$ rm -fr /pub/leefile
rm: cannot remove '/pub/leefile':Operation not permitted
因为这个文件所有者是lee,设置了只能被所属用户lee删除,所以admin用户无法删除

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值