用户权限-Linux系统特殊权限

简介: 用户权限-Linux系统特殊权限
  • Linux系统特殊权限
  • set_uid
  • set_gid
  • sticky粘滞位
  • 权限属性chattr
  • 进程掩码umask
  • 特殊权限练习题

一、Linux系统特殊权限

1、suid以文件的所属用户身份执行命令, 而不是以当前用户的身份执行命令

-rwsr-xr-x. 1 root root 54080 Nov 5 2016 /usr/bin/cat

suid

root用户执行,最终运行的身份是root

bgx用户执行,最终运行的身份是root

2、目录设置为sgid后续如果在该目录下创建文件, 都将与该目录的所属组保持一致drwxr-srwx. 2 root devops 29 Jun 14 21:01 /opt/
  1. bgx用户登陆后, 在/opt/目录创建文件或者目录属主和属组是
  1. 最终属主和属组 bgx devops
  1. xlw用户登陆后, 在/opt/目录创建文件或者目录属主和属组是
    2. 最终属主和属组 xlw devops
  2. root用户登陆后, 在/opt/目录创建文件或者目录属主和属组是
    3. 最终属主和属组 root devops
3、sticky任何人都可以在该目录下创建文件以及目录, 但只能删除自己创建的文件和目录

drwxrwxrwt. 7 root root 93 Jun 14 21:47 /tmp/

4、如何设置特殊权限
  1. 用符号表示: setuid=u+s; setgid=g+s; sticky=o+t
  2. 用数值表示: setuid=4; setgid=2; sticky=1

1.set_uid

文件的执行有效身份为文件的拥有者,而不是执行者的身份

image.png

演示:
检查passwd文件权限,匿名用户没有权限查看
[root@liza ~]# chmod 640 /etc/passwd
[root@liza ~]# ll /etc/passwd
-rw-r-----. 1 root root 2059 Jan  3 22:59 /etc/passwd
使用普通用户无法查看
[root@liza ~]# su - liza
Last login: Tue Jan 12 13:40:43 CST 2021 on pts/1
/usr/bin/id: cannot find name for user ID 1000
/usr/bin/id: cannot find name for user ID 1000
[I have no name!@liza ~]$ cat /etc/passwd
cat: /etc/passwd: Permission denied
[I have no name!@liza ~]$ 
给cat命令赋予suid
[root@liza ~]# chmod 4755 /bin/cat
[root@liza ~]# ll /bin/cat
-rwsr-xr-x. 1 root root 54080 Jun 30  2016 /bin/cat
[I have no name!@liza ~]$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
---此处省略
suid授权方法

suid 4000 权限字符s(S),用户位置上的x位上设置

授权方法:

chmod 4755 passwd

chmod u+s passwd

suid的作用
  1. 让普通用户拥有二进制文件的所属主权限,二进制文件需要有执行权限。
  2. 如果设置的二进制文件没有执行权限,那么suid的权限显示就是大S。
  3. 特殊权限suid仅对二进制可执行程序有效,其他文件或目录则无效。
  4. 如果普通用户需要操作没有权限的文件,为对应的命令赋予Suid权限。

注意: suid双刃剑, 是一个比较危险的功能, 对系统安全有一定的威胁。

2.set_gid

演示
[root@liza /]# chmod 777 /opt/
[root@liza /]# chmod g+s /opt/
[root@liza /]# su - liza
[liza@liza ~]$ mkdir /opt/sgid_test
[liza@liza ~]$ ll -d /opt/sgid_test/
drwxrwsr-x. 2 liza root 6 Jan 12 13:46 /opt/sgid_test/
sgid授权方法

suid 2000 权限字符s(S),取决于属组位置上的x

授权方法:

chmod 2755 directory

chmod g+s directory

sgid作用
  1. 针对用户组权限位修改,用户创建的目录或文件所属组和该目录的所属组一致。
  2. 当某个目录设置了sgid后,在该目录中新建的文件不在是创建该文件的默认所属组
  3. 使用sgid可以使得多个用户之间共享一个目录的所有文件变得简单。

3.sticky粘滞位

sticky对目录有写权限的用户仅仅可以删除目录里属于自己的文件,不能删除其他用户的文件系统中存在的/tmp目录是经典的粘滞位目录,谁都有写权限,因此安全成问题,常常是木马第一手跳板。

sticky授权方法

粘滞位 1000 权限字符t(T),其他用户位的x位上设置。

授权方法:

chmod 1755 /tmp

chmod o+t /tmp

sticky作用
  1. 让多个用户都具有写权限的目录,并让每个用户只能删自己的文件。
  2. 特殊sticky目录表现在others的x位,用小t表示,如果没有执行权限是T
  3. 一个目录即使它的权限为”777”如果是设置了粘滞位,除了目录的属主和”root”用户有权限删除,除此之外其他用户都不允许删除该目录。

二、权限属性chattr

设置文件属性(权限),针对所有用户,包括 root

a:让文件或目录仅可追加内容

i:不得任意更动文件或目录

演示:创建文件并设置属性
[root@liza ~]# touch file_a file_i
[root@liza ~]# lsattr file_a file_i
---------------- file_a
---------------- file_i
设置属性
[root@liza ~]# chattr +a file_a
[root@liza ~]# chattr +i file_i
[root@liza ~]# lsattr file_a file_i
-----a---------- file_a
----i----------- file_i
a权限, 无法覆盖写入和删除文件
[root@liza ~]# echo "aa" > file_a
-bash: file_a: Operation not permitted
[root@liza ~]# rm -f file_a
rm: cannot remove ‘file_a’: Operation not permitted
a权限, 只能追加, 适用于日志文件
[root@liza ~]# echo "aa" >> file_a
i权限, 无法写入, 无法删除
[root@liza ~]# echo "i" >> file_i
-bash: file_i: Permission denied
[root@liza ~]# echo "i" > file_i
-bash: file_i: Permission denied
[root@liza ~]# rm -f file_i
rm: cannot remove ‘file_i’: Operation not permitted
解除限制
[root@liza ~]# chattr -a file_a
[root@liza ~]# chattr -i file_i

三、进程掩码umask

umask用于控制系统权限, 默认系统权限较大, 需要靠Umask来变更权限

默认新建文件,系统默认最大权限为666

默认新建目录,系统默认最大权限是777我们在新建文件和目录的默认权限会受到umask的影响, umask表示要减掉的权限。

创建目录权限值为777-umask

创建普通文件权限值为644-umask

umask涉及到的相关文件/etc/bashrc

/etc/profile

~/.bashrc

~/.bash_profile

注意umask影响的范围

shell (vim,touch) –umask–> 新文件或目录权限

vsftpd –umask–> 新文件或目录权限

samba –umask–> 新文件或目录权限

useradd –umask–> 用户 HOME

1.假设umask值为:022(所有位为偶数)

//文件的起始权限值

6 6 6 - 0 2 2 = 6 4 4

2.假设umask值为:045(其他用户组位为奇数)

//计算出来的权限。由于umask的最后一位数字是5,所以,在其他用户组位再加1。

6 6 6 - 0 4 5 = 6 2 1

3.默认目录权限计算方法

7 7 7 - 0 2 2 = 7 5 5

示例1: 在shell进程中创建文件

查看当前用户的umask权限

[root@liza ~]# umask 
0022
[root@liza ~]# touch file001
[root@liza ~]# mkdir dir001
[root@liza ~]# ll -d file001 dir001/
drwxr-xr-x. 2 root root 6 Jan 12 14:04 dir001/
-rw-r--r--. 1 root root 0 Jan 12 14:04 file001
示例2: 修改shell umask值(临时生效)
[root@liza ~]# umask 000
[root@liza ~]# mkdir dir000
[root@liza ~]# touch file000
[root@liza ~]# ll -d dir000 file000 
drwxrwxrwx. 2 root root 6 Jan 12 14:05 dir000
-rw-rw-rw-. 1 root root 0 Jan 12 14:05 file000
示例3: 修改shell umask值(永久生效, 强烈不建议修改)
[root@liza ~]# vim /etc/profile
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then 
umask 002
else
umask 022
fi
//立即在当前 shell 中生效
[root@liyanzhao ~]# source /etc/profile
示例4: 通过umask决定新建用户HOME目录的权限
[root@liza ~]# vim /etc/login.defs 
UMASK 077
[root@liza ~]# useradd dba
[root@liza ~]# ll -d /home/dba/
drwx------. 3 dba dba 78 Jan 12 14:08 /home/dba/
[root@liza ~]# vim /etc/login.defs 
UMASK 000
[root@liza ~]# useradd sa
[root@liza ~]# ll -d /home/sa/
drwx------. 3 sa sa 78 Jan 12 14:09 /home/sa/
示例 5:例如vsftpd进程/etc/vsftpd/vsftpd.conf
[root@liza ~]# yum -y install vsftpd
[root@liza ~]# man vsftpd.conf

四、特殊权限练习题

lab permissions setup

考试必考:

创建三个用户, 分别为curly、larry、moe这些用户都是stooges组的成员。这些用户帐号密码都为password

  1. 要求以上用户和组可以在/home/stooges目录里访问,创建,删除文件
  2. 其他用户一律不允许访问该目录
  3. 在该目录下新建的文件会自动属于stooges组拥有
//创建用户,组
groupadd stooges
useradd -G stooges curly
useradd -G stooges larry
useradd -G stooges moe
//创建密码
echo "password" | passwd --stdin moe
echo "password" | passwd --stdin larry
echo "password" | passwd --stdin curry
//创建目录并配置权限
mkdir /home/stooges
chmod 770 /home/stooges
chown .stooges /home/stooges
chmod g+s /home/stooges


目录
打赏
0
0
0
0
12
分享
相关文章
Linux系统中的cd命令:目录切换技巧
踏过千山,越过万水,人生就是一场不断前行的旅程,总充满了未知与挑战。然而,“cd”命令如同你的旅伴,会带你穿梭在如棋盘一般的文件系统中,探索每一处未知。希望你能从“cd”命令中找到乐趣,像是掌控了一种络新妙的魔法,去向未知进发,开始你的探索之旅。
88 24
|
7天前
|
Linux系统下快速批量创建和删除文件的方法
总的来说,使用shell脚本来批量处理文件是一种非常强大的工具,只要你愿意花时间学习和实践,你会发现它能大大提高你的工作效率。
54 19
Linux系统之su命令的基本使用
Linux系统之su命令的基本使用
67 2
Linux系统之su命令的基本使用
在Ubuntu Linux系统下如何搭建并安装EDK2
以上就是在Ubuntu Linux系统下搭建并安装EDK2的过程。这个过程可能会有些复杂,但只要按照步骤一步步来,应该不会有太大问题。如果在过程中遇到任何问题,都可以在网上找到相应的解决方案。希望这个指南能对你有所帮助!
64 17
Linux系统资源管理:多角度查看内存使用情况。
要知道,透过内存管理的窗口,我们可以洞察到Linux系统运行的真实身姿,如同解剖学家透过微观镜,洞察生命的奥秘。记住,不要惧怕那些高深的命令和参数,他们只是你掌握系统"魔法棒"的钥匙,熟练掌握后,你就可以骄傲地说:Linux,我来了!
119 27
|
1月前
|
Linux系统ext4磁盘扩容实践指南
这个过程就像是给你的房子建一个新的储物间。你需要先找到空地(创建新的分区),然后建造储物间(格式化为ext4文件系统),最后将储物间添加到你的房子中(将新的分区添加到文件系统中)。完成这些步骤后,你就有了一个更大的储物空间。
151 10
|
1月前
|
微服务2——MongoDB单机部署4——Linux系统中的安装启动和连接
本节主要介绍了在Linux系统中安装、启动和连接MongoDB的详细步骤。首先从官网下载MongoDB压缩包并解压至指定目录,接着创建数据和日志存储目录,并配置`mongod.conf`文件以设定日志路径、数据存储路径及绑定IP等参数。之后通过配置文件启动MongoDB服务,并使用`mongo`命令或Compass工具进行连接测试。此外,还提供了防火墙配置建议以及服务停止的两种方法:快速关闭(直接杀死进程)和标准关闭(通过客户端命令安全关闭)。最后补充了数据损坏时的修复操作,确保数据库的稳定运行。
90 0
Linux用户权限文件详解
用户管理中最重要的一个文件,这个文件是对所有用户开放的,每一行存一个用户的信息,每个属性之间用冒号分割。 cat /etc/passwd root:x:0:0:root:/root:/bin/zsh bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:da.
4294 0
|
28天前
|
linux命令详细说明以及案例
本文介绍了常用的 Linux 命令及其详细说明和示例,包括:`ls`(列出目录内容)、`cd`(更改目录)、`rm` 和 `mv`(删除与移动文件)、`grep`(搜索文本)、`cat`(显示文件内容)以及 `chmod`(更改文件权限)。每个命令均配有功能描述、选项说明及实际案例,帮助用户更好地掌握 Linux 命令的使用方法。
154 56
|
6天前
|
Linux命令的基本格式解析
总的来说,Linux命令的基本格式就像一个食谱,它可以指导你如何使用你的计算机。通过学习和实践,你可以成为一个真正的“计算机厨师”,创造出各种“美味”的命令。
44 15
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等