三种特殊权限简介linux
SUID数据库
当一个设置了SUID 位的可执行文件被执行时,该文件将以全部者的身份运行,也就是说不管谁来执行这个文件,他都有文件全部者的特权。安全
若是全部者是 root 的话,那么执行人就有超级用户的特权了。oracle
SGIDapp
当一个设置了SGID 位的可执行文件运行时,该文件将具备所属组的特权, 任意存取整个组所能使用的系统资源。ui
若一个目录设置了SGID,则全部被复制到这个目录下的文件, 其所属的组都会被重设为和这个目录同样,除非在复制文件时加上-p (preserve,保留文件属性)的参数,才能保留原来所属的群组设置。操作系统
sticky-bitblog
对一个文件设置了sticky-bit以后,尽管其余用户有写权限, 也必须由属主执行删除、移动等操做。继承
对一个目录设置了sticky-bit以后,存放在该目录的文件仅准许其属主执行删除、 移动等操做。索引
特殊权限的数值表示
三种特殊权限能够用单独的一位8进制数值表示
SUID、SGID和sticky-bit的数值表示
SUID SGID sticky 二进制 八进制 说明
- - - 000 0 不设置特殊权限
- - t 001 1 只设置sticky
- s - 010 2 只设置SGID
- s t 011 3 只设置SGID和sticky
s - - 100 4 只设置SUID
s - t 101 5 只设置SUID和sticky
s s - 110 6 只设置SUID和SGID
s s t 111 7 设置三种特殊权限
咱们知道了文件的权限能够用三个八进制数字表示。其实文件的权限应该用四个八进制来表示,不过用 ls -l 命令时,只显示三个罢了。那个没有显示的八进制数字实际上是第一个,它用来设定一些特殊权限。这个八进制数字的三个位是:
SUID SGID sticky-bit
它们的含义是:
SUID
当设置了SUID 位的文件被执行时,该文件将以全部者的身份运行,也就是说不管谁来执行这个文件,他都有文件全部者的特权。若是全部者是 root 的话,那么执行人就有超级用户的特权了。这时该位将变成一个安全漏洞,所以不要轻易设置该位。
SGID
与上面的内容相似。文件运行时,运行者将具备所属组的特权。
sticky-bit
sticky 位要求操做系统既是在可执行程序退出后,仍要在内存中保留该程序的映象。这样作是为了节省大型程序的启动时间。可是会占用系统资源。所以设置该位,不如把程序写好。
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) 采用八进制方式. 这一组八进制数字三位的意义以下,
abc
a - setuid位, 若是该位为1, 则表示设置setuid
b - setgid位, 若是该位为1, 则表示设置setgid
c - 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)
理解文件权限
所谓的文件权限,是指对文件的访问权限,包括对文件的读、写、删除、执行。Linux 是一个多用户操做系统,它容许多个用户同时登陆和工做。所以 Linux 将一个文件或目录与一个用户和组联系起来。请看下面的例子:
drwxr-xr-x 5 root root 1024 Sep 13 03:27 Desktop
与文件权限相关联的是第1、第3、第四个域。第三个域是文件的全部者,第四个域是文件的所属组,而第一个域则限制了文件的访问权限。在这个例子中,文件的全部者是 root,所属的组是 root,文件的访问权限是 drwxr-xr-x。对于文件和目录讲,每一个文件和目录都有一组权限标志和它们结合在一块儿,在上例中就是第一个域中的内容。下面来仔细分析这个域中各个符号的意义:
该域由 10 个字符组成,能够把它们分为四组,具体含义分别是:
d rwx r-x r-x
文件类型 全部者权限标志 组权限标志 其余用户权限标志
其中:
文件类型:第一个字符。因为 Linux 系统对与设备、目录、文件都看成是文件来处理,所以该字符代表此文件的类型,字符与对应的意义以下表: 文件标志
文件类型
例子
-
普通文件
数据文件、
ASCII 纯文本文件、程序
d
目录
/bin
b
块设备
/dev/hda(第一个 IDE 硬盘)
c
字符设备
/dev/ttyS1(与 DOS 种的串口 2 等同)
s
套接字
/dev/log
p
命名管道
/dev/initctl(与“|”等同)
l
符号连接
/dev/modem->/dev/ttyS1
权限标志:
对每一个文件或目录都有 4 类不一样的用户。每类用户各有一组读、写和执行(搜索)文件的访问权限,这 4 类用户是:
root:系统特权用户类,既 UID = 0 的用户。
owner:拥有文件的用户。
group:共享文件的组访问权限的用户类的用户组名称。
world:不属于上面 3 类的全部其余用户。
做为 root,他们自动拥有了全部文件和目录的全面的读、写和搜索的权限,因此没有必要明确指定他们的权限。其余三类用户则能够在耽搁文件或者目录的基础上别受权或撤消权限。所以对另外三类用户,一共 9 个权限位与之对应,分为 3 组,每组 3 个,分别用 r、w、x 来表示,分别对应 owner、group、world。
权限位对于文件和目录的含义有些许不一样。每组 3 个字符对应的含义从左至右的顺序,对于文件来讲是:读文件的内容(r)、写数据到文件(w)、作为命令执行该文件(x)。对于目录来讲是:读包含在目录中的文件名称(r)、写信息到目录中去(增长和删除索引点的链接)、搜索目录(能用该目录名称做为路径名去访问它所包含的文件或子目录)。具体来讲就是:
1. 有只读权限的用户不能用 cd 进入该目录;还必须有执行权限才能进入。
2. 有执行权限的用户只有在知道文件名并拥有该文件的读权限的状况下才能够访问目录下的文件。
3. 必须有读和执行权限才可使用 ls 列出目录清单,或使用 cd 进入目录。
4. 如用户有目录的写权限,则能够建立、删除或修改目录下的任何文件或子目录,既是该文件或子目录属于其余用户。
修改文件权限
首先讲修改文件的全部权,使用 chown 和 chgrp 命令:
chown new_user file or directory:修改文件或目录的全部者。
chgrp new_group file or directory:修改文件或目录的所属组。
这里须要注意的是:普通用户不能将文件或目录的全部权交与他人,只有 root 有这一权限。可是普通用户有权改变文件或目录的所属组。
因为每类用户的权限都是由 rwx 三位组成,所以能够用三个八进制数字表示文件的访问权。一个八进制数字能够用三个二进制数字表示,那么与其对应,权值为 4 的位对应 r,权值为 2 的位对应 w,权值为 1 的位对应 x。对于一类用户,将这三位与其对应的权值相乘求和,就能够得出对该类用户的访问权限。
改变文件访问权限的命令是 chmod,格式是:
chmod permission file_name
好比 chmod 764 a.txt,它表示对于文件的全部者,具备对该文件读、写、执行的权限。对于文件所属组的用户,拥有读、写的权限。对于其余用户,只有读权限。
这里须要注意的是:文件的建立者是惟一能够修改该文件访问权限的普通用户,另一个能够修改文件访问权限的用户是 root。
还有一种表示方法,就是用字符串来设定文件访问权限。其中读用 r 表示,写用 w 表示,执行用 x 表示;全部者用 u 表示,组用户用 g 表示,其余用户用 o 表示,全部用户用 a 表示。
咱们平时安装 gi时,看到的oracle命令,就是带了s的:
[oracle@rac1 test]$ ls -ltr /u01/app/grid/product/11.2.0/grid/bin/oracle
-rwsrwsr-x 1 grid dba 209854149 Jun 1 20:17 /u01/app/grid/product/11.2.0/grid/bin/oracle
更多数据库和linux技术内容欢迎搜索“重庆思庄”