Linux系统上的特殊权限SUID,SGID,STICKY以及额外权限管理工具facl命令

Linux系统上的特殊权限

特殊权限:SUID, SGID, STICKY

安全上下文:

1、进程以某用户的身份运行;进程是发起此进程用户的代理,因此以此用户的身份和权限完成所有操作;

2、权限匹配模型:

(1) 判断进程的属主,是否为被访问的文件属主;如果是,则应用属主的权限;否则进入第2步;

(2) 判断进程的属主,是否属于被访问的文件属组;如果是,则应用属组的权限;否则进入第3步;

(3) 应用other的权限;

SUID:

默认情况下:用户发起的进程,进程的属主是其发起者;因此,其以发起者的身份在运行;

SUID的功用:用户运行某程序时,如果此程序拥有SUID权限,那么程序运行为进程时,进程的属主不是发起者,而程序文件自己的属主;

管理文件的SUID权限:

chmod u+|-s FILE...

展示位置:属主的执行权限位

如果属主原本有执行权限,显示为小写s;

否则,显示为大写S;

演示说明:

[[email protected] tmp]# \cp /bin/ls /tmp/ls
#拷贝ls命令到/tmp目录下
[[email protected] tmp]# ll /tmp/ls 
-rwxr-xr-x 1 root root 117024 Sep 27 11:06 /tmp/ls
#默认所属组是有执行权限
[[email protected] tmp]# chmod u+s /tmp/ls 
[[email protected] tmp]# ll /tmp/ls
-rwsr-xr-x 1 root root 117024 Sep 27 11:06 /tmp/ls
#有执行权限了,在所属主的执行权限位为s,没有执行权限为S
[[email protected] tmp]# su - svn
[[email protected] ~]$ ls /root/
ls: cannot open directory /root/: Permission denied
#切换到svn用户,用ls命令查看/root目录,没有权限
[[email protected] ~]$ /tmp/ls /root/  #用拥有SUID 权限的命令就有查看的权限了
anaconda-ks.cfg   Desktop
[[email protected] tmp]# chmod u-s /tmp/ls #取消文件的SUID权限
[[email protected] tmp]# su - svn
[[email protected] ~]$ /tmp/ls /root/
/tmp/ls: cannot open directory /root/: Permission denied
[[email protected] ~]$ ll /tmp/ls 
-rwxr-xr-x 1 root root 117024 Sep 27 11:06 /tmp/ls

SGID:

功用:当目录属组有写权限,且有SGID权限时,那么所有属于此目录的属组(以此目录的属组为附加组的用户),且以属组身份在此目录中新建文件或目录时,新文件的属组不是用户的基本组,而是此目录的属组;

管理文件的SGID权限:

chmod g+|-s FILE...

展示位置:属组的执行权限位

如果属组原本有执行权限,显示为小写s;

否则,显示为大写S;

使用演示:

[[email protected] tmp]# ls -ld SGID/
drwxr-xr-x 2 root root 4096 Sep 27 11:18 SGID/
[[email protected] tmp]# chmod g+s SGID/  #对目录添加SGID权限
[[email protected] tmp]# ls -ld SGID/
drwxr-sr-x 2 root root 4096 Sep 27 11:18 SGID/
[[email protected] tmp]# chmod g+w SGID/
[[email protected] tmp]# ls -ld SGID/
drwxrwsr-x 2 root root 4096 Sep 27 11:18 SGID/  #在所属组的执行位显示为s
[[email protected] tmp]# su - centos
-bash-4.1$ id centos
uid=495(centos) gid=491(centos) groups=491(centos),0(root)
#centos的默认属组centos
-bash-4.1$ cd /tmp/SGID/
-bash-4.1$ touch a.txt
-bash-4.1$ mkdir centos
-bash-4.1$ ll
total 4
-rw-rw-r-- 1 centos root    0 Sep 27 11:20 a.txt
drwxrwsr-x 2 centos root 4096 Sep 27 11:20 centos
#默认创建的文件的所属组是目录的所属组,而非用户本身

结论:1.对目录进行赋权SGID时,在其目录中创建文件的用户必须是其目录的属组的成员。

2.当sgid作用在目录上时,在目录内新建的文件或目录的所属组自动继承该目录的所属组

3.在具有SGID权限的目录中创建文件时,目录的属组一定要有写(w)权限,因为这样才能对其目录创建文件。

Sticky:

功用:对于属组或全局可写的目录,组内的所有用户或系统上的所有用户对在此目录中都能创建新文件或删除所有的已有文件;如果为此类目录设置Sticky权限,则每个用户能创建新文件,且只能删除自己的文件;

管理文件的Sticky权限:

chmod o+|-t FILE...

展示位置:其它用户的执行权限位

如果其它用户原本有执行权限,显示为小写t;

否则,显示为大写T;

系统上的/tmp和/var/tmp目录默认均有sticky权限;

管理特殊权限的另一方式:

suid sgid sticy     八进制权限

0 0 0   0

0 0 1   1

0 1 0   2

0 1 1   3

1 0 0   4

1 0 1   5

1 1 0   6

1 1 1   7

基于八进制方式赋权时,可于默认的三位八进制数字左侧再加一位八进制数字;

例如:chmod 1777 filename 给有所有权限并且给予sticky权限

使用演示:

[[email protected] tmp]# mkdir STICKY        #创建目录
[[email protected] tmp]# chmod 1777 STICKY/  #给予目录所有的权限并且赋予sticky权限
[[email protected] tmp]# ls -ld STICKY       
drwxrwxrwt 2 root root 4096 Sep 27 14:12 STICKY #目录拥有1777权限

[[email protected] tmp]# su - centos
-bash-4.1$ cd /tmp/STICKY/
-bash-4.1$ touch centos
-bash-4.1$ mkdir centos.d
-bash-4.1$ ll
total 4
-rw-rw-r-- 1 centos centos    0 Sep 27 14:14 centos
drwxrwxr-x 2 centos centos 4096 Sep 27 14:14 centos.d
-bash-4.1$ exit
logout
[[email protected] tmp]# cd STICKY/
[[email protected] STICKY]# touch root
[[email protected] STICKY]# mkdir root.d
[[email protected] STICKY]# ll
total 8
-rw-rw-r-- 1 centos centos    0 Sep 27 14:14 centos
drwxrwxr-x 2 centos centos 4096 Sep 27 14:14 centos.d
-rw-r--r-- 1 root   root      0 Sep 27 14:15 root
drwxr-xr-x 2 root   root   4096 Sep 27 14:15 root.d
#分别用root用户和centos用户创建文件

[[email protected] tmp]# su - centos
-bash-4.1$ cd /tmp/STICKY/
-bash-4.1$ rm -f root
rm: cannot remove `root‘: Operation not permitted
-bash-4.1$ rm -rf root.d/
rm: cannot remove `root.d‘: Operation not permitted
-bash-4.1$ rm -rf centos.d
#切换到centos目录下,可以删除自己创建的文件,但是不能删除其他用户创建文件

facl:file access control lists

文件的额外赋权机制:

在原来的u,g,o之外,另一层让普通用户能控制赋权给另外的用户或组的赋权机制;

getfacl命令:

getfacl FILE...

user:USERNAME:MODE

group:GROUPNAME:MODE

setfacl命令:

赋权给用户:

setfacl  -m  u:USERNAME:MODE  FILE...

[[email protected] tmp]# mkdir FACL                    #创建目录 
[[email protected] tmp]# ls -ld FACL                   #查看权限
drwxr-xr-x 2 root root 4096 Sep 27 14:34 FACL   
[[email protected] tmp]# setfacl -m u:dts:7 FACL/      #赋予额外的权限  
[[email protected] tmp]# su - dts
[email protected]:~$ cd /tmp/facl/                      #验证可以创建文件,有写权限 
-bash: cd: /tmp/facl/: Permission denied
[email protected]:~$ cd /tmp/FACL/
[email protected]:/tmp/FACL$ cat << EOF > a.txt
> time flies
> EOF
[email protected]:/tmp/FACL$ cat a.txt 
time flies
[email protected]:/tmp/FACL$ ls -ld                     #查看实际的权限,只有r-x权限
drwxrwxr-x+ 2 root root 4096 Sep 27 14:40 ./

赋权级组:

setfacl  -m  g:GROUPNAME:MODE FILE...

撤销赋权:

setfacl  -x u:USERNAME  FILE...

[[email protected] tmp]# setfacl -x u:dts FACL/

setfacl  -x  g:GROUPNAME  FILE...

时间: 2024-12-28 17:13:54

Linux系统上的特殊权限SUID,SGID,STICKY以及额外权限管理工具facl命令的相关文章

Linux文件系统上的特殊权限 &nbsp; &nbsp; &nbsp;SUID, SGID, Sticky(粘之位)

每个人都有自己的梦想,我想把它写出来. Linux文件系统上的特殊权限 SUID, SGID, Sticky(粘之位) 1 文件基本权限 r读, w写, x执行 user, group, other 2 安全上下文 前提:进程有属主和属组:文件有属主和属组: (1) 任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限: (2) 启动为进程之后,其进程的属主为发起者:进程的属组为发起者所属的组: (3) 进程访问文件时的权限,取决于进程的发起者: (a) 进程的发起者,同

linux系统上的特殊权限SUID,SGID,STICKY

特殊权限:SUID SGID STICKY linux的安全上下文: 1.进程以用户的身份运行,进程是发起此用户的代理,因此以此用户的身份和权限完成所有的操作. 2.权限匹配模型: 1)判断进程的属主,是否以被访问的文件属主.如果是,则应用属主权限,否则进入第2步. 2)判断进程的属主,是否属于被访问的文件属组.如果是,则应用属组的权限,否则进入第3步. 3)应用other的权限. SUID: 默认情况下,用户发起的进程,进程的属主是其发起者,因此,其以发起者的身份在运行. SUID的功用:用户

linux的权限管理以及特殊权限SUID,SGID,Sticky

一切皆文件是linux重要的哲学思想之一,用户通过帐号密码登录系统以获得系统的使用权,在系统内部是通过UID来唯一标识一个用户,那么一个用户是否可以去访问或者使用某个文件资源,就取决于该用户是否有对应的权限. 在linux系统上,使用ls -l选项可以看见每一个文件的权限都分为三段,分别对应文件属主,属组,其它.权限位由r,w,x(读写执行)组成. 权限匹配流程:首先检查执行操作的用户是不是文件的属主,如果是,就应用文件属主 的权限.否则就检查用户是不是文件属组中的用户,最后就应用其它用户持用

文件的特殊权限:suid sgid sticky

一.文件的特殊权限:suid    展示于文件属主的执行权限位:    如果属主本来有执行权限,则展示为s:否则,展示为S; 功用:对于一个可执行文件来讲,任何用户运行此程序为进程时,进程的属主不再是发起者本人,而可执行程序文件自己的属主: 管理文件SUID权限的方法:        chmod u+|-s FILE... [[email protected] ~]# useradd fedora [[email protected] ~]# cp /bin/cat /var/tmp/ [[em

特殊权限SUID,SGID,Sticky

SUID属性 SUID属性属性只能运用在可执行文件上,当其他用户执行该文件时,临时拥有该文件所有者的权限.典型的有passwd文件,因为SUID属性,所以一般用户在使用passwd修改命令时,临时拥有了passwd的拥有者root的权限.使用命令"ls -l "或"ll"查看文件时,如果如果可执行文件所有者权限的第三位是一个小写的"s"就表明该执行文件拥有SUID属性. [[email protected]~]# ls -l /etc/passw

文件特殊权限 SUID,SGID,Sticky 笔记

SUID : 运行某程序时 , 相应进程的属主是程序文件自身的属主,而不是启动者 chmod u+s FILENAME  (添加 SUID 权限)      chmod u-s FILENAME  (除去 SUID 权限) 如果 FILE 本身原来就有执行权限,则 SUID 显示为 s ; 否则显示 S; passwd 命令默认具有 SUID 权限 SGID : 运行某程序时 , 相应进程的属组是程序文件自身的属组,而不是启动者 (目录有SGID权限后,在该目录下创建文件目录时,创建后的属组为目

特殊权限-SUID,SGID,Sticky 学习笔记

SUID : 运行某程序时,相应进程的属主是程序文件自身的属主,而不是启动者 chmod u+s FILENAME  (添加 SUID 权限)      chmod u-s FILENAME  (除去 SUID 权限) 如果 FILE 本身原来就有执行权限,则 SUID 显示为 s ; 否则显示 S; passwd 命令默认具有 SUID 权限 SGID : 运行某程序时,相应进程的属组是程序文件自身的属组,而不是启动者 (目录有SGID权限后,在该目录下创建文件目录时,创建后的属组为目录自身的

【Linux】文件特殊权限 SUID/SGID/Sticky Bit

linux中除了常见的读(r).写(w).执行(x)权限以外,还有3个特殊的权限,分别是setuid.setgid和stick bit 1.setuid.setgid 先看个实例,查看你的/usr/bin/passwd 与/etc/passwd文件的权限 [[email protected] ~]# ls -l /usr/bin/passwd /etc/passwd-rw-r--r-- 1 root root 1549 08-19 13:54 /etc/passwd-rwsr-xr-x 1 ro

特殊权限:SUID,SGID,Sticky

特殊权限passwd:s SUID: 运行某程序时,相应进程的属主是程序文件自身的属主,而不是启动者:    chmod u+s FILE    chmod u-s FILE        如果FILE本身原来就有执行权限,则SUID显示为s:否则显示S:SGID: 运行某程序时,相应进程的属组是程序文件自身的属组,而不是启动者所属的基本组:    chmod g+s FILE    chmod g-s FILE        develop team, hadoop, hbase, hive