11.Linux权限管理 chmod chown chgrp chattr

1.Linux 权限管控概述

访问⼀个⽂件或者⼀个⽬录是否应该被允许

1.系统权限
2.服务权限
3.防⽕墙firewall权限
4.SElinux权限

系统权限:
        普通系统权限
        特殊系统权限
        默认系统权限
        特殊ACL权限

⽂件权限
    r - read 读权限
    w - write 写权限
    x - exec 执⾏权限

⽬录权限
     r - read 读权限
     w - write 写权限
     x - exec 执⾏权限

2. Linux 权限修改

# chmod

chmod  [修改的权限]  [⽂件/⽬录]
u 修改⽂件拥有者权限
g 修改⽂件所属组权限
o 修改⽂件其他⼈权限
        + 添加某个权限                    - 删除某个权限                   = 赋予某个权限

#为⽂件拥有者添加执⾏权限
[u01@localhost ~]$ chmod u+x 123.txt
[u01@localhost ~]$ ls -l
总用量 0
-rwxrw-r--. 1 u01 u01 0 8月   8 10:36 123.txt

#为⽂件所属组删除掉写权限
[u01@localhost ~]$ chmod g-w 123.txt
[u01@localhost ~]$ ll
总用量 0
-rwxr--r--. 1 u01 u01 0 8月   8 10:36 123.txt

#为⽂件其他⼈删除掉读权限 
[u01@localhost ~]$ chmod o-r 123.txt
[u01@localhost ~]$ ls -l
总用量 0
-rwxrw----. 1 u01 u01 0 8月   8 10:36 123.txt

#赋予⽂件所属组 读写权限 
[u01@localhost ~]$ chmod g=rw 123.txt
[u01@localhost ~]$ ls -l
总用量 0
-rwxrw-r--. 1 u01 u01 0 8月   8 10:36 123.txt

#组合操作
[u01@localhost ~]$ chmod u-x g-w o+r 123.txt   #逗号
chmod: 无法访问"g-w": 没有那个文件或目录
chmod: 无法访问"o+r": 没有那个文件或目录
[u01@localhost ~]$ chmod u-x,g-w,o+r 123.txt  
[u01@localhost ~]$ ll
总用量 0
-rw-r--r--. 1 u01 u01 0 8月   8 10:36 123.txt

[u01@localhost ~]$ chmod u=rwx,g=rw,o=rw 123.txt
[u01@localhost ~]$ ll
总用量 0
-rwxrw-rw-. 1 u01 u01 0 8月   8 10:36 123.txt

#在linux 被执⾏⽂件通常是   : 命令⽂件 / 脚本⽂件 / 程序

#脚本⽂件 
    shell        xxx.sh
    python     xxx.py
#普通⽂件执⾏  使用  绝对路径或相对路径

3. Linux 目录权限

文件权限
    r - read 读权限 - 查看该⽂件
    w - write 写权限 - 对⽂件进行修改-添加/删除
    x - exec 执⾏权限 - 执行文件中的代码信息

目录权限
    r - read 读权限 - 可以查看该目录下的⽂件
    w - write 写权限 - 对目录进行修改-添加/删除 -可以在⽬录下创建⽂件/删除⽂件
    x - exec 执⾏权限 - 可以进⼊该⽬录

一个文件/目录 只有文件/目录的所有者和root可以修改文件/目录的权限.

⼀个⽬录如果正常对外开放,⾄少要有读和执⾏权限rx

4. Linux 权限掩码

#2 默认权限

# 考虑到系统安全性, linux在创建普通⽂件时,不应该给予⽂件执⾏权限 -----默认权限 0666  #第一个0 表示特殊权限,第2-4组 - 拥有者/所属组/其他⼈ - 默认权限

# 默认创建⽬录具有执⾏权限 , 默认权限 0777   #第一个0 表示特殊权限,第2-4组 - 拥有者/所属组/其他⼈ - 默认权限

#权限掩码

umask ⼀个⽤户创建⽂件/或者⽬录时 , ⽂件/⽬录的权限需要根据默认权限剪掉umask的权限

#3 修改umask 权限掩码

 

 

 5. Linux 变更拥有者与所属组

chown (change owner)

chown [拥有者⽤户名称] ⽂件/⽬录名称

#修改文件/目录拥有者

-rw-r--r--. 1 root root 0 8月   8 13:56 123.txt
drwxr-xr-x. 2 root root 6 8月   8 13:58 rr
[root@localhost ~]# chown u01 123.txt
[root@localhost ~]# ll
总用量 0
-rw-r--r--. 1 u01  root 0 8月   8 13:56 123.txt     #123.txt文件拥有者已改变
drwxr-xr-x. 2 root root 6 8月   8 13:58 rr

#修改文件/目录  拥有者:所属组 

[root@localhost ~]#  chown u02:u01 rr    #文件拥有者和所属组 中间用":"隔开
[root@localhost ~]# ll
总用量 0
-rw-r--r--. 1 u01 root 0 8月   8 13:56 123.txt
drwxr-xr-x. 2 u02 u01  6 8月   8 13:58 rr            # rr目录的拥有者和所属组已改变

#修改⽂件/⽬录 所属组

[root@localhost ~]# chown :u01 123.txt   
[root@localhost ~]# ll
总用量 0
-rw-r--r--. 1 u01 u01 0 8月   8 13:56 123.txt        #文件拥有者未变,所属组已改变
drwxr-xr-x. 2 u02 u01 6 8月   8 13:58 rr

# -c 在修改时显示变更信息

[root@localhost ~]# chown -c u02 123.txt
changed ownership of "123.txt" from u01 to u02    #变更拥有者过程显示
[root@localhost ~]# ll
总用量 0
-rw-r--r--. 1 u02 u01 0 8月   8 13:56 123.txt
drwxr-xr-x. 2 u02 u01 6 8月   8 13:58 rr

[root@localhost ~]# chown -c  :u02 rr
changed ownership of "rr" from u02:u01 to :u02   #变更所属组过程显示

[root@localhost ~]# chown -c u02:u01 123.txt   
[root@localhost ~]#   
                                             #未变更则过程不显示,也没有过程显示

# -v 持续显示变更信息

[root@localhost ~]# chown -v u02:u01 123.txt 
"123.txt" 的所有者已保留为u02:u01                            #无论是否发送变更都显示变更信息

[root@localhost ~]# chown -v u02:u02 123.txt  
changed ownership of "123.txt" from u02:u01 to u02:u02
  #无论是否发送变更都显示变更信息

# 递归属性修改   -R

[root@localhost ~]# chown root:root rr
[root@localhost ~]# ll
总用量 4
-rw-r--r--. 1 u02  u02  42 8月   8 14:14 123.txt
drwxr-xr-x. 2 root root 81 8月   8 14:16 rr
[root@localhost ~]# ll ./rr
总用量 0
-rw-r--r--. 1 root root 0 8月   8 14:16 a01.mp3
-rw-r--r--. 1 root root 0 8月   8 14:16 a02.mp3
-rw-r--r--. 1 root root 0 8月   8 14:16 a03.mp3
-rw-r--r--. 1 root root 0 8月   8 14:16 a04.mp3
-rw-r--r--. 1 root root 0 8月   8 14:16 a05.mp3
[root@localhost ~]# chown -R u01:u01 rr      #-R 目录拥有者和所属组修改,递归目录下文件也修改
[root@localhost ~]# ll ./rr/
总用量 0
-rw-r--r--. 1 u01 u01 0 8月   8 14:16 a01.mp3    
-rw-r--r--. 1 u01 u01 0 8月   8 14:16 a02.mp3
-rw-r--r--. 1 u01 u01 0 8月   8 14:16 a03.mp3
-rw-r--r--. 1 u01 u01 0 8月   8 14:16 a04.mp3
-rw-r--r--. 1 u01 u01 0 8月   8 14:16 a05.mp3

# chgrp

chgrp [所属组的名称] 文件/目录名称

[root@localhost ~]# chgrp -v u01 123.txt            #用法和chown一样,可以-c, -v, 只是 只能改组
changed group of "123.txt" from u02 to u01
[root@localhost ~]# ll
总用量 4
-rw-r--r--. 1 u02 u01 42 8月   8 14:14 123.txt
drwxr-xr-x. 2 u01 u01 81 8月   8 14:16 rr

[root@localhost ~]# chgrp -v -R root rr                
changed group of "rr/a01.mp3" from u01 to root
changed group of "rr/a02.mp3" from u01 to root
changed group of "rr/a03.mp3" from u01 to root
changed group of "rr/a04.mp3" from u01 to root
changed group of "rr/a05.mp3" from u01 to root
changed group of "rr" from u01 to root 

6. Linux 特殊权限

1.特殊权限  - set-uid

#0
root权限的特殊性

[root@localhost ~]# ll /etc/shadow                            
----------. 1 root root 1561 8月   8 11:12 /etc/shadow    #没有任何权限,但root用户可以cat

[u01@localhost ~]$ cat /etc/shadow         
cat: /etc/shadow: 权限不够                                             #u01用户不能cat

[root@localhost ~]# touch 1212
[root@localhost ~]# echo "123456789098765432" >> 1212
[root@localhost ~]# chmod 000 1212
[root@localhost ~]# cat 1212
123456789098765432

[u01@localhost ~]$ touch 111
[u01@localhost ~]$ echo "123123456789" >> 111
[u01@localhost ~]$ chmod 000 111
[u01@localhost ~]$ cat 111
cat: 111: 权限不够                                 
#root可以看,但u01用户则不可以看

[root@localhost ~]# cat /etc/shadow | grep u01
u01:!!:20308:0:99999:7:::
[root@localhost ~]# echo "666" | passwd --stdin u01
更改用户 u01 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# cat /etc/shadow | grep u01     
u01:$6$S649oe0s$jt/Uz6oLagYc/13Sxg9BHxQm9OyM8wdHDE/17J.D3dQjx/4nM/xwYBrCl8Bllrss8UnN/SWtTTjNN.mj545HD0:20308:0:99999:7:::

#命令是⼀种二进制⽂件(01010101) 未经过操作系统编码-编译的⽂件 (A/B/1) , 可以直接执⾏的⽂件

[root@localhost ~]# ll /usr/bin/passwd 
-rwsr-xr-x. 1 root root 27856 4月   1 2020 /usr/bin/passwd

1.Set - uid

#*  只针对二进制文件有效 , 针对普通⽂件,目录无效
#* 如果二进制文件中如果设置了set uid , 则表示其他人在执行该文件时会临时获取⽂件拥有者权限
#* 如果二进制文件中如果设置了set uid ,在⽂件拥有者的执行权限位置显示(s 具有执⾏权限 /S 无执行权 限)

 2.特殊权限 - set-gid

2. Set - gid

#*针对⽬录⽣效
# 通常会和强制冒险位
#* 如果⽬录⽂件中如果设置了set gid ,在⽂件所属组的执⾏权限位置显示(s 具有执⾏权限 /S ⽆执⾏权 限)

[root@localhost ~]# cd /tmp/
[root@localhost tmp]# ll
总用量 4
drwxr-xr-x. 2 root root  6 8月   8 11:18 111
[root@localhost tmp]# chmod g+s 111
[root@localhost tmp]# ll
总用量 4
drwxr-sr-x. 2 root root  6 8月   8 11:18 111

特殊权限 - set-sTicky

 3 . set - sTicky 强制冒险位(粘滞位)

# 通常会和 Set - gid 联合使⽤
# 如果⼀个⽬录被设置了强制冒险位,该⽬录下的⽂件只有⽂件拥有者(和root)可以删除,其他⽤户⽆法删除
#* 如果⽬录⽂件中如果设置了set - sTicky ,在⽂件其他⼈的执⾏权限位置显示(t 具有执⾏权限 /T ⽆执 ⾏权限)

[root@localhost tmp]# ll
drwxr-xr-x. 2 root root 48 8月  14 18:57 r
[root@localhost r]# ll
-rw-r--r--. 1 root root 0 8月  14 18:57 test01
-rw-r--r--. 1 root root 0 8月  14 18:57 test02
-rw-r--r--. 1 root root 0 8月  14 18:57 test03

[u01@localhost r]$ touch u_test
touch: 无法创建"u_test": 权限不够

[root@localhost tmp]# chmod o+w r
drwxrwsrwx. 2 root root 48 8月  14 19:03 r

[u01@localhost r]$ touch u_test
-rw-r--r--. 1 root root 0 8月  14 18:57 test01
-rw-r--r--. 1 root root 0 8月  14 18:57 test02
-rw-r--r--. 1 root root 0 8月  14 18:57 test03
-rw-rw-r--. 1 u01  root 0 8月  14 19:01 u_test

[u02@localhost r]$ rm -rf u_test                            #u01创建的文件被u02 删除了
-rw-r--r--. 1 root root 0 8月  14 18:57 test01
-rw-r--r--. 1 root root 0 8月  14 18:57 test02
-rw-r--r--. 1 root root 0 8月  14 18:57 test03

[u01@localhost r]$ touch u_test02                #u01重新创建文件
-rw-r--r--. 1 root root 0 8月  14 18:57 test01
-rw-r--r--. 1 root root 0 8月  14 18:57 test02
-rw-r--r--. 1 root root 0 8月  14 18:57 test03
-rw-rw-r--. 1 u01  root 0 8月  14 19:11 u_test02

[root@localhost tmp]# chmod o+t r                 #root设置set - sTicky
drwxrwsrwt. 2 root root 64 8月  14 19:11 r      #小写t

[u02@localhost r]$ rm -rf u_test02 
rm: 无法删除"u_test02": 不允许的操作              #u02 删除失败(无权限)

[root@localhost tmp]# chmod o-x r                 #去除x权限 ,不给o x权限其他用户进不来
drwxrwsrwT. 2 root root 64 8月  14 19:11 r      #大写T

[u01@localhost tmp]$ cd ./r/
bash: cd: ./r/: 权限不够

4. 汇总

[root@localhost r]# chmod 0777 test01
-rwxrwxrwx. 1 root root 0 8月  14 18:57 test01
-rw-r--r--. 1 root root 0 8月  14 18:57 test02
-rw-r--r--. 1 root root 0 8月  14 18:57 test03

[root@localhost r]# chmod 1777 test02
-rwxrwxrwx. 1 root root 0 8月  14 18:57 test01
-rwxrwxrwt. 1 root root 0 8月  14 18:57 test02
-rw-r--r--. 1 root root 0 8月  14 18:57 test03

[root@localhost r]# chmod 6777 test03
-rwxrwxrwx. 1 root root 0 8月  14 18:57 test01
-rwxrwxrwt. 1 root root 0 8月  14 18:57 test02
-rwsrwsrwx. 1 root root 0 8月  14 18:57 test03

#一般不会出现  7777,第一个7是特殊权限,set uid 一般针对文件,set gid 和set sTicky针对目录

7. Linux 隐藏权限

#chattr (change attribute)

添加隐藏属性 - 权限     

 [root@localhost r]# touch test
[root@localhost r]# chmod 0000 test          #所有权限为0,但此时仍可被删除
----------. 1 root root 0 8月  14 20:03 test

[root@localhost r]# chattr +i test        #添加隐藏权限(无法更改或删除的权限),此时不能被删除
[root@localhost r]# rm -rf test
rm: 无法删除"test": 不允许的操作

[root@localhost r]# touch rxx
-rw-r--r--. 1 root root 0 8月  14 20:09 rxx

[root@localhost r]# chattr +i rxx                     #添加隐藏权限
[root@localhost r]# ll                                      #通过ll无法查看到隐藏权限
-rw-r--r--. 1 root root 0 8月  14 20:09 rxx

[root@localhost r]# lsattr                               #需使用lsattr命令查看
----i----------- ./rxx

[root@localhost r]# echo "12345" >> rxx
-bash: rxx: 权限不够

[root@localhost r]# chattr -i rxx                #取消 i 隐藏权限
[root@localhost r]# chattr =  rxx              #清空所有隐藏权限(权限有多种)

[root@localhost r]# chattr +a rxx
[root@localhost r]# lsattr
-----a---------- ./rxx
[root@localhost r]# rm -rf rxx                      #+a隐藏权限,不能被删除,但可以写入
rm: 无法删除"rxx": 不允许的操作
[root@localhost r]# echo "12345" >> rxx    #+a隐藏权限,不能被删除,但可以追加数据
[root@localhost r]# cat rxx
12345

8. 权限委派

switch user do - > sudo

[u01@localhost clh]$ sudo cat /etc/shadow

我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:

    #1) 尊重别人的隐私。                            #1)  Respect the privacy of others.
    #2) 输入前要先考虑(后果和风险)。        #2) Think before you type.
    #3) 权力越大,责任越大。                     #3) With great power comes great responsibility.

[sudo] u01 的密码:
u01 不在 sudoers 文件中。此事将被报告。#u01 is not in the sudoers file. This incident will be reported.
# sudoers file  为   /etc/sudoers文件
[root@localhost clh]# usermod u01 -G wheel       #将u01添加wheel为附属组,此时需退出shell/重新进入,或newgrp 临时更改所在组信息,或者# usermod tom -g wheel -G tom #更改主组为wheel
[u01@localhost clh]$ id u01
uid=1003(u01) gid=1004(u01) 组=1004(u01),10(wheel)   

### sudo ---- 密码当前⽤户密码
### su ---- root账户的密码

 

[u01@localhost clh]$ gpasswd -d u01 wheel
gpasswd:没有权限。
[u01@localhost clh]$ sudo gpasswd -d u01 wheel
[sudo] u01 的密码:
正在将用户“u01”从“wheel”组中删除
[u01@localhost clh]$ id u01
uid=1003(u01) gid=1004(u01) 组=1004(u01)
[u01@localhost clh]$ 

#sudoers file 文件编辑

[root@localhost clh]# vim /etc/sudoers   #退出保存用wq!
或者[root@localhost clh]# visudo           ##wq
#经过编辑更改sudoers文件后 用户u01 具备sudo权限。
 [root@localhost clh]# su u01
[u01@localhost clh]$ sudo cat /etc/shadow
[sudo] u01 的密码:


#添加u01-np 免密组         #%表示组,这里可以不加%,表示用户可以免密
[root@localhost clh]# groupadd u01_np && usermod u01 -G u01_np  #&&表示同时操作
[u01@localhost clh]$ sudo cat /etc/shadow    # 无需输密码,直接进入免密sudo

### sudo ---- 密码当前⽤户密码
### su ---- root账户的密码

#运维管理员加⼊到wheel
#单独创建一个新的组 group  免密码登录组- 在该组中添加⽤户

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值