权限管理

权限管理

权限概述

# 报错
Permission denied
没有权限


# 权限和用户的关系
rwx            r-x          r-x
属主权限        属组权限       其他用户权限

r:读权限,read,4
w:写权限,write,2
x:执行权限,exec,1
-:没有权限,0

# 替换命令
tr 'rwx-' '4210'
[root@localhost ~]# ll|tr 'rwx-' '4210'
total 0
d421401401. 2 4oot 4oot 6 Ap4 11 10:19 lza

# 使用命令,获取文件的数字权限
[root@localhost ~]# stat lza
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
[root@localhost ~]# stat lza|awk -F '[(/]' 'NR==4{print $2}' 
0755

# 正规取出文件数字权限的命令
[root@localhost ~]# stat -c %a lza 
755


# 替换文件内容的方法
tr:按字符替换
sed:按整体替换:sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/sysconfig/selinux
vim:按整体替换   :%s#SELINUX=enforcing#SELINUX=disabled#g


# Linux中的单引号和双引号含义:
bash:
 -有变量的情况下,有区别
  -双引号解析变量
  -单引号所见即所得
  -纯字符串的情况下,没有区别

awk:
 -有变量的情况下,有区别
  -单引号解析变量
  -双引号所见即所得

awk-F'指定分隔符''{print $N}'
awk-F'[分隔符1分隔符2]''{print $N}'

授权命令

chmod:change mode

# 语法
chmod 权限 文件名

# 选项
-R:递归授权

# 授权方式
1.)数字方式
# 例:
[root@localhost ~]# chmod 777 lza
[root@localhost ~]# ll 
total 0
drwxrwxrwx. 2 root root 6 Apr 11 10:19 lza
[root@localhost ~]# stat -c %a lza
777

2.)ugo方式
u:user用户权限
g:group用户组权限
o:other其他用户权限
a:all所有权限位
+:加上后面指定的权限
-:减去后面指定的权限
=:等于后面指定的权限

# 例:
[root@localhost ~]# touch lza.txt
[root@localhost ~]# ll 
-rw-r--r--. 1 root root 0 Apr 11 14:44 lza.txt
[root@localhost ~]# chmod 'u-w,g-r,o-r' lza.txt 
[root@localhost ~]# ll lza.txt 
-r--------. 1 root root 0 Apr 11 14:44 lza.txt
[root@localhost ~]# chmod 'u=rx,g=r,o=r' lza.txt 
-r-xr--r--. 1 root root 0 Apr 11 14:44 lza.txt

# a+x 可以表示 +x。表示在所有权限位上加‘x’权限
[root@localhost ~]# chmod +x lza.txt 
[root@localhost ~]# ll lza.txt 
-r-x--x--x. 1 root root 0 Apr 11 14:44 lza.txt

权限对文件的影响

r:文件只能读
w:任何编辑命令都可以写入内容,但是vim读取不出来,会覆盖原文件内容
x:对于普通用户来说,还是什么都做不了,必须配合r权限才可以执行

rw:可读,可写,正常使用vim编辑,但是不能执行
rx:可读,可执行,但不能编辑
wx:可写,不可读,不能执行
rwx:可读,可写,可执行

权限对目录的影响

# 目录在只有单权限的情况下,什么都做不了
r:能看见目录下的文件,但看不见文件的详细属性
w:什么都做不了
x:什么都做不了

rw:不能查看,不能复制,不能移动,不能删除
rx:才能查看目录下的文件,不能复制,不能移动,不能删除
wx:读取不了目录里的文件,但是可以创建文件,创建目录,删除文件,删除目录。不能用rm -rf “./*”代替
rwx:可以任何操作,可以创建,删除,移动,复制文件或目录

修改文件属主和属组

chown:change owner

# 语法
chown [选项]... 属主.属组 文件名
chown [选项]... 属主:属组 文件名

# 例:
[root@localhost ~]# ll lza.txt 
-r-xr--r--. 1 root root 0 Apr 11 14:44 lza.txt
[root@localhost ~]# chown lza.lza lza.txt
[root@localhost ~]# ll lza.txt 
-r-xr--r--. 1 lza lza 0 Apr 11 14:44 lza.txt

# 只修改属主
[root@localhost ~]# chown root lza.txt 
[root@localhost ~]# ll lza.txt 
-r-xr--r--. 1 root lza 0 Apr 11 14:44 lza.txt

# 只修改属组
root@localhost ~]# chown .root lza.txt 
[root@localhost ~]# ll lza.txt 
-r-xr--r--. 1 root root 0 Apr 11 14:44 lza.txt

# 选项
-R:递归修改文件属组和属主
[root@localhost ~]# chown -R lza.lza /opt/

特殊权限

特殊权限介绍

# 基本权限
r:读
w:写
x:执行

# 特殊权限
[root@localhost ~]# ll /bin/passwd 
-rwsr-xr-x. 1 root root 27856 Apr  1  2020 /bin/passwd

[root@localhost ~]# ll /bin/write 
-rwxr-sr-x. 1 root tty 19544 Oct  1  2020 /bin/write

[root@localhost ~]# ll /tmp/ -d
drwxrwxrwt. 10 root root 195 Apr 12 11:46 /tmp/

特殊权限的类型

1).setUID

# 1.普通用户可不可以修改密码
可以,修改自己的密码,但密码要复杂

# 2./etc/shadow文件的作用
存储用户密码的文件

# 3./etc/shadow文件的权限
[root@localhost ~]# ll /etc/shadow
----------. 1 root root 685 Apr 11 15:29 /etc/shadow

# 4.普通用户,是否可以修改/etc/shadow文件
不可以,/etc/shadow文件,对于普通用户没有任何权限,所以不能读取,也不能写入内容

# 5.那么普通用户,为什么可以修改密码
1)使用了passwd这个命令
2)passwd命令在属主权限位上,原本是x权限,变成了s权限
3)s权限在属主权限位,又叫setUID权限,sUID
4)作用:普通用户在使用有sUID权限的文件或命令时,会以该文件的属主身份去执行该命令

setUID特性

# 1.原本属主位上如果有x权限,则setUID为 s
# 2.原本属主位上如果没有x权限,则setUID为 S
# 3.授权方式
 - chmod u+s 文件名
 - chmod 4xxx 文件名
# 4.setUID权限的数字是4000
# 5.普通用户在使用有sUID权限的文件或命令时,会以该文件的属主身份去执行该命令

2)setGID

[root@localhost ~]# ll /bin/write 
-rwxr-sr-x. 1 root tty 19544 Oct  1  2020 /bin/write

# 创建一个目录
[root@localhost ~]# mkdir /tmp/lza
# 赋予sgid权限
[root@localhost ~]# chmod g+s /tmp/lza
# 查看目录权限
[root@localhost ~]# ll /tmp/lza/ -d
drwxr-sr-x. 2 root root 6 Apr 12 18:03 /tmp/lza/
# 使用root用户创建用户
[root@localhost ~]# touch /tmp/lza/lza.txt
# 查看文件
[root@localhost ~]# ll /tmp/lza/lza.txt 
-rw-r--r--. 1 root root 0 Apr 12 18:08 /tmp/lza/lza.txt
# 切换用户
[root@localhost ~]# su - lizian
[lizian@localhost ~]$ 
# 创建文件
[lizian@localhost ~]$ touch /tmp/lza/xxx
touch: cannot touch ‘/tmp/lza/xxx’: Permission denied
# 赋予目录777权限
[root@localhost ~]# chmod 777 /tmp/lza/
# 查看目录权限
[root@localhost ~]# ll -d /tmp/lza/
drwxrwsrwx. 2 root root 21 Apr 12 18:15 /tmp/lza/
# 普通用户创建文件
[lizian@localhost ~]$ touch /tmp/lza/lizian.txt
# 查看权限
[lizian@localhost ~]$ ll /tmp/lza/lizian.txt 
-rw-rw-r--. 1 lizian root 0 Apr 12 18:22 /tmp/lza/lizian.txt

setGID特性

# 1.原本属组位上如果有x权限,则setGID为 s
# 2.原本属组位上如果没有x权限,则setGID为 S
# 3.授权方式
 - chmod g+s 文件名
 - chmod 2xxx 文件名
# 4.setGID权限的数字是2000

# 主要应用场景:文件共享

3)SBIT

[root@localhost ~]# ll /tmp/ -d
drwxrwxrwt. 10 root root 195 Apr 12 11:46 /tmp/

# 作用
临时文件存储目录

粘滞位权限作用特性

# 1.带有粘滞位权限的目录下的所有文件,谁都可以读,写
# 2.带有粘滞位权限的目录下的文件只有属主能删除自己的文件,其他用户无法删除
# 3.带有粘滞位权限的目录,只有root能删除
# 4.授权方式
 - chmod o+t 文件名
 - chmod 1xxx 文件名
# 5.SBIT权限的数字是1000
# 6.其他用户权限位上有x权限 t
                 没有x权限 T

凌驾于root之上的权限

# 设置这个权限
chattr [选项]... 文件名
i:只能查看文件内容,无法编辑
a:只能查看和追加文件内容,无法修改或覆盖原文件内容

+:设置,增加该权限
-:取消该权限

# 查看这个权限
lsattr 文件名

umask

# 作用
通过umask可以计算出,文件或目录默认创建权限

# 查看当前系统默认的umask
[root@localhost ~]# umask
0022

# 修改系统默认的umask
[root@localhost ~]# umask 025


# 如果当前登录用户的UID大于199         用户的组名  =  用户的用户名
if [ $UID-gt199 ]       &&      [ "`/usr/bin/id -gn`"="`/usr/bin/id -un`" ];
then    
      umask 002
else   
      umask 022

# 计算方法
目录使用777 - umask
文件使用666 - umask

如果umask的位数上有奇数
文件使用666 - umask 在奇数位上加1

思维导图

posted @ 2022-10-08 18:58  安(za)  阅读(153)  评论(0)    收藏  举报