Linux的权限

1. 所有者与群组

Linux中有三个身份类别owner/group/others,各有read/write/exectue等权限。
** 所有者**
一般为文件的创建者,谁创建了该文件,就天然的成为该文件的所有者

群组
当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组。处在同一群组的人对文件有相同的权限,对同一组的用户进行权限管理。

其他组
除开文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组

其他人
除了文件拥有者和群组内的其他用户,一般是可以公开的权限,对所有人都可以的权限的管理单元。

在我们Linux系统当中,默认的情况下,所有的系统上的帐号与一般身份使用者,还有那个
root的相关信息, 都是记录在/etc/passwd这个文件内的。至于个人的密码则是记录
在/etc/shadow这个文件下。 此外,Linux所有的群组名称都纪录在/etc/group内!这三个文件
可以说是Linux系统里面帐号、密码、群组信息的集中地啰! 不要随便删除这三个文件啊!

2. Linux文件权限概念

查看文件属性ls -al ~

查看文件属性

第一栏的10个字符代表这个文件的类型与权限(permission):

第一个字符代表这个文件的类型:文件(-)、目录(d)、链接(l)、设备(b)。
后面的字符每3个一组(“rwx”的组合),其中,[r]代表可读(read)、[w]代表可写(write)、[x]代表可执行(execute)。

  • 第一组为“文件拥有者可具备的权限” ;
  • 第二组为“加入此群组之帐号的权限”;
  • 第三组为“非本人且没有加入本群组之其他帐号的权限”。

rwx所在的位置是不会改变的,有该权限就会显示字符,没有该权限就变成减号(-)

第三栏的字符串表示所有者。
第四栏的字符串表示所在群组。

权限也可用数字表示为:r=4,w=2,x=1 因此rwx=4+2+1=7。 在改变权限的命令中使用。

3. 更改文件的所有者、群组、权限

改变文件拥有者,chown
语法:

[root@localhost~]# chown    [-R]    帐号名称    文件或目录
[root@localhost~]# chown    [-R]    帐号名称:群组名称   文件或目录
# 选项:-R :进行递回(recursive)的持续变更,亦即连同次目录下的所有文件都变更

范例:

修改文件所有者

改变用户组,chmod
change group的缩写
语法:

[root@localhost ~]# chgrp [-R] dirname/filename ...
选项与参数:
-R: 进行递回(recursive)的持续变更,亦即连同次目录下的所有文件、目录
都更新成为这个群组之意。常常用在变更某一目录内所有的文件之情况。

案例:

[root@localhost ~]# ls -al .bashrc
-rw-r--r--. 1 root root 176 12月 29 2013 .bashrc
[root@localhost ~]# chgrp wangtao .bashrc
[root@localhost ~]# ls -al .bashrc
-rw-r--r--. 1 root wangtao 176 12月 29 2013 .bashrc

改变权限,chmod
权限设置有两种方法,分别 是使用数字和符号来变更。
数字来代表各个权限,各权限的分数对照表如下:
r:4 > w:2 > x:1
每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为:[-rwxrwx--x] 分数则是:owner=7,group=6,others=1, 则文件的权限数字就是761.

语法:

[root@localhost ~]# chmod   [-R]    xyz 文件或目录
# 选项与参数:
# xyz: 就是刚刚提到的数字类型的权限属性,为   rwx 属性数值的相加。
# -R: 进行递回(recursive)的持续变更,亦即连同次目录下的所有文件都会变更

范例

修改文件权限

符号更改文件权限
基本上就九个权限分别是(1)user (2)group (3)others三种身份,借由u, g, o来代表三种
身份的权限,此外,a则代表all亦即全部的身份!读写的权限就可以写成r ,w,x啰!
这样可以使用下面的方式来看:
| chmod | u g o a | +(加入)-(除去)=(设置)| r w x | 文件或目录 |
范例

[root@localhost ~]# chmod u=rxw,go=rx .bashrc
#注意喔!那个u=rwx,go=rx是连在一起的,中间并没有任何空白字符!
[root@localhost ~]# ls -al .bashrc
-rwxr-xr-x. 1 root root 176 12月 29 2013 .bashrc
[root@localhost ~]# chmod a-x .bashrc
[root@localhost ~]# ls -al .bashrc
-rw-r--r--. 1 root root 176 12月 29 2013 .bashrc
[root@localhost ~]# 

4. 文件与目录的默认权限与隐藏权限

除了基本r , w, x权限外,在Linux传统的Ext2/Ext3/Ext4文件系统下,我们还可以设置其他的系统隐藏属性, 这部份可使用 chattr 来设置,而以 lsattr 来查看,最重要的属性就是可以设置其不可修改的特性!

4.1 文件默认权限:umask

[root@localhost tmp]# ls -l
总用量 4
-rwx------. 1 root root 827 2月  15 01:46 ks-script-4K3G9g
-rw-------. 1 root root   0 2月  15 01:35 yum.log
[root@localhost tmp]# mkdir dir1
[root@localhost tmp]# touch test1
[root@localhost tmp]# ls -l
总用量 4
drwxr-xr-x. 2 root root  18 2月  15 12:32 dir1
-rwx------. 1 root root 827 2月  15 01:46 ks-script-4K3G9g
-rw-r--r--. 1 root root   0 2月  15 12:33 test1
-rw-------. 1 root root   0 2月  15 01:35 yum.log

如上创建一个目录和文件时,他的默认权限是drwxr-xr-x和-rw-r--r--。那么指定这个默认值就是umash了。

查看umash的值:

[root@localhost ~]# umash
0022

注意,最小Linux安装没有umash命令

第1个数字代表特殊字符,第2,3,4个数字代表ower,gourp,others。

一般文件和目录创建的默认权限一般是:

  • 若使用者创建为“文件”则默认“没有可执行( x )权限”,亦即只有 rw 这两个项目,也就
    是最大为 666 分,默认权限如下: -rw-rw-rw-
  • 若使用者创建为“目录”,则由于 x 与是否可以进入此目录有关,因此默认为所有权限均开
    放,亦即为 777 分,默认权限如下: drwxrwxrwx

而umash的分数指的是“该默认值需要减掉的权限!”,当要拿掉能写的权限,就是输入2分。

从上面的例子中: umask为022,所当使用者:

  • 创建文件时:(-rw-rw-rw-) - (-----w--w-) ==> -rw-r--r--
  • 创建目录时:(drwxrwxrwx)-(d----w--w-)==> drwxr-xr-x

正如上面范例所示!

那么如何设置umask的值呢,umash 后面加数字。

范例:


umash

在默认的情况中, root 的 umask 会拿掉比较多的属性,root 的 umask 默认是 022 , 这是基
于安全的考虑啦~至于一般身份使用者,通常他们的 umask 为 002 ,亦即保留同群组的写入
权力! 其实,关于默认 umask 的设置可以参考 /etc/bashrc 这个文件的内容,不过,不建议
修改该文件.

4.2 文件隐藏属性

除了那9个权限,另还有文件的隐藏属性,在系统安全上面重要的紧。

下面的chattr指令只能在Ext2/Ext3/Ext4的Linux传统文件系统上面完整生效, 其他的文件系统可能就无法完整的支持这个指令了,例如xfs仅支持部份参数而已。

如何设置这个文件与检查这些隐藏的属性。chattr

[root@localhost~]#  chattr  [+-=][ASacdistu]    文件或目录名称
选项与参数:
+:增加某一个特殊参数,其他原本存在参数则不动。
-:移除某一个特殊参数,其他原本存在参数则不动。
=:设置一定,且仅有后面接的参数
A:当设置了  A   这个属性时,若你有存取此文件(或目录)时,他的存取时间 atime   将不会被修改,可避免  I/O 较慢的机器过度的存取磁盘。(目前建议使用文件系统挂载参数处理这个项目)
S:一般文件是非同步写入磁盘的(原理请参考[前一章sync](../Text/index.html#sync)的说明),如果加上    S   这个属性时,当你进行任何文件的修改,该更动会“同步”写入磁盘中。
a:当设置a之后,这个文件将只能增加数据,而不能删除也不能修改数据,只有root才能设置这属性
c:这个属性设置之后,将会自动的将此文件“压缩”,在读取的时候将会自动解压缩,但是在储存的时候,将会先进行压缩后再储存(看来对于大文件似乎蛮有用的!)
d:当dump程序被执行的时候,设置d属性将可使该文件(或目录)不会被dump备份
i:这个i可就很厉害了!他可以让一个文件“不能被删除、改名、设置链接也无法写入或新增数据!”对于系统安全性有相当大的助益!只有root 能设置此属性
s:当文件设置了s属性时,如果这个文件被删除,他将会被完全的移除出这个硬盘空间,所以如果误删了,完全无法救回来了喔!
u:与s相反的,当使用u来设置文件时,如果该文件被删除了,则数据内容其实还存在磁盘中,可以使用来救援该文件喔!
注意1:属性设置常见的是a与  i的设置值,而且很多设置值必须要身为root才能设置
注意2:xfs文件系统仅支持AadiS而已

范例

[root@localhost tmp]# touch attrtest
[root@localhost tmp]# chattr +i attrtest
[root@localhost tmp]# rm attrtest
rm:是否删除普通空文件 "attrtest"?y
rm: 无法删除"attrtest": 不允许的操作
[root@localhost tmp]# ls -l
总用量 4
-rw-r--r--. 1 root root   0 2月  15 13:23 attrtest
drwxr-xr-x. 2 root root  18 2月  15 12:32 dir1
-rwx------. 1 root root 827 2月  15 01:46 ks-script-4K3G9g
-rw-r--r--. 1 root root   0 2月  15 12:33 test1
-rw-------. 1 root root   0 2月  15 01:35 yum.log
[root@localhost tmp]# lsattr attrtest
----i----------- attrtest
[root@localhost tmp]# chattr -i attrtest
[root@localhost tmp]# 

这个指令在系统的数据安全上面很重要,由于这些属性是隐藏的性质,所以要以lsattr才能看到该属性。最重要的是设置+i与 +a, +i 可以让一个文件无法被更改,+a只可以log file 这种文件只能增加。

显示文件隐藏属性 lsattr

[root@localhost ~]# lsattr [-adR] 文件或目录
选项与参数:
-a:将隐藏文件的属性也秀出来;
-d:如果接的是目录,仅列出目录本身的属性而非目录内的文件名;
-R:连同子目录的数据也一并列出来!

5. 文件特殊权限: SUID, SGID, SBIT

查看 /tmp 和/usr/bin/passwd 的权限

[root@localhost ~]# ls -ld /tmp; ls -l /usr/bin/passwd
drwxrwxrwt. 8 root root 4096 2月  15 13:23 /tmp
-rwsr-xr-x. 1 root root 27832 6月  10 2014 /usr/bin/passwd

可以看到s跟t权限...

Set UID
当s这个标志出现在文件拥有者的x权限上时,例如刚刚提到的/usr/bin/passwd 这个文件的权限状态:“-rwsr-xr-x”,此时就被称为Set UID,简称为SUID的特殊权限。基本上SUID有这样的限制与功能:

  • SUID 权限仅对二进制程序(binary program)有效;
  • 执行者对于该程序需要具有 x 的可执行权限;
  • 本权限仅在执行该程序的过程中有效(run-time);
  • 执行者将具有该程序拥有者(owner)的权限。

这个权限在一些特殊文件上非常有用,需要好好琢磨。
另外,SUID 仅可用在binary program 上, 不能够用在 shell script 上面!这是因为 shellscript 只是将很多的 binary 可执行文件叫进来执行而已!所以 SUID 的权限部分,还是得要看
shell script 调用进来的程序的设置,而不是 shell script 本身。当然,SUID 对于目录也是无效的~这点要特别留意。

Set GID

当s标志在文件拥有者的x项目为SUID,那s在群组的x时则称为Set GID, SGID

与 SUID 不同的是,SGID 可以针对文件或目录来设置!如果是对文件来说, SGID 有如下的功能:

  • SGID 对二进制程序有用;
  • 程序执行者对于该程序来说,需具备 x 的权限;
  • 执行者在执行的过程中将会获得该程序群组的支持!

举例来说,上面的 /usr/bin/locate 这个程序可以去搜寻 /var/lib/mlocate/mlocate.db 这个文件的内容 (详细说明会在下节讲述), mlocate.db 的权限如下:

[root@study ~]# ll  /usr/bin/locate /var/lib/mlocate/mlocate.db
-rwx--s--x. 1   root    slocate         40496   Jun 10      2014    /usr/bin/locate
-rw-r-----. 1   root    slocate 2349055 Jun 15  03:44   /var/lib/mlocate/mlocate.db

与 SUID 非常的类似,若我使用 dmtsai 这个帐号去执行 locate 时,那 dmtsai 将会取得slocate 群组的支持, 因此就能够去读取 mlocate.db 啦!非常有趣吧!
除了 binary program 之外,事实上 SGID 也能够用在目录上,这也是非常常见的一种用途!当一个目录设置了 SGID 的权限后,他将具有如下的功能:

  • 使用者若对于此目录具有 r 与 x 的权限时,该 使用者能够进入此目录;
  • 使用者在此目录下的有效群组(effective group)将会变成该目录的群组;
  • 用途:若使用者在此目录下具有 w 的权限(可以新建文件),则使用者所创建的新文件,该新文件的群组与此目录的群组相同

Sticky Bit
这个 Sticky Bit,SBIT目前只针对目录有效,对于文件已经没有效果了。SBIT对于目录的作用是:

  • 当使用者对于此目录具有 w, x 权限,亦即具有写入的权限时;
  • 当使用者在该目录下创建文件或目录时,仅有自己与 root 才有权力删除该文件

SUID/SGID/SBIT 权限设置

使用数字代表这几个权限

  • 4 为 SUID
  • 2 为 SGID
  • 1 为 SBIT

设要将一个文件权限改为“-rwsr-xr-x”时,由于 s 在使用者权限中,所以是 SUID ,因此,在原先的 755 之前还要加上 4 ,也就是:“ chmod 4755 filename ”来设置!

范例

[root@localhost ~]# cd /tmp
[root@localhost tmp]# touch test
[root@localhost tmp]# chmod 4755 test;ls -l test
-rwsr-xr-x. 1 root root 0 2月  15 15:33 test
[root@localhost tmp]# chmod 6755 test; ls -l test
-rwsr-sr-x. 1 root root 0 2月  15 15:33 test
[root@localhost tmp]# chmod 1755 test; ls -l test
-rwxr-xr-t. 1 root root 0 2月  15 15:33 test
[root@localhost tmp]# chmod 7666 test; ls -l test
-rwSrwSrwT. 1 root root 0 2月  15 15:33 test

我们是下达7666喔!也就是说,user ,group以及others 都没有 x这个可执行的标志(因为666 嘛),所以,这个 S, T 代表的就是“空的”啦!怎

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容