权限管理
目录
权限管理
权限概述
# 报错
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

浙公网安备 33010602011771号