8.2.2 权限管理-文件特殊权限-SetGID

合集下载

linux基础教程之特殊权限SUID、SGID和SBIT

linux基础教程之特殊权限SUID、SGID和SBIT

linux基础教程之特殊权限SUID、SGID和SBIT前⾔对于linux中⽂件或⽬录的权限,应该都知道普通的rwx权限。

Linux的权限不是很细致,只有RWX三种r(Read,读取):对⽂件⽽⾔,具有读取⽂件内容的权限;对⽬录来说,具有浏览⽬录的权限。

w(Write,写⼊):对⽂件⽽⾔,具有新增,修改,删除⽂件内容的权限;对⽬录来说,具有新建,删除,修改,移动⽬录内⽂件的权限。

x(eXecute,执⾏):对⽂件⽽⾔,具有执⾏⽂件的权限;对⽬录了来说该⽤户具有进⼊⽬录的权限。

1、⽬录的只读访问不允许使⽤cd进⼊⽬录,必须要有执⾏的权限才能进⼊。

2、只有执⾏权限只能进⼊⽬录,不能看到⽬录下的内容,要想看到⽬录下的⽂件名和⽬录名,需要可读权限。

3、⼀个⽂件能不能被删除,主要看该⽂件所在的⽬录对⽤户是否具有写权限,如果⽬录对⽤户没有写权限,则该⽬录下的所有⽂件都不能被删除,⽂件所有者除外4、⽬录的w位不设置,即使你拥有⽬录中某⽂件的w权限也不能写该⽂件我们先看看下⾯两个的权限是什么⾮常奇怪,/tmp⽬录和 passwd⽂件的权限怎么怪怪的,怎么有s和t权限呢。

看了下⾯的内容你就明⽩了。

1 SUID当s出现在⽂件拥有者的x权限上时,如我们上⾯看到的/usr/bin/passwd这个⽂件的权限时-rwsr-xr-x,此时就被称为SET UID简称SUID.SUID对于⼀个⽂件有什么限制和功能呢?SUID权限仅对⼆进制可执⾏⽂件有效执⾏者对于该⽂件具有x的权限本权限仅在执⾏该⽂件的过程中有效执⾏者将具有该⽂件拥有者的权限例如普通⽤户⽤passwd修改⾃⼰的命令,实际上最终更改的是/etc/passwd⽂件. 此⽂件时⽤户管理配置⽂件,只有root权限才能更改。

既然是root⽤户才拥有此权限,为什么我们可以通过passwd命令来修改密码呢,那这就要归功于passwd设置了suid权限位了。

此时普通⽤户通过执⾏passwd命令,临时拥有root权限,间接的修改/etc/passwd,以达到修改⾃⼰密码的权限。

特殊权限

特殊权限

特殊权限:SUID/SGID/Sticky Bit在Linux中除了支持读\写\执行三种类型的权限以外,Linux还支持强制位(setuid 和setgid)与冒险位(sticky)的特别权限。

例如:我们需要先了解一下SUID和GUID的概念,以及程序的进程(process)概念后,才能够进一步了解这些特殊权限所表示的意义。

• Set UIDs与t权限,是为了让一般用户在执行某些程序的时候,能够暂时具有该程序拥有者的权限。

举例来说,我们知道/etc/shadow文件的权限是“-r--------”,它的拥有者是root。

在这个权限中,仅有root可以“强制”修改此文件,其他人是连看都不行的。

但是,一个普通用户在更新自己的密码时,使用的就是 /usr/bin/passwd程序,却可以更新成功更新自己的密码。

也就是说,普通身份用户也是有权限使用/etc/shadow密码文件。

这怎么可能?明明 /etc/shadow只对root用户有读权限?这就是因为有s权限的帮助!当s权限在user的x时,也就是类似 -r-s--x--x,称为Set UID,简称为SUID,这个UID表示User的ID,而User表示这个程序(/usr/bin/passwd)的拥有者(root)。

那么,我们就可以知道,当普通用户执行 /usr/bin/passwd 时,它就会“暂时”得到文件拥有者root的权限。

SUID仅可用在“二进制文件(binary file)”,不能用在批处理文件(shell脚本)上。

并且,SUID 对目录是无效的。

这点要特别注意。

• Set GID综上所述,如果s的权限是在用户组,那么就是Set GID,简称SGID。

SGID可以用在两个方面。

文件:如果SGID设置在二进制文件上,则不论用户是谁,在执行该程序的时候,它的有效用户组(effectiveν group)将会变成该程序的用户组所有者(group id)。

Linux命令行中的高级用户权限管理技巧

Linux命令行中的高级用户权限管理技巧

Linux命令行中的高级用户权限管理技巧Linux作为一个开源操作系统,以其稳定性和灵活性受到广泛关注。

对于使用Linux命令行的高级用户来说,权限管理是一项非常重要的任务。

本文将介绍一些在Linux命令行中使用的高级用户权限管理技巧,帮助您更好地控制和管理系统中的用户权限。

一、用户和组的管理在Linux系统中,用户和组是权限控制的基本单位。

以下是一些常用的用户和组管理命令:1. useradd:创建新用户。

使用该命令可以创建一个新的用户账号,并可以指定其所属的用户组。

2. groupadd:创建新的用户组。

使用该命令可以创建一个新的用户组,并设置相关的属性。

3. usermod:修改用户属性。

使用该命令可以修改用户的相关属性,如用户名、用户组、密码等。

4. userdel:删除用户。

使用该命令可以删除指定的用户账号及其相关的文件。

5. groupmod:修改用户组属性。

使用该命令可以修改用户组的相关属性,如用户组名、用户组ID等。

6. groupdel:删除用户组。

使用该命令可以删除指定的用户组及其相关的文件。

二、文件和目录权限管理在Linux系统中,每个文件和目录都有一组权限,用于控制用户对其的读、写、执行等操作。

以下是一些常用的文件和目录权限管理命令:1. chmod:修改权限。

使用该命令可以修改文件或目录的权限。

-r:递归修改权限,包括子目录中的文件和目录。

-R:同-r,效果一样。

u:表示用户的权限。

g:表示用户组的权限。

o:表示其他用户的权限。

+:增加权限。

-:取消权限。

=:设置权限。

示例:chmod u+rwx file.txtchmod g+rw directory2. chown:修改文件或目录的所有者。

使用该命令可以修改文件或目录的所有者为指定的用户。

示例:chown user file.txtchown user:group directory3. chgrp:修改文件或目录的组。

特殊权限set_gid

特殊权限set_gid

特殊权限set_gidset gid:权限说明: set gid权限可以作⽤在⽂件上(⼆进制可执⾏⽂件),也可以作⽤在⽬录上。

当作⽤在⽂件上时,其功能和set,uid⼀样,它会使⽂件在执⾏阶段具有⽂件所属组的权限。

⽬录被设置这个权限后,任何⽤户在此⽬录下创建的⽂件都具有和该⽬录所属的组相同的组。

作⽤:当作⽤在⽂件上的时候,其作⽤和set uid是类似的,作⽤在组的权限位,也是个⼩s,它可以让执⾏这个⽂件的普通⽤户临时拥有所属组的⾝份;当作⽤在⽬录上的时候,创建⼦⽬录或⼦⽂件的所属组和该⽬录的所属组是保持⼀致的。

[root@master ~]# chmod g+s /usr/bin/ls[root@master ~]# ls -l /usr/bin/ls (我们发现所属组权限⾥⾯有s权限,其余的痛set-uid⼀样)-rwxr-sr-x. 1 root root 117656 Nov 6 2016 /usr/bin/ls对⽬录的更改,如果我们对⽬录的group权限增加s权限,再在其下⾯创建新的⽬录将会保持其⽬录所属组,不管在什么⽤户或者所属组下去更改我们发现在更改aa所属组并且对group权限添加s后,后⾯所创建的⼦⽬录也变成了wsl的所属组[root@mylinux ~]# mkdir aa/[root@mylinux ~]# chown :xiaoliang aa/ (更改aa⽬录所属组)[root@mylinux ~]# chmod g+s aa/ (对aa⽬录group组增加s权限)[root@mylinux ~]# mkdir aa/bb[root@mylinux ~]# ls -ld aa/ aa/bbdrwxr-sr-x. 3 root xiaoliang 15 12⽉ 22 00:21 aa/drwxr-sr-x. 2 root xiaoliang 6 12⽉ 22 00:21 aa/bb/ (我们发现在更改aa所属组并且对group权限添加s后,后⾯所创建的⼦⽬录也变成了xiaoliang的所属组)[root@mylinux ~]# mkdir cc[root@mylinux ~]# chown :xiaoliang cc/[root@mylinux ~]# mkdir cc/dd/[root@mylinux ~]# ls -ld cc/ cc/dd/drwxr-xr-x. 3 root xiaoliang15 12⽉ 22 00:26 cc/drwxr-xr-x. 2 root root 6 12⽉ 22 00:26 cc/dd/ (同样的我们只更改⽬录cc的所属组,再在其下⾯创建⼦⽬录,却⼦⽬录却没有更改为xiaoliang所属组)。

linux特殊权限

linux特殊权限

Linux文件特殊权限SUID/SGID/Sticky Bit
Set uid (简称Suid):
当对一个文件设置这个权限以后,无论谁来执行这个文件,都是以文件所有者的身份来执行的。

如:用户修改自己的密码时,就会调用/usr/sbin/passwd这个程序文件来修改/etc/shadow文件,但是普通用户没有修改这个文件的权限,现在可以对/etc/sbin/passwd这个文件设置suid权限,也就是s权限,相取消执行权限时就变成了大S
Set gid (简称Sgid):
当对一个文件设置这个权限以后,该文件将具有所属组的特权;一般针对目录,当对一个目录设置这个权限后,所有被复制到这个目录下的文件,其所属组都会被重设为和这个目录一样的权限,除非在复制时加-p参数(保留文件属性)如:
我创一个目录liang并能它设置sgid权限默认是小s,若取消执行权限后变成大S了。

Set sticky Bit (简称sticky bit):
当对一个文件设置了这个权限时,尽管其它用户有写权限,也必须由属主才能执行删除、移动等操作里面的文件,一个典型的例子是/tmp目录。

也就是说这个权限一般针对目录,当取消执行权限时就变成了大T.
切记一般不要设置特殊权限,除非不得不设置时。

权限位列表:。

Linux文件特殊权限之set位权限和粘滞位权限

Linux文件特殊权限之set位权限和粘滞位权限

Linux文件特殊权限之set位权限和粘滞位权限进程访问文件时的权限匹配机制:进程的发起者,作为进程的属主;而进程属主所属的基本组作为进程的属组;进程在确定对文件的访问权限的时候,首先会去查看进程的属主和文件的属主是否一样,若一样,则运用该文件属主的权限,否则则检查进程的属主所属的组(用户可属于多个组),是否有其中之一与文件的属组匹配,若有,则运用该文件属组的权限,否则,则运用其他权限。

默认情况下,在Linux系统中,我们创建的目录的权限是755,文件的权限是644,想必大家都知道这是umask的功劳。

出于文件系统安全性的考虑,umask的默认权限掩码是0022。

当然,我们也可通过变量赋值的方式设置自己的默认权限掩码,不过一般我们没必要这样做。

创建目录的默认权限=777-022=755;创建目录的默认权限=666-022=644此时,我想大家一定想知道,为啥我之前说umask默认权限掩码是0022,怎么在运算的时候,却写的是022,是吧?别着急,马上为您揭晓答案因为(从左往右数)第一个0表示的是特殊权限位,我们通常所说的多指:suid,sgid,sticky这三种特殊权限位的作用,应用场景,及使用方法我会在下面为大家详细描述1.set位权限(suid,sgid)set位权限有两部分组成:suid和sgid,分别对应可执行行文件属主和属组的身份suid位权限的表现形式:s或S 也可用数字4表示x: s -: S 若该文件之前,用户已有可执行权限,那么设置了suid位权限后,将在该文件属主的可执行权限位上,显示为s;否则显示为Ssgid位权限的表现形式:s或S 也可用数字2表示x: s -: S 若该文件之前,属组已有可执行权限,那么设置了sgid位权限后,将在该文件属组的可执行权限位上,显示为s;否则显示为S作用:设置完set权限后,任何用户在执行此可执行文件的过程中,将获得该文件属主、属组的身份。

set uid,set gid,sticky bit详解


----------------------------------------------------------------------------------------------------------------------
suid/sgid
要了解 suid/sgid, 必需先了解 process 及 permission.
这三个权限的数字位可以这么理解:在原来的三位权限位前增设一位,表示强制位和冒险位。与原来一样,该位取值亦用加法运算。如,同时设定sid和gid,该位为6.
所以,可以得出
chmod 4777是设sid,user为7,group为7,other为7
chmod 2777是设置gid,user为7,group为7,other为7
rwsrw-r-- 表示有setuid标志
rwxrwsrw- 表示有setg的执行标志x到哪里去了呢? 系统是这样规定的, 如果本来在该位上有x, 则这些特殊标志显示为小写字母 (s, s, t). 否则, 显示为大写字母 (S, S, T)
chmod o+t temp -- 为temp文件加上sticky标志 (sticky只对文件有效)
2) 采用八进制方式. 对一般文件通过三组八进制数字来置标志, 如 666, 777, 644等. 如果设置这些特殊标志, 则在这组数字之外外加一组八进制数字. 如 4666, 2777等. 这一组八进制数字三位的意义如下,
一旦这个 process effective 是 root 的话, 那它对 file system 的 permission 就如脱缰野马般任意奔腾而不受限制了.
因此我才在前面提到木马程序与病毒的例子...

基于Linux的文件访问控制

基于Linux的文件访问控制基于Linux的文件访问控制是操作系统对文件或目录进行权限管理的一种机制。

通过文件访问控制,用户可以根据自己的角色和权限来控制对文件的访问,确保文件的安全性和完整性。

Linux的文件访问控制主要通过权限位和权限掩码来实现。

每个文件或目录都有一个拥有者和一个所属组,这些信息会与文件的权限位关联。

权限位包括读、写和执行,分别对应数字表示中的4、2和1。

权限掩码是用来屏蔽某些权限的掩码。

Linux的文件访问控制有三个级别:用户、组和其他。

1. 用户级别权限:文件的拥有者可以对文件进行读、写和执行操作。

可以通过chown 命令来修改文件的拥有者。

2. 组级别权限:文件所属组可以对文件进行读、写和执行操作。

可以通过chgrp命令来修改文件的所属组。

3. 其他级别权限:其他用户可以对文件进行读、写和执行操作。

除了基本的读、写和执行权限外,Linux还有一些特殊权限和方式来进行更细粒度的控制:1. setuid权限:设置该权限后,当用户执行这个程序时,该程序接收执行者的权限而不是执行者的权限。

可以通过chmod命令来设置setuid权限。

2. setgid权限:设置该权限后,当用户执行这个程序时,该程序接收执行者所在组的权限而不是执行者自己的权限。

可以通过chmod命令来设置setgid权限。

3. SUID权限:suid和sgid权限设置了文件的执行者或所属组的权限。

与setuid和setgid权限不同,suid和sgid权限的授权方式以及具体工作原理有所不同。

4. 粘贴位权限:这个权限仅对目录有效,当粘贴位设置后,其他用户无法删除其他人创建的文件。

可以通过chmod命令来设置粘贴位权限。

Linux的文件访问控制是通过权限位、权限掩码和特殊权限来实现的。

通过适当设置用户、组和其他级别的权限,可以保护文件的安全性和完整性。

还可以通过特殊权限来实现更细粒度的访问控制。

setgid的linux用法

在Linux中,setgid(Set Group ID)是一个特殊的文件权限,它允许文件拥有者或执行文件/目录的用户在执行文件/目录时将组身份更改为文件/目录的属组。

对于文件来说,只有可执行的二进制文件才能设置setgid权限。

当命令执行者在执行二进制文件时,组身份会升级为该文件的所属组。

setgid权限只在该文件执行过程中有效,当程序执行结束后组身份恢复成原来的身份。

对于目录来说,setgid权限的作用如下:
1. 普通用户必须对此目录拥有r和x权限,才能进入此目录。

2. 普通用户在此目录中的有效组会变成此目录的属组。

3. 若普通用户对此目录有w权限,新建的文件的默认属组是这个目录的属组。

在Linux中设置setgid权限可以使用chmod命令,例如:chmod 2755 文件名。

这将为文件设置setgid权限,并将文件拥有者和所在组的权限设置为读/执行权限,其他用户的权限被拒绝。

linux系统下特殊权限的概念和功能

linux系统下特殊权限的概念和功能在Linux系统下,特殊权限是一种用于文件和目录的权限设置,不同于普通的读、写、执行权限,特殊权限可以提供更加细粒度的权限控制和保护。

特殊权限主要包括Set-User-ID(SUID)、Set-Group-ID(SGID)和Sticky Bit。

这些权限用于提供额外的功能和安全性,确保系统和用户的安全。

首先,我们来看一下SUID权限。

SUID权限是一种特殊的权限,它允许一个普通用户在执行一个程序时,该程序以拥有文件所有者的权限来执行。

这样做可以允许普通用户执行一些仅有root权限才能执行的操作,同时确保系统的安全性。

举个例子,我们知道passwd这个命令可以用来更改用户的密码,而这个命令通常是只有root用户才能执行的。

但是,如果将passwd命令设置为SUID权限,那么普通用户也可以使用passwd命令来更改自己的密码,因为当普通用户执行passwd命令时,实际上是以root用户的身份来执行这个命令的。

接下来是SGID权限。

SGID权限是一种特殊权限,它允许一个普通用户在执行一个程序时,该程序以属组拥有者的权限来执行。

同样,这种权限也可以用来确保系统的安全性。

举个例子,假设有一个目录,里面有多个用户共享文件,如果将这个目录设置了SGID权限,那么在这个目录下创建的文件的属组会自动继承这个目录的属组。

这样可以确保不同用户创建的文件都可以被共享,并且只有属组成员才能对这些文件进行操作。

最后是Sticky Bit权限。

Sticky Bit权限是一种特殊权限,它通常用于目录,它可以防止用户误删其他用户的文件,同时确保目录的安全性。

举个例子,假设有一个共享目录,多个用户可以在这个目录下创建文件。

如果将这个目录设置了Sticky Bit权限,那么只有文件的拥有者和root用户才能删除这些文件,其他用户是无法删除这些文件的。

这样可以确保文件的安全性,防止用户误删其他用户的文件。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第八讲 权限管理
主讲人:沈超(/lampsc) 交流论坛:
课程大纲
8.1 8.2 8.3 8.4 ACL权限 文件特殊权限 文件系统属性chattr权限 系统命令sudo权限
8.2 文件特殊权限
8.2.1 SetUID 8.2.2 SetGID 8.3.3 Stick制程序才能设置SGID权限 命令执行者要对该程序拥有x(执行)权限 命令执行在执行程序的时候,组身份升级为该 程序文件的属组 SetGID权限同样只在该程序执行过程中有效, 也就是说组身份改变只在程序执行过程中有效
[root@localhost ~]# ll /usr/bin/locate -rwx--s--x 1 root slocate 35612 8月 24 2010 /usr/bin/locate
[root@localhost ~]# ll /var/lib/mlocate/mlocate.db -rw-r----- 1 root slocate 1838850 1月 20 04:29 /var/lib/mlocate/mlocate.db
/usr/bin/locate是可执行二进制程序,可以赋予 SGID 执行用户lamp对/usr/bin/locate命令拥有执行权限 执行/usr/bin/locate命令时,组身份会升级为slocate 组,而slocate组对/var/lib/mlocate/mlocate.db数据 库拥有r权限,所以普通用户可以使用locate命令 查询mlocate.db数据库 命令结束,lamp用户的组身份返回为lamp组
3、设定SetGID
2代表SGID
chmod 2755 文件名 chmod g+s 文件名
4、取消SetGID
chmod 755 文件名 chmod g-s 文件名
2、SetGID针对目录的作用
普通用户必须对此目录拥有r和x权限,才 能进入此目录 普通用户在此目录中的有效组会变成此目 录的属组 若普通用户对此目录拥有w权限时,新建 的文件的默认属组是这个目录的属组
[root@localhost ~]# cd /tmp/ [root@localhost tmp]# mkdir dtest [root@localhost tmp]# chmod g+s dtest [root@localhost tmp]# ll -d dtest/ [root@localhost tmp]# chmod 777 dtest/ [root@localhost tmp]# su – lamp [lamp@localhost ~]$ cd /tmp/dtest/ [lamp@localhost dtest]$ touch abc [lamp@localhost dtest]$ ll
相关文档
最新文档