Linux 文件目录特殊权限设定(SUID,SGID,SBIT)

初窥Linux之文件权限,1、用户和文件所有者的概念,Linux文件及目录的权限设定,还有一些特殊的权限设定用来满足特定的目录,一、文件所有者与用户组,一个文件有很多属性,文件及目录的权限设定,还有一些特殊的权限设定用来满足特定的目录

图片 4

3)SBIT

2、权限

权限的表现方式为rwx: 
   r表示可读,能够读出文件的剧情 
   w表示可写,能够修改文件的开始和结果 
   x代表可实践,可运维这些程序,对于目录为能够步向该目录

标记代表:chmod u=rwx,g=rwxs,o=r file

3、Sticky Bit

Sticky Bit:
在叁个公共目录,每一种都能够创立文件,删除自身的文件,但无法去除外人的文书;
chmod o+t DIR
chmod o-t DIR

###针对前面的示例,在公共目录dbateam中,需要设定在该目录创建文件的用户只能删除自身的文件,而不能删除其他用户创建的文件

[root@desktop ~]# chmod o+t /dbateam

[root@desktop ~]# ls -hltr / |grep dbateam

drwxrwsr-t.  2 root dbateam  38 Aug 14 17:30 dbateam



###下面使用sybase用户创建文件

[sybase@desktop ~]$ echo "don't touch">>/dbateam/sybase.03



###下面使用oracle用户来删除文件

[oracle@desktop ~ ]$ cd /dbateam

[oracle@desktop dbateam]$ ls -hltr

-rw-rw-r--. 1 sybase sybase  8 Aug 14 17:25 sybase.01

-rw-rw-r--. 1 sybase dbateam 28 Aug 14 17:32 sybase.02

-rw-rw-r--. 1 sybase dbateam 12 Aug 15 09:08 sybase.03

[oracle@desktop dbateam]$ rm -rf sybase.03

rm: cannot remove ‘sybase.03’: Operation not permitted  ###此处提示没有权限

[oracle@desktop dbateam]$ echo "Oraclefile">oracle.01

[oracle@desktop dbateam]$ rm oracle.01      ###此处可以删除自身创建的文件

 

三、umask

umask指的便是文件或目录的私下认可权限。当我们登入到服务器之后,须求创设文件只怕目录,缺省的场馆下,会为当下文件或目录设定三个权力,那那几个权力到底是什么呢?这就由umask的值来规定。大家清楚,基于文件或目录的权柄包含了所属客户,所属组以及任何组,因而,至少供给五个位来设定。结合地点描述的SUID,SGID,SBIT那组,也正是说要求4个位来设定umask。下边直接通过示范来驾驭umask的用法及意义。

当前umask为0022,也就是说新创建的目录和文件需要减掉0022这些权限
即需要减掉-----w--w-,因此新创建的目录和文件的权限应当如下:

文件: (-rw-rw-rw-) - (-----w--w-) = -rw-r--r--
目录: (drwxrwxrwx) - (-----w--w-) = drwxr-xr-x

###演示
[root@desktop ~]# umask
0022
[root@desktop ~]# echo "test mask">/tmp/project/umask.01
[root@desktop ~]# ls -hltr /tmp/project/
total 4.0K
-rw-r--r--. 1 root root 10 Aug 15 09:43 umask.01

假定umask 为 0003 ,所以拿掉的权限为 --------wx,因此:
文件: (-rw-rw-rw-) - (--------wx) = -rw-rw-r--
目录: (drwxrwxrwx) - (--------wx) = drwxrwxr--

[root@desktop ~]# umask 0003
[root@desktop ~]# umask
0003
[root@desktop ~]# mkdir -pv /tmp/temp01
mkdir: created directory ‘/tmp/temp01’
[root@desktop ~]# ls -hltr /tmp |grep temp
drwxrwxr--. 2 root root 6 Aug 15 09:55 temp01

既然umask有4个位,能否在第一位也设定值呢,答案是否定的。无法设定特殊位。
[root@desktop ~]# umask 4003
-bash: umask: 4003: octal number out of range
[root@desktop ~]# umask 1003
-bash: umask: 1003: octal number out of range
[root@desktop ~]# umask 7003
-bash: umask: 7003: octal number out of range

(2)当给予目录SGID时:试行者步入目录后,有作顾客组为目录的客商组,比方顾客创立二个文书,则此文件的客商组为目录的客商组;

4、基于数字艺术权限设定

对此文件目录的权能设定,可以依照数字的点子设定,如以下:
r:4
w:2
x:1

出于有了特种权限位,由此在rwx的根底之上,又加多了二个新的位,即除去前面描述的格局之外,基于数字艺术设定也得以。
SUID:4
SGID:2
SBIT:1

假设要将一个文本权限改为『-rwsr-xr-x』时,由于s在使用者权限中,所以是
SUID ,由此, 在本来的 755 从前还要加上 4 ,也等于:『 chmod 4755
filename 』来配置!
其它,还应该有大 S 与大 T 的发生喔!大 S 与大 T
是出于被设定的文本或目录上的user, group 以及 others 都未有 x
这么些可运营的注解( 因为 666 嘛 ),所以,那么些 S, T
代表的正是『空的』啦!即文件或目录的具有者都力不能够及运行了,哪个地方来的权柄给其余人使用?当然正是空的啊!
^_^

演示

###创建一个临时目录

[root@desktop ~]# mkdir -pv /tmp/project

mkdir: created directory ‘/tmp/project’

[root@desktop ~]# ls -hltr /tmp |grep project

drwxr-xr-x. 2 root root  6 Aug 15 09:28 project



###为临时目录配置SUID,如下属主位置产生了s

[root@desktop ~]# chmod 4755 /tmp/project/

[root@desktop ~]# ls -hltr /tmp |grep project

drwsr-xr-x. 2 root root  6 Aug 15 09:28 project



###修改目录权限为4766

[root@desktop ~]# chmod 4766 /tmp/project/

[root@desktop ~]# ls -hltr /tmp |grep project

drwsrw-rw-. 2 root root  6 Aug 15 09:28 project



###再次修改目录权限,此时产生了大S和大T,因为属组和其他组没有x权限

[root@desktop ~]# chmod 7766 /tmp/project/

[root@desktop ~]# ls -hltr /tmp |grep project

drwsrwSrwT. 2 root root  6 Aug 15 09:28 project

 

2、SGID

SGID 是 Set Group
ID的缩写,SUID是在文书的持有者等第,而SGID则是在客户组品级生效,即 
  SGID 对二进制造进度序有用; 
  程序运转者对于该程序来说,需具备 x 的权位; 
  运行者在运转的进程准将会赢得该程序顾客组权限

SGID:
运维某前后相继时,相应进程的属组是前后相继文件自己的属组,实际不是运转者所属的基本组; 
  chmod g+s FILE 
  chmod g-s FILE

对此持有SGID的目录,除了可举办的二进制造进程序外,协理部分群组天性。 
一旦当前服务器存在客户组 dbateam以及顾客oracle mysql sybase 
今昔可望以此3个客商能够分享某叁个特定的挂载目录,都有照看的权柄进行读写以及能够编辑读写其余顾客创制的文件

###以下创建一个组以及三个用户,并将组作为用户的附加组
# groupadd dbateam 
# useradd mysql -G dbateam
# useradd oracle -G dbateam
# useradd sybase -G dbateam

###创建一个目录并挂载
# mkdir -pv /dbateam 
# mount /dev/sdb1 /dbateam
# ls -hltr / |grep dbateam
drwxr-xr-x 2 root root 4.0K Aug 14 17:17 dbateam

# ### Author : Leshami QQ/Weixin : 645746311
# ### Blog : http://blog.csdn.net/leshami

###更改目录的属组为dbateam
# chown -R :dbateam /dbateam/
# ls -hltr / |grep dbateam
drwxr-xr-x. 2 root dbateam 6 Aug 14 17:17 dbateam

###使用创建的用户登陆并测试目录权限,如下,无写权限
[root@desktop ~]# su - sybase
[sybase@desktop ~]$ echo "sysbase">/dbateam/sybase.01
-bash: /dbateam/sybase.01: Permission denied

[root@desktop ~]# su - oracle
[oracle@desktop ~]$ echo "oracle">/dbateam/oracle.01
-bash: /dbateam/oracle.01: Permission denied

###对目录授予写入权限
[root@desktop ~]# chmod g+w /dbateam/
[root@desktop ~]# ls -hltr / |grep dbateam
drwxrwxr-x. 2 root dbateam 6 Aug 14 17:17 dbateam

###再次写入文件,此时成功
[sybase@desktop ~]$ echo "sysbase">/dbateam/sybase.01
[sybase@desktop ~]$ ls -hltr /dbateam/sybase.01
-rw-rw-r--. 1 sybase sybase 8 Aug 14 17:25 /dbateam/sybase.01 
###如上,此时文件的属主和属组都是sybase,非附加组,也就是说其他用户可以读取,但是无法修改

###下面为目录设定SGID,如下,目录属组权限变为rws
[root@desktop ~]# chmod g+s /dbateam/
[root@desktop ~]# ls -hltr / |grep dbateam
drwxrwsr-x. 2 root dbateam 22 Aug 14 17:25 dbateam

###再次写入一个文件
[sybase@desktop ~]$ echo "sybase02" >/dbateam/sybase.02
[sybase@desktop ~]$ ls -hltr /dbateam/
total 8.0K
-rw-rw-r--. 1 sybase sybase 8 Aug 14 17:25 sybase.01
-rw-rw-r--. 1 sybase dbateam 9 Aug 14 17:30 sybase.02
###如上,此时文件sybase.02的所属组变成了dbateam,而不是先前的sybase,此时其他用户可以进行修改。

###其他用户尝试修改
[oracle@desktop ~]$ echo "add oracle comment" >>/dbateam/sybase.02
[oracle@desktop ~]$ more /dbateam/sybase.02
sybase02
add oracle comment
[oracle@desktop ~]$ ls -hltr /dbateam
total 8.0K
-rw-rw-r--. 1 sybase sybase 8 Aug 14 17:25 sybase.01
-rw-rw-r--. 1 sybase dbateam 28 Aug 14 17:32 sybase.02

通过上面的例子得知,
当目录的属组具备了s权限后,该目录下创建的文件不再以用户自身的属组(基本组)作为文件的属组,而是上级目录的属组
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65

 

2、权限

权力的表现情势为rwx:
?? r代表可读,可以读出文件的从头到尾的经过
?? w代表可写,能够修改文件的剧情
?? x代表可实行,可运维那些程序,对于目录为能够进来该目录

 

二、SUID,SGID,Sticky Bit

特别权限指的是针对性第一点描述的rwx权限之外的权柄,即x实施权限可以发生变化为s也许S等。 
鉴于文件存在属主与属组,因而也就有属主与属组的s恐怕S权限。

ls –time=atime/ctime

一、文件类型及权限

在投机的主文件夹下,试行ls命令,获得下边包车型大巴施行结果:

1、SUID

SUID 是 Set User ID的缩写 
SUID:
当运转某前后相继时,相应进度的属主是程序文件自个儿的属主,实际不是运维者; 
  chmod u+s FILE 
  chmod u-s FILE 
  即使FILE自个儿原本就有实行权限,则SUID展现为s;不然展现S; 
  简言之,当大家运营有个别二进制造进程序,该程序调用了另外非对象,此指标非运营者全数,也不辜负有相应权限制时间,此时不能得逞实行。不过当大家为这几个二进制造进程序予以了SUID,则被调用的这些目的会被一时赋予该目标的主人权限

下边直接演用鸟哥的演示来说述那个标题

# ls -hltr /usr/bin/passwd /etc/shadow 
-rwsr-xr-x. 1 root root 31K Feb 22 2012 /usr/bin/passwd
###权限为rws 
———-. 1 root root 950 Aug 25 2016 /etc/shadow

密码文件/etc/shadow唯有root客商全体修改权限,那别的客户是如何修改本身密码的吗,那正是出于命令passwd拥有SUID权限 
  a、vbird 对於 /usr/bin/passwd 这些顺序来讲是装有 x 权限的,表示 vbird
能运转 passwd; 
  b、passwd 的具有者是 root 这些帐号; 
  c、vbird 运转 passwd 的长河中,会『方今』获得 root 的权能; 
  d、/etc/shadow 就足以被 vbird 所运转的 passwd 所修改。 
但要是 vbird 使用 cat 去读取 /etc/shadow 时,他能够读取吗?因为 cat
不辜负有 SUID 的权限,所以 vbird 运维 『cat /etc/shadow』 时,是无法读取
/etc/shadow 的。 
正如暗示图来表明: 
图片 1

对此地点的情况,假定希望vbird客商能够通过cat访谈/etc/shadow,肿么实现呢,那便是授予s权限啊

# ls -hltr /bin/cat
-rwxr-xr-x. 1 root root 48K Nov 22 2013 /bin/cat
# chmod u+s /bin/cat
# ls -hltr /bin/cat 
-rwsr-xr-x. 1 root root 48K Nov 22 2013 /bin/cat ###属主的x权限变成了s权限
$ cat /etc/shadow | head -3
root:$6$3KDwLJ7Cb.J2.ZMcmhHqThe/YvQ1tQtQOZX5gfbyOg/N.jl7OBzV.ZAzVzA/:17163:0:99999:7:::
bin:*:15980:0:99999:7:::
daemon:*:15980:0:99999:7:::
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

STID使用总括 
  SUID 权限仅对二进制程序(binary program)有效; 
  运维者对于该程序须要具有 x 的可运营权限; 
  本权限仅在运作该程序的进度中央银卓有成效 (run-time); 
  运转者将兼具该程序具有者 (owner) 的权力。

STID使用示例:添加非oracle用户到dba,
oinstall组

 

三、umask

umask指的正是文本或目录的默许权限。当大家登入到服务器之后,须求创立文件或然目录,缺省的事态下,会为当前文件或目录设定三个权力,那那几个权力到底是什么样吗?那就由umask的值来规定。大家精晓,基于文件或目录的权位包括了所属客商,所属组以及其他组,由此,至少须要四个位来设定。结合地点描述的SUID,SGID,SBIT那组,约等于说要求4个位来设定umask。下边直接通过演示来明白umask的用法及职能。

当前umask为0022,也就是说新创建的目录和文件需要减掉0022这些权限

即需要减掉-----w--w-,因此新创建的目录和文件的权限应当如下:



文件: (-rw-rw-rw-) - (-----w--w-) = -rw-r--r--

目录: (drwxrwxrwx) - (-----w--w-) = drwxr-xr-x



###演示

[root@desktop ~]# umask

0022

[root@desktop ~]# echo "test mask">/tmp/project/umask.01

[root@desktop ~]# ls -hltr /tmp/project/

total 4.0K

-rw-r--r--. 1 root root 10 Aug 15 09:43 umask.01



假定umask 为 0003 ,所以拿掉的权限为 --------wx,因此:

文件: (-rw-rw-rw-) - (--------wx) = -rw-rw-r--

目录: (drwxrwxrwx) - (--------wx) = drwxrwxr--



[root@desktop ~]# umask 0003

[root@desktop ~]# umask

0003

[root@desktop ~]# mkdir -pv /tmp/temp01

mkdir: created directory ‘/tmp/temp01’

[root@desktop ~]# ls -hltr /tmp |grep temp

drwxrwxr--. 2 root root  6 Aug 15 09:55 temp01



既然umask有4个位,能否在第一位也设定值呢,答案是否定的。无法设定特殊位。

[root@desktop ~]# umask 4003

-bash: umask: 4003: octal number out of range

[root@desktop ~]# umask 1003

-bash: umask: 1003: octal number out of range

[root@desktop ~]# umask 7003

-bash: umask: 7003: octal number out of range

c、本权限在实践该程序的长河中有效;

4、基于数字艺术权限设定

对此文件目录的权能设定,能够依照数字的方式设定,如以下: 
r:4 
w:2 
x:1

出于有了优异权限位,由此在rwx的根基之上,又增加了三个新的位,即除去前方描述的章程之外,基于数字艺术设定也得以。 
SUID:4 
SGID:2 
SBIT:1

万一要将三个文件权限改为『-rwsr-xr-x』时,由于s在使用者权限中,所以是
SUID ,因而, 在原本的 755 从前还要加上 4 ,也正是:『 chmod 4755
filename 』来配置! 
别的,还会有大 S 与大 T 的发出喔!大 S 与大 T
是由于被设定的公文或目录上的user, group 以及 others 都不曾 x
这一个可运营的标识( 因为 666 嘛 ),所以,那一个 S, T
代表的正是『空的』啦!即文件或目录的具备者都没有办法儿运营了,哪儿来的权能给其外人使用?当然正是空的啦!
^_^

演示
###创建一个临时目录
[root@desktop ~]# mkdir -pv /tmp/project
mkdir: created directory ‘/tmp/project’
[root@desktop ~]# ls -hltr /tmp |grep project
drwxr-xr-x. 2 root root 6 Aug 15 09:28 project

###为临时目录配置SUID,如下属主位置产生了s
[root@desktop ~]# chmod 4755 /tmp/project/
[root@desktop ~]# ls -hltr /tmp |grep project
drwsr-xr-x. 2 root root 6 Aug 15 09:28 project

###修改目录权限为4766
[root@desktop ~]# chmod 4766 /tmp/project/
[root@desktop ~]# ls -hltr /tmp |grep project
drwsrw-rw-. 2 root root 6 Aug 15 09:28 project

###再次修改目录权限,此时产生了大S和大T,因为属组和其他组没有x权限
[root@desktop ~]# chmod 7766 /tmp/project/
[root@desktop ~]# ls -hltr /tmp |grep project
drwsrwSrwT. 2 root root 6 Aug 15 09:28 project
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

 

1、SUID

SUID 是 Set User ID的缩写
SUID:
当运行某前后相继时,相应进程的属主是程序文件自个儿的属主,实际不是运营者;
??chmod u+s FILE
??chmod u-s FILE
??如果FILE本身原本就有实践权限,则SUID呈现为s;不然显示S;
??简言之,当咱们运维有些二进制造进程序,该程序调用了别的非对象,此指标非运营者全部,也不有所相应权限期,此时不能得逞施行。可是当我们为那一个二进制造进度序予以了SUID,则被调用的那么些目的会被临时赋予该对象的主人权限

上边直接演用鸟哥的亲自过问来说述那些难点

# ls -hltr /usr/bin/passwd /etc/shadow
-rwsr-xr-x. 1 root root 31K Feb 22 2012 /usr/bin/passwd
###权限为rws
———-. 1 root root 950 Aug 25 2016 /etc/shadow

密码文件/etc/shadow只有root客商全部修改权限,那其余客商是怎么样修改本身密码的吗,那正是由于命令passwd具备SUID权限
??a、vbird 对於 /usr/bin/passwd 这么些顺序来讲是怀有 x 权限的,表示 vbird
能运维 passwd;
??b、passwd 的拥有者是 root 那么些帐号;
??c、vbird 运转 passwd 的进程中,会『一时』获得 root 的权杖;
??d、/etc/shadow 就能够被 vbird 所运转的 passwd 所修改。
但要是 vbird 使用 cat 去读取 /etc/shadow 时,他能够读取吗?因为 cat
不享有 SUID 的权能,所以 vbird 运维 『cat /etc/shadow』 时,是不能够读取
/etc/shadow 的。

对于地点的情形,假定希望vbird客商能够透过cat访问/etc/shadow,肿么完成啊,那就是给予s权限啊

# ls -hltr /bin/cat

-rwxr-xr-x. 1 root root 48K Nov 22  2013 /bin/cat

# chmod u+s /bin/cat

# ls -hltr /bin/cat 

-rwsr-xr-x. 1 root root 48K Nov 22  2013 /bin/cat   ###属主的x权限变成了s权限

$ cat /etc/shadow | head -3

root:$6$3KDwLJ7Cb.J2.ZMcmhHqThe/YvQ1tQtQOZX5gfbyOg/N.jl7OBzV.ZAzVzA/:17163:0:99999:7:::

bin:*:15980:0:99999:7:::

daemon:*:15980:0:99999:7:::

STID使用计算
??SUID 权限仅对二进制造进度序(binary program)有效;
??运转者对于该程序要求有所 x 的可运转权限;
??本权限仅在运作该程序的历程中央银立见成效 (run-time);
??运维者将具备该程序具有者 (owner) 的权力。

STID使用示例:增添非oracle顾客到dba, oinstall组

c、若客户在此目录下具有w的权力,则客商所创建的新文件的用户组与此目录的顾客组同样。

3、Sticky Bit

Sticky Bit:
在七个国有目录,每一个都足以创造文件,删除本人的文件,但不可能去除外人的文书; 
chmod o+t DIR 
chmod o-t DIR

###针对前面的示例,在公共目录dbateam中,需要设定在该目录创建文件的用户只能删除自身的文件,而不能删除其他用户创建的文件
[root@desktop ~]# chmod o+t /dbateam
[root@desktop ~]# ls -hltr / |grep dbateam
drwxrwsr-t. 2 root dbateam 38 Aug 14 17:30 dbateam

###下面使用sybase用户创建文件
[sybase@desktop ~]$ echo "don't touch">>/dbateam/sybase.03

###下面使用oracle用户来删除文件
[oracle@desktop ~ ]$ cd /dbateam
[oracle@desktop dbateam]$ ls -hltr
-rw-rw-r--. 1 sybase sybase 8 Aug 14 17:25 sybase.01
-rw-rw-r--. 1 sybase dbateam 28 Aug 14 17:32 sybase.02
-rw-rw-r--. 1 sybase dbateam 12 Aug 15 09:08 sybase.03
[oracle@desktop dbateam]$ rm -rf sybase.03
rm: cannot remove ‘sybase.03’: Operation not permitted ###此处提示没有权限
[oracle@desktop dbateam]$ echo "Oraclefile">oracle.01
[oracle@desktop dbateam]$ rm oracle.01 ###此处可以删除自身创建的文件
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

 

二、SUID,SGID,Sticky Bit

出奇权限指的是指向第一点描述的rwx权限之外的权杖,即x施行权限能够产生变化为s只怕S等。
鉴于文件存在属主与属组,由此也就有属主与属组的s只怕S权限。

初窥Linux之文件权限

Linux 文件目录特殊权限设定(SUID,SGID,SBIT)

原文:

Linux文件及目录的权位设定,除了大家孰知的读写试行(rwx)之外,还或者有局地出奇的权杖设定用来知足一定的目录。这几个特殊权限的设定至关心注重尽管SUID,SGID以及SBIT。那多少个值而不是贰个独门的rwx,而是在文件或目录上的x权限上做动作,来达成达成公文或目录特殊权限的目标。本文重要叙述那3个独特权限的用法以及umask。

只是请小心:假使目录唯有r,但从没x权限,则不得不ls出文件名,而不可能显示文件属性,如下图所示:

2、SGID

SGID 是 Set Group
ID的缩写,SUID是在文件的持有者等第,而SGID则是在客户组品级生效,即
??SGID 对二进制程序有用;
??程序运营者对于该程序来讲,需持有 x 的权力;
??运转者在运作的进度中将会收获该程序客商组权限

SGID:
运转某前后相继时,相应进度的属组是程序文件本身的属组,并非运转者所属的基本组;
??chmod g+s FILE
??chmod g-s FILE

对于有所SGID的目录,除了可施行的二进制造进程序外,援助部分群组个性。
尽管当前服务器存在客户组 dbateam以及顾客oracle
mysql sybase
于今希望这一个3个客户能够分享某三个一定的挂载目录,都有对应的权能举行读写以及能够编辑读写别的客商创造的文书

###以下创建一个组以及三个用户,并将组作为用户的附加组

# groupadd dbateam 

# useradd mysql -G dbateam

# useradd oracle -G dbateam

# useradd sybase -G dbateam



###创建一个目录并挂载

# mkdir -pv /dbateam   

# mount /dev/sdb1 /dbateam

# ls -hltr / |grep dbateam

drwxr-xr-x    2 root root 4.0K Aug 14 17:17 dbateam



# ### Author : Leshami QQ/Weixin : 645746311

# ### Blog  : http://blog.csdn.net/leshami



###更改目录的属组为dbateam

# chown -R :dbateam /dbateam/

# ls -hltr / |grep dbateam

drwxr-xr-x.  2 root dbateam    6 Aug 14 17:17 dbateam



###使用创建的用户登陆并测试目录权限,如下,无写权限

[root@desktop ~]# su - sybase

[sybase@desktop ~]$ echo "sysbase">/dbateam/sybase.01

-bash: /dbateam/sybase.01: Permission denied



[root@desktop ~]# su - oracle

[oracle@desktop ~]$ echo "oracle">/dbateam/oracle.01

-bash: /dbateam/oracle.01: Permission denied



###对目录授予写入权限

[root@desktop ~]# chmod g+w /dbateam/

[root@desktop ~]# ls -hltr / |grep dbateam

drwxrwxr-x.  2 root dbateam    6 Aug 14 17:17 dbateam



###再次写入文件,此时成功

[sybase@desktop ~]$ echo "sysbase">/dbateam/sybase.01

[sybase@desktop ~]$ ls -hltr /dbateam/sybase.01

-rw-rw-r--. 1 sybase sybase 8 Aug 14 17:25 /dbateam/sybase.01  

###如上,此时文件的属主和属组都是sybase,非附加组,也就是说其他用户可以读取,但是无法修改



###下面为目录设定SGID,如下,目录属组权限变为rws

[root@desktop ~]# chmod g+s /dbateam/

[root@desktop ~]# ls -hltr / |grep dbateam

drwxrwsr-x.  2 root dbateam  22 Aug 14 17:25 dbateam



###再次写入一个文件

[sybase@desktop ~]$ echo "sybase02" >/dbateam/sybase.02

[sybase@desktop ~]$ ls -hltr /dbateam/

total 8.0K

-rw-rw-r--. 1 sybase sybase  8 Aug 14 17:25 sybase.01

-rw-rw-r--. 1 sybase dbateam 9 Aug 14 17:30 sybase.02

###如上,此时文件sybase.02的所属组变成了dbateam,而不是先前的sybase,此时其他用户可以进行修改。



###其他用户尝试修改

[oracle@desktop ~]$ echo "add oracle comment" >>/dbateam/sybase.02

[oracle@desktop ~]$ more /dbateam/sybase.02

sybase02

add oracle comment

[oracle@desktop ~]$ ls -hltr /dbateam

total 8.0K

-rw-rw-r--. 1 sybase sybase  8 Aug 14 17:25 sybase.01

-rw-rw-r--. 1 sybase dbateam 28 Aug 14 17:32 sybase.02



通过上面的例子得知,

当目录的属组具备了s权限后,该目录下创建的文件不再以用户自身的属组(基本组)作为文件的属组,而是上级目录的属组

chgrp:修改文件所属顾客组

1、文件类型

如下示例文件,

[root@desktop ~]# ###演示环境
[root@desktop ~]# more /etc/redhat-release 
Red Hat Enterprise Linux Server release 7.2 (Maipo)

crw--w----. 1 root tty 4, 1 Jul 7 09:12 /dev/tty1
brw-rw----. 1 root disk 8, 1 Jul 7 09:11 /dev/sda1
lrwxrwxrwx. 1 root root 3 Oct 14 2016 ex -> vim
srwx------. 1 root root 0 Mar 10 16:08 mongodb-27001.sock
drwx------. 2 root root 4.0K Oct 14 2016 keyring-GLsfkK
-rw-r--r--. 1 root root 49K Oct 14 2016 install.log
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

透过上边列出的文本陈诉,我们将最右侧部分按9-0张开表示,如下 
9876543210

则对应的象征位的意思如下:

第9位 
   代表文件类型,可以为p、d、l、s、c、b和-: 
      p表示命名管道文件 
      d表示目录文件 
      l表示符号连接文件 
      -表示平常文书 
      s表示socket文件 
      c代表字符设备文件 
      b代表块设备文件

第8-6位 
   代表近期文件的属主(全数者)

第5-3位 
   表示文件的属组(顾客组)

第2-0位 
   表示其他组所具备的权限

 

Linux文件及目录的权限设定,除了大家孰知的读写实践(rwx)之外,还会有一对极其的权力设定用来满足一定的目录。这么些特种权限的设定至关心爱慕假设SUID,SGID以及SBIT。那多少个值实际不是一个单独的rwx,而是在文书或目录上的x权限上做动作,来到达完毕公文或目录特殊权限的目标。本文首要叙述那3个特殊权限的用法以及umask。

4、在进行passwd那些程序时,普通的客户将会博得passwd这一个顺序的全体者的权能,即root对该程序的权能,并不是Others或客商组的权位;

一、文件类型及权限

(3)-rwxrwxr-t:

1、文件类型

正如示例文件,

[root@desktop ~]# ###演示环境

[root@desktop ~]# more /etc/redhat-release 

Red Hat Enterprise Linux Server release 7.2 (Maipo)



crw--w----. 1 root tty 4, 1 Jul  7 09:12 /dev/tty1

brw-rw----. 1 root disk 8, 1 Jul  7 09:11 /dev/sda1

lrwxrwxrwx. 1 root root      3 Oct 14  2016 ex -> vim

srwx------. 1 root  root      0 Mar 10 16:08 mongodb-27001.sock

drwx------. 2 root  root  4.0K Oct 14  2016 keyring-GLsfkK

-rw-r--r--. 1 root root  49K Oct 14  2016 install.log

经过地方列出的文书汇报,我们将最侧面部分按9-0开展表示,如下
9876543210

则附和的表示位的意义如下:

第9位
?? 表示文件类型,可感觉p、d、l、s、c、b和-:
?? ?? p代表命名管道文件
?? ?? d表示目录文件
?? ?? l表示符号连接文件
?? ?? -表示日常文书
?? ?? s表示socket文件
?? ?? c代表字符设备文件
?? ?? b代表块设备文件

第8-6位
?? 表示近些日子文件的属主(全部者)

第5-3位
?? 表示文件的属组(顾客组)

第2-0位
?? 表示其他组所具有的权杖

 

 

b、程序推行者对于该程序来讲,需求备x的权能;

chattr -ai file:删除属性;

对于文本来说,SGID有如下限制和功效:

小结一点:改文件的主人、顾客组应该是root的天职;

 

ctime:文件权限、全体者被改变的时刻;

从地点的结果可今后到,荧屏上冒出了7列数据,它们各自代表:

(1)SUID:在客商全体者的x权限地点为“s”,如/usr/bin/passwd;

在第一列,中大家见到了下面介绍之外的文书权限属性,s和t。

(1)a:文件只好加多,不可能改改、删除;常用来日志文件;

而权力的装置除了能够用字母来代表之外,还是能用数字代表,对照为r:4,w:2,x:1,-:0(化成二进制可见,其符合前缀码法则),而显得时,只显示每组的累加值,如上例rwxr-xr–能够代表为754。

chgrp、chown命令用来安装文件的主人、客商组;

 

图片 2

当顾客对于此目录具备w,x权限,即怀有定稿的权杖时,客户在该目录下开创文件或目录,独有和煦与root才有权利删除该公文。

最要注意的是:不管文件权限设置成什么样了(此处只谈谈一般的权柄,特殊权限不算),root都可以对文件或目录rwx;

大致SUID具备如下的限量和意义:

二个文件有好些个性质,包罗文件类型、文件权限、文件隐敝权限、文件全体者、客户组、文件大小、创立日期、修改日期、访谈日期等,比方下边是/etc/inittab文件的质量:

 

 

 

 

当大家实施如下的ls命令时,大家大概会看到很意外的结果:

(4)b:块设备,即存款和储蓄设备,比方/dev/sda;find / -type b 查询;

[l]:连接文件

 

见状这里,也许对于SUID还不是很明亮,举下边的例证来讲,正是passwd那些程序是root那个客商具有的,并属于root客商组,不过大家理解,对于普通顾客,他们或许能够改换自个儿的密码,那是怎么吗?其缘由在于:

 

b、推行者对于该程序必要具备x的可实践权限;

 

三、修改文件权限

SUID

 

率先表达某个:文件全部者与客户组自己没有何样关联,举例顾客组能够是root,但是文件全部者为xiazdong;

2、那个可实践文件在文件全体者的x权限上的申明是s,即设置了SUID;

 

 

瞩目:我们能够透过数字或标识设置权限;

d、实施者将装有该程序全数者的权柄;

 

 

SGID能够予以目录或文件,推行者必得具有x权限;

 

标识表示:chmod u=rwxs,g=rw,o=r file

 

(5)c:字符设备,即串行端口设备,如键盘,例如/dev/zero;find / -type c
查询;

举个例证来讲,一个团队A在拓宽项目支付,你是团伙A的积极分子,则你写的文书档案或然代码,你的其它成员也亟需能对其开展读写,则足以把团队A的人加进二个顾客组,那些客商组的人能够对那个文件进行读写,而其他的支出共青团和少先队,在未有允许的动静下,是不能够对你的团伙的代码和文书档案实行阅读和改换。其余,各种客户能够有八个用户组的支撑。

再作证某个:三个客户总会归属于二个或多少个顾客组,二个顾客组里可以有四个顾客,比方root顾客归属于root顾客组,不过大家也得以创制七个客商xzdong,及归属于group1客商组,又归属于group2客商组;

对于用惯了windows的我们来讲,实际不是每贰个文件都以可举行的,它与公事的后缀有关,可施行文件的后缀为.exe,而在Linux下,三个文本是不是可施行,与后缀是未有断然关系的,而是由文件是还是不是持有“x”这么些权力来调节的。

 

对于文本的权力和操作来讲,基本上与SUID同样,只是它赢得的不是程序全部者的权能,而是它的顾客组的权位。

图片 3

b、顾客在此目录下的有用客户组将会产生该目录的客户组;

 

修改文件权限的常用命令有:

SBIT

原因非常粗大略,便是让部分钦赐的顾客(非文件全体者),也能根据一定的权限访谈你的文本,而任何的人则不可能访问你的文件。并且设置客户组也使这种权力的保管变得轻易。

1、lsattr

图片 4

 

 

(4)chmod a+x test.txt:给test.txt整体的人增多x权限;

值得注意的是:要是您对二个索引具备r权限而从未x权限,你能选择ls查看目录下的公文列表,却不可能跻身到该目录,也就不可能对目录里的其余公文实行操作,即便你对目录中的文件具备rwx权限。

 

 

(1)当给予文件SGID时:当推行者试行时,此实施者会有客户组的权柄;