用户权限-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


相关文章
|
10天前
|
存储 缓存 监控
Linux缓存管理:如何安全地清理系统缓存
在Linux系统中,内存管理至关重要。本文详细介绍了如何安全地清理系统缓存,特别是通过使用`/proc/sys/vm/drop_caches`接口。内容包括清理缓存的原因、步骤、注意事项和最佳实践,帮助你在必要时优化系统性能。
129 78
|
13天前
|
Linux Shell 网络安全
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
52 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
|
9天前
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
62 13
|
1月前
|
Ubuntu Linux 网络安全
linux系统ubuntu中在命令行中打开图形界面的文件夹
在Ubuntu系统中,通过命令行打开图形界面的文件夹是一个高效且实用的操作。无论是使用Nautilus、Dolphin还是Thunar,都可以根据具体桌面环境选择合适的文件管理器。通过上述命令和方法,可以简化日常工作,提高效率。同时,解决权限问题和图形界面问题也能确保操作的顺利进行。掌握这些技巧,可以使Linux操作更加便捷和灵活。
39 3
|
10天前
|
Ubuntu Linux C++
Win10系统上直接使用linux子系统教程(仅需五步!超简单,快速上手)
本文介绍了如何在Windows 10上安装并使用Linux子系统。首先,通过应用商店安装Windows Terminal和Linux系统(如Ubuntu)。接着,在控制面板中启用“适用于Linux的Windows子系统”并重启电脑。最后,在Windows Terminal中选择安装的Linux系统即可开始使用。文中还提供了注意事项和进一步配置的链接。
28 0
|
1月前
|
Linux
在 Linux 系统中,`find` 命令
在 Linux 系统中,`find` 命令
39 1
|
21天前
|
存储 Oracle 安全
服务器数据恢复—LINUX系统删除/格式化的数据恢复流程
Linux操作系统是世界上流行的操作系统之一,被广泛用于服务器、个人电脑、移动设备和嵌入式系统。Linux系统下数据被误删除或者误格式化的问题非常普遍。下面北亚企安数据恢复工程师简单聊一下基于linux的文件系统(EXT2/EXT3/EXT4/Reiserfs/Xfs) 下删除或者格式化的数据恢复流程和可行性。
|
7月前
|
缓存 Linux 测试技术
安装【银河麒麟V10】linux系统--并挂载镜像
安装【银河麒麟V10】linux系统--并挂载镜像
2180 0
|
7月前
|
关系型数据库 MySQL Linux
卸载、下载、安装mysql(Linux系统centos7)
卸载、下载、安装mysql(Linux系统centos7)
254 0
|
2月前
|
Linux
手把手教会你安装Linux系统
手把手教会你安装Linux系统