SGID与执行权限的验证
- 格式:pdf
- 大小:165.63 KB
- 文档页数:1
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,以达到修改⾃⼰密码的权限。
基于Linux的网络安全策略和保护措施因为较之微软的Windows NT网络操作系统而言,Linux系统具有更好的稳定性、效率性和安全性。
操作系统需具备相当的实时性、可靠性和稳定性,因此整个系统广泛采用Linux操作系统作为应用的基础平台。
而Linux系统内核是开放的源代码,网络本身的安全也面临着重大的挑战,随之而来的信息安全问题也日益突出。
Linux网络操作系统是用于管理计算机网络中的各种软硬件资源,实现资源共享,并为整个网络中的用户提供服务,保证网络系统正常运行的一种系统软件。
如何确保网络操作系统的安全,是网络安全的根本所在。
只有网络操作系统安全可靠,才能保证整个网络的安全。
因此,详细分析Linux系统的安全机制,找出它可能存在的安全隐患,给出相应的安全策略和保护措施是十分必要的。
1. Linux网络操作系统的基本安全机制Linux网络操作系统提供了用户帐号、文件系统权限和系统日志文件等基本安全机制,如果这些安全机制配置不当,就会使系统存在一定的安全隐患。
因此,网络系统管理员必须谨慎地设置这些安全机制。
1.1 Linux系统的用户帐号在Linux系统中,用户帐号是用户的身份标志,它由用户名和用户口令组成。
在Linux系统中,系统将输入的用户名存放在/etc/passwd文件中,而将输入的口令以加密的形式存放在/etc/shadow文件中。
在正常情况下,这些口令和其他信息由操作系统保护,能够对其进行访问的只能是超级用户(root)和操作系统的一些应用程序。
但是如果配置不当或在一些系统运行出错的情况下,这些信息可以被普通用户得到。
进而,不怀好意的用户就可以使用一类被称为“口令破解”的工具去得到加密前的口令。
1.2 Linux的文件系统权限Linux文件系统的安全主要是通过设置文件的权限来实现的。
每一个Linux 的文件或目录,都有3组属性,分别定义文件或目录的所有者,用户组和其他人的使用权限(只读、可写、可执行、允许SUID、允许SGID等)。
centos7⽤户,组及⽂件权限管理centos7安装过程中如果没有创建⽤户的话,默认只有ROOT⽤户,这个⽤户是具有最⾼权限的帐户,可以做任何事情,但实际⽣产环境中我们⼀般不会使⽤这个⽤户,因为权限太⼤了,很危险。
所以在⽣产环境中就要创建⼀个或多个⽤户帐户,分配合适的权限来使⽤,⽤过windows的都知道,windows也是多⽤户,多任务的操作系统,每个⽤户也都有配置⽂件,⽤来定义和保存⽤户的环境变量,包括⽤户的家⽬录,桌⾯等的配置。
那么linux同样也是多⽤户,多任务操作系统,同样可以创建多个⽤户,定义每个⽤户的所属组,家⽬录,登录的shell,邮件等等环境变量。
在centos7中和⽤户相关的配置⽂件主要包括以下这么⼏个/etc/passwd此⽂件保存着:⽤户名:密码:UID:GID:⽤户描述:主⽬录:登录shell/etc/shadow此⽂件记录的⾏与passwd中的⾏⼀⼀对应,保存着:⽤户名:密码:最后⼀次修改时间:最⼩时间间隔:最⼤时间间隔:警告时间:不活动时间:失效时间:标志/etc/group此⽂件保存着:⽤户组名称:⽤户组密码:GID:⽤户列表(多个⽤户之间⽤,分隔)/etc/gshadow此⽂件与/etc/group⽂件中的⾏对应,保存着:⽤户组名:加密码后的密码:组管理员(多个⽤,分隔):组成员(多个⽤,分隔)/etc/default/useradd这个⽂件主要保存着创建账户时的默认值,使⽤useradd –D查看到的内容就是这个⽂件中的内容。
/etc/skel这是个⼀个⽬录,相当于windows中公⽤的账号环境设置,⽐如,可以在这个⽬录⾥放⼀个⽂本⽂件,当创建⽤户时,在每个⽤户的家⽬录⾥都可以看到这个⽂件,当然也可以放置公共的配置⽂件,创建⽤户时就可以延⽤这个配置。
/etc/login.defs这个是⽤来设置⽤户帐号限制的配置⽂件,⽐如密码的最⼤过期天数,长度等,但优先级⼩于/etc/shadow/etc/profile这个⽂件主要⽤来保存环境变量的,是全局的,由系统管理员管理~/.bashrc .bash_history .bash_profile .bash_logout 等这些⽂件主要⽤来定义⽤户的环境变量的。
unix⽂件权限⼀、UNIX下关于⽂件权限的表⽰⽅法和解析SUID 是 Set User ID, SGID 是 Set Group ID的意思。
UNIX下可以⽤ls -l 命令来看到⽂件的权限。
⽤ls命令所得到的表⽰法的格式是类似这样的:-rwxr-xr-x 。
下⾯解析⼀下格式所表⽰的意思。
这种表⽰⽅法⼀共有⼗位:9 8 7 6 5 4 3 2 1 0- r w x r - x r - x第9位表⽰⽂件类型,可以为p、d、l、s、c、b和-:p表⽰命名管道⽂件d表⽰⽬录⽂件l表⽰符号连接⽂件-表⽰普通⽂件s表⽰socket⽂件c表⽰字符设备⽂件b表⽰块设备⽂件第8-6位、5-3位、2-0位分别表⽰⽂件所有者的权限,同组⽤户的权限,其他⽤户的权限,其形式为rwx:r表⽰可读,可以读出⽂件的内容w表⽰可写,可以修改⽂件的内容x表⽰可执⾏,可运⾏这个程序没有权限的位置⽤-表⽰例⼦:ls -l myfile显⽰为:-rwxr-x--- 1 foo staff 7734 Apr 05 17:07 myfile表⽰⽂件myfile是普通⽂件,⽂件的所有者是foo⽤户,⽽foo⽤户属于staff组,⽂件只有1个硬连接,长度是7734个字节,最后修改时间4⽉5⽇17:07。
所有者foo对⽂件有读写执⾏权限,staff组的成员对⽂件有读和执⾏权限,其他的⽤户对这个⽂件没有权限。
如果⼀个⽂件被设置了SUID或SGID位,会分别表现在所有者或同组⽤户的权限的可执⾏位上。
例如:1、-rwsr-xr-x 表⽰SUID和所有者权限中可执⾏位被设置2、-rwSr--r-- 表⽰SUID被设置,但所有者权限中可执⾏位没有被设置3、-rwxr-sr-x 表⽰SGID和同组⽤户权限中可执⾏位被设置4、-rw-r-Sr-- 表⽰SGID被设置,但同组⽤户权限中可执⾏位没有被社其实在UNIX的实现中,⽂件权限⽤12个⼆进制位表⽰,如果该位置上的值是1,表⽰有相应的权限:11 10 9 8 7 6 5 4 3 2 1 0S G T r w x r w x r w x第11位为SUID位,第10位为SGID位,第9位为sticky位,第8-0位对应于上⾯的三组rwx位。
Linux⽂件权限详解在Linux中的每⼀个⽂件或⽬录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些⽂件和⽬录。
通过设定权限可以从以下三种访问⽅式限制访问权限:只允许⽤户⾃⼰访问;允许⼀个预先指定的⽤户组中的⽤户访问;允许系统中的任何⽤户访问。
同时,⽤户能够控制⼀个给定的⽂件或⽬录的访问程度。
⼀个⽂件活⽬录可能有读、写及执⾏权限。
当创建⼀个⽂件时,系统会⾃动地赋予⽂件所有者读和写的权限,这样可以允许所有者能够显⽰⽂件内容和修改⽂件。
⽂件所有者可以将这些权限改变为任何他想指定的权限。
⼀个⽂件也许只有读权限,禁⽌任何修改。
⽂件也可能只有执⾏权限,允许它想⼀个程序⼀样执⾏。
三种不同的⽤户类型能够访问⼀个⽬录或者⽂件:所有着、⽤户组或其他⽤户。
所有者就是创建⽂件的⽤户,⽤户是所有⽤户所创建的⽂件的所有者,⽤户可以允许所在的⽤户组能访问⽤户的⽂件。
通常,⽤户都组合成⽤户组,例如,某⼀类或某⼀项⽬中的所有⽤户都能够被系统管理员归为⼀个⽤户组,⼀个⽤户能够授予所在⽤户组的其他成员的⽂件访问权限。
最后,⽤户也将⾃⼰的⽂件向系统内的所有⽤户开放,在这种情况下,系统内的所有⽤户都能够访问⽤户的⽬录或⽂件。
在这种意义上,系统内的其他所有⽤户就是other⽤户类。
每⼀个⽤户都有它⾃⾝的读、写和执⾏权限。
第⼀套权限控制访问⾃⼰的⽂件权限,即所有者权限。
第⼆套权限控制⽤户组访问其中⼀个⽤户的⽂件的权限。
第三套权限控制其他所有⽤户访问⼀个⽤户的⽂件的权限,这三套权限赋予⽤户不同类型(即所有者、⽤户组和其他⽤户)的读、写及执⾏权限就构成了⼀个有9种类型的权限组。
--------------------------------------分割线 --------------------------------------Linux⽂件权限和访问模式链接UNIX⽂件权限之“设置⽤户ID位”Linux ⽂件权限 chmod chownLinux权限补充:rwt rwT rws rwS 特殊权限Linux⽤户及⽤户组权限Linux三个特殊权限 setuid setgid stick bitLinux系统⼊门教程:Linux ⽂件权限简单说明Linux下⽤户组、⽂件权限详解--------------------------------------分割线 --------------------------------------我们可以⽤-l参数的ls命令显⽰⽂件的详细信息,其中包括权限。
Shell脚本中的用户和权限管理的高级技巧在Shell脚本中,用户和权限的管理是非常重要的一项技巧。
通过合理地设置用户和权限,可以确保系统的安全性和稳定性。
本文将介绍一些Shell脚本中用户和权限管理的高级技巧。
一、用户管理在Shell脚本中,可以通过用户管理命令来管理用户,例如"adduser"、"usermod"和"userdel"等命令。
1. 添加用户使用"adduser"命令可以添加新用户。
在使用"adduser"命令时,可以通过参数指定一些附加属性,如用户的家目录、默认Shell环境等。
例如,下面的命令将添加一个名为"testuser"的新用户:adduser testuser2. 修改用户属性使用"usermod"命令可以修改用户的属性。
例如,可以使用"usermod -l"命令修改用户的用户名,使用"usermod -d"命令修改用户的家目录。
例如,下面的命令将将用户名为"testuser"的用户修改为"newuser":usermod -l newuser testuser3. 删除用户使用"userdel"命令可以删除用户。
例如,下面的命令将删除名为"testuser"的用户:userdel testuser二、权限管理在Shell脚本中,可以使用权限管理命令来管理文件和目录的权限,例如"chmod"和"chown"等命令。
1. 修改文件权限使用"chmod"命令可以修改文件的权限。
其中,权限可以使用数字或符号表示。
例如,使用数字表示权限时,可以使用"chmod 755 file"命令将文件的权限设置为rwxr-xr-x。
深入理解linux的权限设置和SUID,SGID以及粘滞位我们知道文件的权限可以用三个八进制数字表示。
其实文件的权限应该用四个八进制来表示,不过用 ls -l 命令时,只显示三个。
那个没有显示的八进制数字其实是第一个,它用来设定一些特殊权限。
这个八进制数字的三个位是:SUID SGID sticky-bit的含义分别是:set uid ;set gid;sticky bit区别每一个文件有所有者及组编号,set uid ;set gid可以改变用户对文件具有的权限:写和执行.setuid: 在执行时具有文件所有者的权限.setgid: 设置目录. 一个目录被标上setgid位,此目录下创建的文件继承该目录的属性.sticky bit: 该位可以理解为防删除位. 设置sticky bit位后,就算用户对目录具有写权限,但也只能添加文件而不能删除文件。
如何设置:操作这些标志与操作文件权限的命令是一样的, 都是 chmod. 有两种方法来操作,1) chmod u+s temp -- 为temp文件加上setuid标志. (setuid 只对文件有效,U=用户) chmod g+s tempdir -- 为tempdir目录加上setgid标志 (setgid 只对目录有效,g=组名) chmod o+t temp -- 为temp文件加上sticky标志 (sticky只对文件有效)2) 采用八进制方式. 这一组八进制数字三位的意义如下,abca - setuid位, 如果该位为1, 则表示设置setuidb - setgid位, 如果该位为1, 则表示设置setgidc - sticky位, 如果该位为1, 则表示设置sticky设置后, 可以用 ls -l 来查看. 如果本来在该位上有x, 则这些特殊标志显示为小写字母 (s, s, t). 否则, 显示为大写字母 (S, S, T)如:rwsrw-r-- 表示有setuid标志 (rwxrw-r--:rwsrw-r--)rwxrwsrw- 表示有setgid标志 (rwxrwxrw-:rwxrwsrw-)rwxrw-rwt 表示有sticky标志 (rwxrw-rwx:rwxrw-rwt)理解文件权限所谓的文件权限,是指对文件的访问权限,包括对文件的读、写、删除、执行。
对SETGID 的验证经过:
如果给一个可执行文件的属组,再给此文件设置 setgid 位,
那么,属于此组的用户都可以执行此文件,其他的用户不行。
[root@dns02 ~]# groupadd operators
[root@dns02 ~]# ls -lsa /bin/mount
64 -rwsr-xr-x 1 root root 60432 Jan 20 2010 /bin/mount
[root@dns02 ~]# chgrp operators /bin/mount
[root@dns02 ~]#
[root@dns02 ~]# ls -lsa /bin/mount
64 -rwxr-xr-x 1 root operators 60432 Jan 20 2010 /bin/mount
给可执行文件 /bin/mount 设置 setgid,然后去掉其他用户的执行权限
[root@dns02 ~]# chmod g+s,o-rwx /bin/mount
[root@dns02 ~]# useradd gao
[root@dns02 ~]# usermod -G operators gao
[root@dns02 ~]# useradd jian
用属于组 operators 的用户 gao 来验证,看是否可以执行 /bin/mount 指令
[root@dns02 ~]# su - gao
[gao@dns02 ~]$ /bin/mount
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
mount: warning /etc/mtab is not writable (e.g. read-only filesystem).
It's possible that information reported by mount(8) is not
up to date. For actual information about system mount points
check the /proc/mounts file.
[gao@dns02 ~]$ exit
logout
su
用不属于组 operators 的用户 jian 来验证,看是否可以执行 /bin/mount 指令[root@dns02 ~]# su - jian
[jian@dns02 ~]$ /bin/mount
-bash: /bin/mount: Permission denied
[jian@dns02 ~]$ ls
[jian@dns02 ~]$ exit
logout。