linux专题(四)用户身份与文件权限

简介

本文主要用于学习linux中的文件权限和用户身份,本文的目录结构与参考目录大致相同,但是会包含一些实践

主要参考 《Linux就该这么学》

及命令大全https://www.linuxcool.com/

用户身份和能力

在Linux系统中,UID就相当于身份证号码一样具有唯一性,因此可通过用户的UID值来判断用户身份

  • 管理员UID为0:系统的管理员用户。
  • 系统用户UID为1~999: Linux系统为了避免因某个服务程序出现漏洞而被黑客提权至整台服务器,默认服务程序会有独立的系统用户负责运行,进而有效控制被破坏范围。
  • 普通用户UID从1000开始:是由管理员创建的用于日常工作的用户。

为了方便管理,引入了用户组,创建一个用户默认会创建于其同名的基本用户组,一个用户只会有一个基本用户组,如果将该用户纳入到其他用户组,则其他用户组被称为扩展用户组

id

格式: id 用户名

简介: 显示用户详细信息

[root@zhao56 etc]# id root
uid=0(root) gid=0(root) groups=0(root)

useradd

格式: useradd [参数] 用户名

简介: 创建新的用户账户

useradd命令中的参数以及作用

参数 作用
-d 指定用户的家目录(默认为/home/username)
-e 账户的到期时间,格式为YYYY-MM-DD.
-u 指定该用户的默认UID
-g 指定一个初始的用户基本组(必须已存在)
-G 指定一个或多个扩展用户组
-N 不创建与用户同名的基本用户组
-s 指定该用户的默认Shell解释器
[root@zhao56 etc]# useradd zhao56-1
[root@zhao56 etc]# id zhao56-1
uid=1002(zhao56-1) gid=1002(zhao56-1) groups=1002(zhao56-1)
#/sbin/nologin是终端解释器的一员,用户被设置成nologin则用户不能登录到系统中
[root@zhao56 etc]# useradd -d /home/linux -u 8888 -s /sbin/nologin zhao56-nologin
[root@zhao56 etc]# id zhao56-nologin
uid=8888(zhao56-nologin) gid=8888(zhao56-nologin) groups=8888(zhao56-nologin)
[root@zhao56 etc]# su zhao56-nologin
This account is currently not available.

groupadd

格式: groupadd [参数] 群组名

简介: 创建新的用户组

[root@zhao56 etc]# groupadd zhao56
groupadd: group 'zhao56' already exists
[root@zhao56 etc]# groupadd zhao56-1
groupadd: group 'zhao56-1' already exists
[root@zhao56 etc]# groupadd zhao56-common

usermod

格式: usermod [参数] 用户名

简介: 修改用户的属性

用户信息保存在/etc/passwd文件中,可以修改文件,也可以修改已创建的用户信息

usermod命令中的参数以及作用:

参数 作用
-c 填写用户账户的备注信息
-d -m 参数-m与参数-d连用,可重新指定用户的家目录并自动把旧的数据转移过去
-e 账户的到期时间,格式为YYYY-MM-DD
-g 变更所属用户组
-G 变更扩展用户组
-L 锁定用户禁止其登录系统
-U 解锁用户,允许其登录系统
-s 变更默认终端
-u 修改用户的UID

开始尝试例子

[root@zhao56 ~]# id
uid=0(root) gid=0(root) groups=0(root)
[root@zhao56 ~]# id zhao56-1
uid=1002(zhao56-1) gid=1002(zhao56-1) groups=1002(zhao56-1)
#将zhao56-1加入到root用户组中
[root@zhao56 ~]# usermod -G root zhao56-1
[root@zhao56 ~]# id zhao56-1
uid=1002(zhao56-1) gid=1002(zhao56-1) groups=1002(zhao56-1),0(root)
#修改zhao56-1的UID
[root@zhao56 ~]# usermod -u 9999 zhao56-1
[root@zhao56 ~]# id zhao56-1
uid=9999(zhao56-1) gid=1002(zhao56-1) groups=1002(zhao56-1),0(root)
#切换终端,让其不能登陆
[root@zhao56 ~]# usermod -s /sbin/nologin zhao56-1
[root@zhao56 ~]# su zhao56-1
This account is currently not available.

passwd

格式: passwd [参数] 用户名

简介: 修改用户的密码、过期时间等信息 普通用户只能使用passwd命令修改自己的系统密码,而root管理员则有权限修改其他所有人的密码

passwd命令中的参数以及作用:

参数 作用
-l 锁定用户,禁止其登录
-u 解除锁定,允许用户登录
--stdin 允许通过标准输入修改用户密码,如echo "NewPassWord" | passwd --stdin Username
-d 使该用户可用空密码登录系统
-e 强制用户在下次登录时修改密码
-S 显示用户的密码是否被锁定,以及密码所采用的加密算法名称
#修改root密码
[root@zhao56 ~]# passwd
Changing password for user root.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.
#修改zhao56的密码
[root@zhao56 ~]# passwd zhao56
Changing password for user zhao56.
New password: 
BAD PASSWORD: The password contains the user name in some form
Retype new password: 
passwd: all authentication tokens updated successfully.
#修改zhao56-1密码
[root@zhao56 ~]# passwd zhao56-1
Changing password for user zhao56-1.
New password: 
BAD PASSWORD: The password contains the user name in some form
Retype new password: 
passwd: all authentication tokens updated successfully.
#切换用户
[root@zhao56 ~]# su zhao56
[zhao56@zhao56 root]$ su zhao56-1
Password: 
This account is currently not available.
#修改用户默认终端
[zhao56@zhao56 root]$ su root
Password: 
[root@zhao56 ~]# usermod -s /bin/bash zhao56-1
[root@zhao56 ~]# su zhao56
[zhao56@zhao56 root]$ su zhao56-1
Password: 

锁定用户, 显示用户的密码是否被锁定,以及密码所采用的加密算法名称

[root@zhao56 ~]# passwd -l zhao56-1
Locking password for user zhao56-1.
passwd: Success
[root@zhao56 ~]# passwd -S zhao56-1
zhao56-1 LK 2021-07-15 0 99999 7 -1 (Password locked.)
[zhao56@zhao56 root]$ su zhao56-1
Password: 
su: Authentication failure

解锁

#给本身解锁不能解,并且不能切换用户,
[zhao56@zhao56 root]$ passwd -u zhao56-1
Only root can do that.
[zhao56@zhao56 root]$ su root
Password: 
su: Authentication failure
#重新开一个终端登录root用户
[root@zhao56 ~]# passwd -u zhao56-1
Unlocking password for user zhao56-1.
passwd: Success
[root@zhao56 ~]# passwd -Szhao56-1
passwd: bad argument -Szhao56-1: unknown option
[root@zhao56 ~]# passwd -S zhao56-1
zhao56-1 PS 2021-07-15 0 99999 7 -1 (Password set, SHA512 crypt.)

#在原来终端上切换用户,可以了
[zhao56@zhao56 root]$ su root
Password: 

userdel

格式: userdel [参数] 用户名

简介: 删除已有的用户账户 ,删除用户时该用户的home目录会被保留

userdel命令中的参数以及作用:

参数 作用
-f 强制删除用户
-r 同时删除用户及用户家目录
#查看用户
[root@zhao56 ~]# cat /etc/passwd
zhao56:x:1000:1000::/home/zhao56:/bin/bash
zhangsan:x:1001:1001::/home/zhangsan:/bin/bash
zhao56-1:x:9999:1002::/home/zhao56-1:/bin/bash
zhao56-nologin:x:8888:8888::/home/linux:/sbin/nologin
#删除用户zhangsan
[root@zhao56 home]# userdel zhangsan
[root@zhao56 home]# id zhangsan
id: zhangsan: no such user
#切换目录查看zhangsan的home目录,并删除张三的目录
[root@zhao56 home]# cd /home/
[root@zhao56 home]# ls
linux  test  test.java  zhangsan  zhao56  zhao56-1
[root@zhao56 home]# rm -rf zhangsan/
[root@zhao56 home]# ls
linux  test  test.java  zhao56  zhao56-1

文件权限与归属

在Linux中每个文件都有归属的所有者所有组,并且规定了所有者、所有组和其他人对文件所拥有的执行等权限

  • 对于一般文件:可读表示读取文件的内容,可写表示能够编辑、新增、修改、删除,可执行表示运行一个脚本程序
  • 对于目录文件:可读表示读取目录内的文件列表,可写表示能够在目录内新增、删除、重命名文件、可执行表示能够进入到该目录

如下图 读写执行权限对于文件与目录可执行命令的区别

image

文件的读、写、执行权限字符表示及数字表示如下图,读为4、写为2、执行为1

image

文件权限的数字法是为了简化权限的表示方式

文件权限74+2+1 表示可读r、可写w、可执行x

文件权限764 :表示 rwxrw-r-- ,所有者可读可写可执行,所属组可读可写,其他用户可读,其中-代表占位符,表示没有权限,数字表示为0也是就r--表示400

练习如下

#查看用户的home目录
[root@zhao56 home]# ls -l
total 20
#访问权限 所有者          所属组
#最前方d/-表示文件类型 普通文件(-)、目录文件(d)、链接文件(l)、管道文件(p)、块设备文件(b)以及字符设备文件(c)
drwx------ 2 zhao56-nologin zhao56-nologin 4096 Jul 14 17:57 linux
drwxr-xr-x 2 root           root           4096 Jul  1 15:36 test
-rw-r--r-- 1 root           root            739 Jun 29 14:42 test.java
drwx------ 2 zhao56         zhao56         4096 Jul 14 18:04 zhao56
drwx------ 2 zhao56-1       zhao56-1       4096 Jul 14 18:04 zhao56-1
#从上到下的权限转换为数字为
#linux 		rwx------	700
#test  		rwxr-xr-x	755
#test.java	rw-r--r--	644
#zhao56		rwx------	700
#zhao56-1	rwx------	700

文件的特殊权限

在复杂多变的环境中,单纯的文件权限rwx无法满足对安全的灵活性的需求,所以有了 SUIDSGIDSBIT的特殊权限位.

SUID

SUID是一种对二进制程序进行设置的特殊权限,能够让二进制程序的执行者临时拥有属主的权限(仅对拥有执行权限的二进制程序有效)

如下

所有者的权限由rwx变成了rws,其中x改变成s就意味着该文件被赋予了SUID权限。如果原本的权限是rw-呢?如果原先权限位上没有x执行权限,那么被赋予特殊权限后将变成大写的S

查看结果/bin/passwd红色,预警小心这个权限

#用户密码保存在/etc/shadow
[root@zhao56 home]# ls -l /etc/shadow
---------- 1 root root 959 Jul 15 11:00 /etc/shadow
[root@zhao56 home]# ls -l /bin/passwd 
-rwsr-xr-x. 1 root root 27856 Apr  1  2020 /bin/passwd

注: 一旦某个命令文件被设置上了SUID权限,那么就意味着凡是执行的人都可以临时获取到更高的权限,千万不要设置到vim、cat、rm等命令上面!!!

SGID

有两种应用场景,当对二进制程序进行设置时,能够让执行者临时获取到文件所有组的权限;而对目录进行设置时,则是让目录内新创建的文件自动继承该目录原有用户组的名称

如第一种场景如下

#locate命令的权限rwx--s--x
[zhao56@zhao56 dev]$ ls -l /usr/bin/locate 
-rwx--s--x 1 root slocate 40520 Apr 11  2018 /usr/bin/locate
#find命令的权限rwxr-xr-x
[zhao56@zhao56 dev]$ ls -l /usr/bin/find
-rwxr-xr-x. 1 root root 199304 Oct 31  2018 /usr/bin/find
#/etc/shadow 文件的权限
[root@zhao56 home]# ls -l /etc/shadow
---------- 1 root root 959 Jul 15 11:00 /etc/shadow
#查找shadow文件
[zhao56@zhao56 dev]$ locate shadow
/etc/gshadow
/etc/gshadow-
/etc/shadow
/etc/shadow-
#查找shadow文件
[zhao56@zhao56 /]$ find shadow
find: ‘shadow’: No such file or directory

总结:有上图可知,/etc/shadow这个文件无任何权限,但是locate可以找到这个文件,find找不到这个文件

对比一下findlocate的权限发现locate的权限rwx--s--x所属组的位置出现了s,这代表着locate这个命令文件上增加了 SGID特殊权限位 ,也就是说用户在执行这个命令的时候会临时获取对应文件的所属组root的权限

场景二:

#创建temp、tempsgid文件夹
[root@zhao56 test]# mkdir temp
[root@zhao56 test]# mkdir tempsgid
[root@zhao56 test]# ls -l
total 12
drwxr-xr-x 2 root root 4096 Jul 15 15:57 temp
drwxr-xr-x 2 root root 4096 Jul 15 15:57 tempsgid
-rwxr--r-- 1 root root  237 Jul 14 15:52 zhao56demo.sh
#给两个文件夹授予全部权限
[root@zhao56 test]# chmod -R 777 temp
[root@zhao56 test]# chmod -R 777 tempsgid/
#给tempsgid文件夹特殊权限
[root@zhao56 test]# chmod -R g+s tempsgid/
[zhao56@zhao56 test]$ ls -l
total 12
drwxrwxrwx 3 root root 4096 Jul 15 16:02 temp
drwxrwsrwx 3 root root 4096 Jul 15 16:02 tempsgid
-rwxr--r-- 1 root root  237 Jul 14 15:52 zhao56demo.sh
#切换用户
[root@zhao56 test]# su zhao56
#temp中创建文件夹
[zhao56@zhao56 test]$ cd temp
[zhao56@zhao56 temp]$ mkdir zhao56
#所属组为本身用户基本用户组
[zhao56@zhao56 temp]$ ls -l 
total 4
drwxrwxr-x 2 zhao56 zhao56 4096 Jul 15 16:02 zhao56
[zhao56@zhao56 temp]$ cd ..
#tempsgid创建文件夹
[zhao56@zhao56 test]$ cd tempsgid/
[zhao56@zhao56 tempsgid]$ mkdir zhao56
#所属组为tempsgid的所属组
[zhao56@zhao56 tempsgid]$ ls -l
total 4
drwxrwsr-x 2 zhao56 root 4096 Jul 15 16:02 zhao56

chmod

格式: chmod [参数] 文件名

简介: 设置文件的一般权限及特殊权限 , 针对目录进行操作时需要加上大写参数-R来表示递归操作

[root@zhao56 test]# ls -l
total 12
drwxrwxrwx 3 root root 4096 Jul 15 16:02 temp
drwxrwsrwx 3 root root 4096 Jul 15 16:02 tempsgid
-rwxr--r-- 1 root root  237 Jul 14 15:52 zhao56demo.sh
[root@zhao56 test]# chmod 777 zhao56demo.sh 
[root@zhao56 test]# ls -l
total 12
drwxrwxrwx 3 root root 4096 Jul 15 16:02 temp
drwxrwsrwx 3 root root 4096 Jul 15 16:02 tempsgid
-rwxrwxrwx 1 root root  237 Jul 14 15:52 zhao56demo.sh

chown

格式: chown 所有者:所有组 文件名

简介: 设置文件的所有者和所有组 , 针对目录进行操作时需要加上大写参数-R来表示递归操作

[root@zhao56 test]# chown zhao56:zhao56 zhao56demo.sh 
[root@zhao56 test]# ls -l
total 12
drwxrwxrwx 3 root   root   4096 Jul 15 16:02 temp
drwxrwsrwx 3 root   root   4096 Jul 15 16:02 tempsgid
-rwxrwxrwx 1 zhao56 zhao56  237 Jul 14 15:52 zhao56demo.sh

SBIT

可确保用户只能删除自己的文件,而不能删除其他用户的文件 , 换句话说,当对某个目录设置了SBIT权限后,那么该目录中的文件就只能被其所有者执行删除操作了。

当设置SBIT权限后,文件的其他人权限部分的x/-就会被提低成为t/T

[root@zhao56 test]# cd temp
[root@zhao56 temp]# ll
total 8
drwxr-xr-x 2 root root 4096 Jul 15 16:30 zhao56
drwxr-xr-x 2 root root 4096 Jul 15 16:30 zhao56root
[root@zhao56 temp]# chmod 777 zhao56 zhao56root
[root@zhao56 temp]# ll
total 8
drwxrwxrwx 2 root root 4096 Jul 15 16:30 zhao56
drwxrwxrwx 2 root root 4096 Jul 15 16:30 zhao56root
[root@zhao56 temp]# chmod o+t zhao56 zhao56root
[root@zhao56 temp]# ll
total 8
drwxrwxrwt 2 root root 4096 Jul 15 16:30 zhao56
drwxrwxrwt 2 root root 4096 Jul 15 16:30 zhao56root
[root@zhao56 temp]# chown zhao56:zhao56 zhao56
[root@zhao56 temp]# ll
total 8
drwxrwxrwt 2 zhao56 zhao56 4096 Jul 15 16:30 zhao56
drwxrwxrwt 2 root   root   4096 Jul 15 16:30 zhao56root
#切换用户
[root@zhao56 temp]# su zhao56
[zhao56@zhao56 temp]$ ll
total 8
drwxrwxrwt 2 zhao56 zhao56 4096 Jul 15 16:30 zhao56
drwxrwxrwt 2 root   root   4096 Jul 15 16:30 zhao56root
[zhao56@zhao56 temp]$ rm -rf zhao56
[zhao56@zhao56 temp]$ ll
total 4
drwxrwxrwt 2 root root 4096 Jul 15 16:30 zhao56root
[zhao56@zhao56 temp]$ rm -rf zhao56root/
rm: cannot remove ‘zhao56root/’: Operation not permitted

总结

SUID、SGID、SBIT特殊权限的设置参数 :

参数 作用
u+s 设置SUID权限
u-s 取消SUID权限
g+s 设置SGID权限
g-s 取消SGID权限
o+t 设置SBIT权限
o-t 取消SBIT权限

授权结合数字

SUID、SGID与SBIT也有对应的数字法表示,分别即是4、2、1 ,也就是说满权限应该是7777,第一个数字代表特殊权限位,由特殊权限+一般权限构成

rwxr-xr-t :去除最后一位SBIT数字为755,添加上SBIT结果为1755

rwsrwSr-- 去除SUID的s和SGID中的S数字为764,添加上SUID和SGID数字为6764

文件的隐藏属性

Linux系统中的文件除了具备一般权限和特殊权限之外,还有一种隐藏权限,即被隐藏起来的权限

专用的设置命令是chattr,专用的查看命令是lsattr。

chattr

格式: chattr [参数] 文件名称

简介: 设置文件的隐藏权限 想要把某个隐藏功能添加到文件上,则需要在命令后面追加“+参数”,如果想要把某个隐藏功能移出文件,则需要追加“-参数”

chattr命令中的参数及其作用

参数 作用
i 无法对文件进行修改;若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除文件
a 仅允许补充(追加)内容,无法覆盖/删除内容(Append Only)
S 文件内容在变更后立即同步到硬盘(sync)
s 彻底从硬盘中删除,不可恢复(用0填充原文件所在硬盘区域)
A 不再修改这个文件或目录的最后访问时间(atime)
b 不再修改文件或目录的存取时间
D 检查压缩文件中的错误
d 使用dump命令备份时忽略本文件/目录
c 默认将文件或目录进行压缩
u 当删除该文件后依然保留其在硬盘中的数据,方便日后恢复
t 让文件系统支持尾部合并(tail-merging)
x 可以直接访问压缩文件中的内容
#创建文件
[root@zhao56 temp]# echo "for test" >test
[root@zhao56 temp]# ll
total 8
-rw-r--r-- 1 root root    9 Jul 15 17:23 test
drwxrwxrwt 2 root root 4096 Jul 15 16:30 zhao56root
#删除
[root@zhao56 temp]# rm test 
rm: remove regular file ‘test’? y
[root@zhao56 temp]# echo "for test" >test
#设置为不允许删除与覆盖
[root@zhao56 temp]# chattr +a test 
[root@zhao56 temp]# ll
total 8
-rw-r--r-- 1 root root    9 Jul 15 17:24 test
drwxrwxrwt 2 root root 4096 Jul 15 16:30 zhao56root
[root@zhao56 temp]# rm test 
rm: remove regular file ‘test’? y
rm: cannot remove ‘test’: Operation not permitted
#追加内容
[root@zhao56 temp]# echo "ahaha" >> test 
[root@zhao56 temp]# cat test 
for test
ahaha
#覆盖内容
[root@zhao56 temp]# echo "ahaha111" > test 
bash: test: Operation not permitted

lsattr

格式: lsattr [参数] 文件名称

简介: 查看文件的隐藏权限

[root@zhao56 temp]# ll test
-rw-r--r-- 1 root root 15 Jul 15 17:25 test
[root@zhao56 temp]# lsattr test 
-----a-------e-- test

文件访问控制列表

对某个指定的用户进行单独的权限控制,就需要用到文件的访问控制列表(FACL,File Access Control Lists)

通俗来讲,基于普通文件或目录设置ACL访问控制其实就是针对指定的用户或用户组设置文件或目录的操作权限,更加精准的派发权限。另外,如果针对某个目录设置了ACL,则目录中的文件会继承其权限;若针对文件设置了ACL,则文件不再继承其所在目录的权限

setfacl

格式: setfacl [参数] 文件名称

简介: 用于管理文件的ACL权限规则 。 ACL权限提供的是在所有者、所属组、其他人的读/写/执行权限之外的特殊权限控制,使用setfacl命令可以针对单一用户或用户组、单一文件或目录来进行读/写/执行权限的控制

setfacl常用命令中的参数以及作用

参数 作用
-m 修改权限
-M 从文件中读取权限
-x 删除某个权限
-b 删除全部权限
-R 递归子目录

切换root用户给,去除几个权限

[root@zhao56 test]# chmod 0000 temp
[root@zhao56 test]# ll
total 12
d--------- 3 root   root   4096 Jul 15 17:24 temp
drwxrwsrwx 3 root   root   4096 Jul 15 16:02 tempsgid
---------- 1 zhao56 zhao56  237 Jul 14 15:52 zhao56demo.sh
[root@zhao56 test]# chmod 0000 tempsgid/
[root@zhao56 test]# ll
total 12
d--------- 3 root   root   4096 Jul 15 17:24 temp
d-----S--- 3 root   root   4096 Jul 15 16:02 tempsgid
---------- 1 zhao56 zhao56  237 Jul 14 15:52 zhao56demo.sh
[root@zhao56 test]# chmod g-s tempsgid/
[root@zhao56 test]# ll
total 12
d--------- 3 root   root   4096 Jul 15 17:24 temp
d--------- 3 root   root   4096 Jul 15 16:02 tempsgid
---------- 1 zhao56 zhao56  237 Jul 14 15:52 zhao56demo.sh

切换zhao56用户

[root@zhao56 test]# su zhao56
[zhao56@zhao56 test]$ cd /usr/local/test/
[zhao56@zhao56 test]$ ll
total 12
d--------- 3 root   root   4096 Jul 15 17:24 temp
d--------- 3 root   root   4096 Jul 15 16:02 tempsgid
---------- 1 zhao56 zhao56  237 Jul 14 15:52 zhao56demo.sh
#无法进入temp目录
[zhao56@zhao56 test]$ cd temp
bash: cd: temp: Permission denied
[zhao56@zhao56 test]$ cd tempsgid/
bash: cd: tempsgid/: Permission denied

切换root给temp授权

[root@zhao56 test]# setfacl -Rm u:zhao56:rwx temp
[root@zhao56 test]# ll
total 12
d---rwx---+ 2 root   root   4096 Jul 16 09:16 temp
d---------  2 root   root   4096 Jul 16 09:16 tempsgid
----------  1 zhao56 zhao56  237 Jul 14 15:52 zhao56demo.s

切换zhao56,发现可以进入了

[root@zhao56 test]# su zhao56
[zhao56@zhao56 test]$ ll
total 12
d---rwx---+ 2 root   root   4096 Jul 16 09:16 temp
d---------  2 root   root   4096 Jul 16 09:16 tempsgid
----------  1 zhao56 zhao56  237 Jul 14 15:52 zhao56demo.sh
[zhao56@zhao56 test]$ cd temp
[zhao56@zhao56 temp]$ ll
total 0
[zhao56@zhao56 temp]$ cd ..
[zhao56@zhao56 test]$ cd tempsgid/
bash: cd: tempsgid/: Permission denied
#切换用户zhao56-1验证
[zhao56@zhao56 test]$ su zhao56-1
Password: 
[zhao56-1@zhao56 test]$ ll
total 12
d---rwx---+ 2 root   root   4096 Jul 16 09:16 temp
d---------  2 root   root   4096 Jul 16 09:16 tempsgid
----------  1 zhao56 zhao56  237 Jul 14 15:52 zhao56demo.sh
[zhao56-1@zhao56 test]$ cd temp
bash: cd: temp: Permission denied

注:当授予ACL权限的时候最后会追加一个+

getfacl

格式: getfacl [参数] 文件名称

简介: 查看文件的ACL权限规则

[root@zhao56 test]# getfacl temp
# file: temp
# owner: root
# group: root
user::---
user:zhao56:rwx
group::---
mask::rwx
other::---

由于授权以后会把原来的权限给覆盖,所以可以通过 -R递归参数备份权限,通过--restore参数恢复

[root@zhao56 local]# getfacl -R test/ > backup.acl
[root@zhao56 local]# ls
aegis       bin     etc    include  lib64    sbin   src
backup.acl  docker  games  lib      libexec  share  test
[root@zhao56 local]# cat backup.acl 
# file: test/
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

# file: test//tempsgid
# owner: root
# group: root
user::---
group::---
other::---

# file: test//zhao56demo.sh
# owner: zhao56
# group: zhao56
user::---
group::---
other::---

# file: test//temp
# owner: root
# group: root
user::---
user:zhao56:rwx
group::---
mask::rwx
other::---
#恢复权限
[root@zhao56 local]# setfacl --restore backup.acl

su和sudo

su

su用于快速切换账户,su和用户名之间有时候会有一个- 这表示:完全切换到新用户,及吧环境变量也更新成新用户相关信息

注:生产环境尽量不要用root用户,也不要普通用户切root用户,以防被黑客盗取密码

sudo

格式: sudo [参数] 用户名

简介: 给普通用户提供额外的权限

sudo常用命令中的可用参数以及作用

参数 作用
-h 列出帮助信息
-l 列出当前用户可执行的命令
-u 用户名或UID值 以指定的用户身份执行命令
-k 清空密码的有效时间,下次执行sudo时需要再次进行密码验证
-b 在后台执行指定的命令
-p 更改询问密码的提示语

还可以使用visudo命令来配置用户权限( /etc/sudoers),以解决多个用户同时修改权限造成的冲突问题,还能进行语法检查

查看/etc/sudoers文件

[root@zhao56 local]# cat /etc/sudoers | grep -v ^# | grep -v ^$
Defaults   !visiblepw
Defaults    always_set_home
Defaults    match_group_by_gid
Defaults    always_query_group_plugin
Defaults    env_reset
Defaults    env_keep =  "COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS"
Defaults    env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults    env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
Defaults    env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
Defaults    env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"
Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin
root	ALL=(ALL) 	ALL
%wheel	ALL=(ALL)	ALL

修改用户权限需要在%wheel ALL=(ALL) ALL下一行填写

格式: 谁可以使用 允许使用的主机=(以谁的身份) 可执行命令的列表

  • 谁可以使用:稍后要为那位用户进行命令授权。
  • 允许使用的主机:可以填写ALL代表不限制来源主机,亦可填写如192.168.10.0/24的网段限制来源地址,只有从允许网段登录时才能使用sudo命令。
  • 以谁的身份:可以填写ALL代表系统最高权限,也可以是另外一位用户的名字。
  • 可执行命令的列表:可以填写ALL代表不限制命令的列表,亦可填写如/usr/bin/cat的文件名称来限制命令列表,多个命令文件之间用逗号(,)间隔。

如下zhao56能以root管理员的身份执行cat命令

[root@zhao56 test]# whereis cat
cat: /usr/bin/cat /usr/share/man/man1/cat.1.gz
[root@zhao56 test]# whereis reboot
reboot: /usr/sbin/reboot /usr/share/man/man8/reboot.8.gz
#添加 zhao56  ALL=(ALL) /usr/bin/cat,/usr/sbin/reboot
[root@zhao56 test]# visudo
root    ALL=(ALL)       ALL
zhao56  ALL=(ALL) /usr/bin/cat,/usr/sbin/reboot

切换用户

#直接执行cat是没有访问权限的
[zhao56@zhao56 test]$ cat /etc/shadow
cat: /etc/shadow: Permission denied
#加上sudo执行
[zhao56@zhao56 test]$ sudo cat /etc/shadow

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for zhao56: #输入密码
zhao56:$6$vAL/8UsE$BzBdmDPjcqPAKxVO8JEf2R7N5aJQGr93SZ1rkaKkdmrEV9kU4y/4qhy.OsNRyT5XGhilh0:18823:0:99999:7:::
zhao56-1:$6$SwymSSP2$fYDX2Y5cSA7qPKdImEY2eE9xq8EQqs8yTNriFk8UlbUhWpYpZ5f2kumfPFagzgyrRt0:18823:0:99999:7:::
zhao56-nologin:!!:18822:0:99999:7:::

每次输入密码很麻烦可以修改为:zhao56 ALL=(ALL) NOPASSWD:/usr/bin/cat,/usr/sbin/reboot

#修改错误还有提示
[root@zhao56 test]# visudo
>>> /etc/sudoers: syntax error near line 101 <<<
What now? 
Options are:
  (e)dit sudoers file again
  e(x)it without saving changes to sudoers file
  (Q)uit and save changes to sudoers file (DANGER!)

What now? e
#不用输密码了有没有
[zhao56@zhao56 test]$ sudo cat /etc/shadow
zhao56:$6$vAL/8UsE$BzBdmDPjcqPAKxVO8JEf2R7N5aJQGr93SZXKsH1rkaKkdmrEV9kU4y/4qhy.OsNRyT5XGhilh0:18823:0:99999:7:::
zhao56-1:$6$SwymSSP2$fYDX2Y5cSA7qPKdImEY2eE9xqnczrkuy8EQqs8yTNriFk8UlbUhWpYpZ5f2kumfPFagzgyrRt0:18823:0:99999:7:::
zhao56-nologin:!!:18822:0:99999:7:::
posted @ 2021-07-16 11:03  zhao56  阅读(510)  评论(0编辑  收藏  举报