Linux特殊权限--day12

1.特殊权限概述

前面我们学了 rwx这三种普通权限,但是我们在査询系统文件权限时会发现出现了一些其他权限字母,比如:

[root@oldboy ~]# ll /usr/bin/passwd 
-rwsr-xr-x. 1 root root 27832 Jun 10  2014 /usr/bin/passwd

在属主本来应该是 x(执行)权限的位置出现了一个小写s,这是什么权限?我们把这种权限称作 Setuid 权限,也叫作 SUID (set uid)的特殊权限。

2.特殊权限SUID
  • 1.问题
    普通用户的信息保存在 /etc/passwd 文件中,用户的密码在/etc/shadow 文件中,也就是说,普通用户在更改自己的密码时修改了 /etc/shadow 文件中的加密密码,但是文件权限显示,普通用户对这两个文件其实都是没有写权限的,那为什么普通用户可以修改自己的权限呢?
[root@oldboy ~]# ll /etc/passwd
-rw-r--r--. 1 root root 986 Jul 24 20:29 /etc/passwd
[root@oldboy ~]# ll /etc/shadow
----------. 1 root root 624 Jul 24 20:29 /etc/shadow


  • 2.解决问题
    其实,普通用户可以修改自己的密码在于 passwd 命令。该命令拥有特殊权限 suid,也就是在属主的权限位的执行权限上是 s。即当一个具有执行权限的文件设置 suid权限后,用户在执行这个文件时将以文件所有者的身份来执行。当普通用户使用 passwd 命令更改自己的密码时,实际上是在用 passwd 命令所有者 root 的身份在执行 passwd 命令,root 当然可以将密码写入 /etc/shadow 文件,所以普通用户也可以修改 /etc/shadow 文件,命令执行完成后,该身份也随之消失,所以suid起了至关重要的作用。

  • 3、举例
    建立一个用户 wang,她可以修改自己的权限,因为 passwd 命令拥有 suid权限;但是她不能査看 /etc/shadow 文件的内容,因为査看文件的命令(如 cat)没有 SetUID 权限。

自己可以修改自己的密码,从而改变/etc/shadow中的数据
[root@oldboy ~]# su wang
[wang@oldboy root]$ cat /etc/shadow
cat: /etc/shadow: Permission denied
图解wang
  • 4.解释
    *passwd 是系统命令,可以执行,所以可以赋予suid权限。
    wang用户对 passwd 命令拥有 x(执行)权限。
    wang用户在执行 passwd 命令的过程中,会暂时切换为 root 身份,所以可以修改 /etc/shadow 文件。命令结束,wang用户切换回自己的身份。
    注意:cat命令没有 suid权限,所以使用 wang用户身份去访问 /etc/shadow 文件,当然没有相应权限了-->Permission denied

思考:如果将passwd命令的suid去掉会发生什么?

[root@oldboy ~]# chmod 731 /root #切换用户将suid去掉
[root@oldboy ~]# ll -d /root
drwx-wx--x. 2 root root 135 Jul 24 20:49 /root
[root@oldboy ~]# su wang
[wang@oldboy root]$ passwd
Changing password for user wang.  #显示无法打开密码文件
Changing password for wang.
(current) UNIX password: 
[wang@oldboy root]$ cat /etc/shadow
cat: /etc/shadow: Permission denied
ps:当去掉root中的suid之后需要重新连接root用户,用su无法直接切换至管理员权限。
  • 2.suid授权方法4000 权限字符s,用户位置上的x位上设置
[root@oldboy ~]# chmod 4755 /etc/passwd
[root@oldboy ~]# ll -d /etc/passwd
-rwsr-xr-x. 1 root root 1025 Aug  8 14:28 /etc/passwd
  • 3.suid的作用
1.让普通用户对可执行的二进制文件,临时拥有二进制文件的所属主权限。
2.如果设置的二进制文件没有执行权限,那么suid的权限显示就是大S。
3.特殊权限suid仅对二进制可执行程序有效,其他文件或目录则无效。
注意: suid极度危险,不要轻易设置。

3.特殊权限sgid

  • 将目录设置为sgid后,如果在该目录下创建文件,都将与该目录的所属组保持一致:如下例
[root@oldboy ~]# cd /tmp/ &&mkdir ttt
[root@oldboy tmp]# chmod g+s /tmp/ttt/ && ll -d ttt
drwxr-sr-x. 2 root root 6 Aug  8 15:00 ttt
[root@oldboy tmp]# chmod 777 /tmp/ttt/  #.给测试目录赋予777权限
[root@oldboy /]# su wang
[wang@oldboy /]$ cd /tmp/ttt
[wang@oldboy ttt]$ touch ttt-test
[wang@oldboy ttt]$ ll
total 0
-rw-rw-r--. 1 wang root 0 Aug  8 15:07 ttt-test

  • 2.sgid授权方法: 2000权限字符s(S),取决于属组位置上的x
[root@oldboy ~]# chmod 2755  所授权目标位置
[root@oldboy ~]# chmod g+s 所授权目标位置
  • 3.sgid作用
    1.针对用户组权限位修改,用户创建的目录或文件所属组和该目录的所属组一致。
    2.当某个目录设置了sgid后,在该目录中新建的文件不在是创建该文件的默认所属组
    3.使用sgid可以使得多个用户之间共享一个目录的所有文件变得简单。

4.特殊权限sbit

sbit粘滞位目前只对目录有效
作用如下:
普通用户对该目录拥有 w 和 x 权限,即普通用户可以在此目录中拥有写入权限。如果没有粘滞位,那么普通用户拥有 w 权限,就可以删除此目录下的所有文件,包括其他用户建立的文件。但是一旦被赋予了粘滞位,除了 root 可以删除所有文件,普通用户就算拥有 w 权限,也只能删除自己建立的文件,而不能删除其他用户建立的文件。就相当于博客一样,普通用户只能浏览而不能修改博主内容。

[root@oldboy ~]# ll -d /tmp/
drwxrwxrwt. 12 root root 4096 Aug  8 15:00 /tmp/

*2.sbit(sticky)授权方法,1000 权限字符t(T),其他用户位的x位上设置。

[root@oldboy ~]# chmod 1775  所授权用户
[root@oldboy ~]# chmod o+s 所授权用户
  • 3.stid(sticky)作用
    1.让多个用户都具有写权限的目录,并让每个用户只能删自己的文件。
    2.特殊stid目录表现在others的x位,用小t表示,如果没有执行权限是T
    3.一个目录即使它的权限为"777"如果是设置了粘滞位,除了目录的属主和"root"用户有权限删除,除此之外其他用户都不允许删除该目录。*

  • 2.权限属性chattr

chatrr 只有 root 用户可以使用,用来修改文件系统的权限属性,建立凌驾于 rwx 基础权限之上的授权。
chatrr 命令格式:[root@oldboy ~]# chattr [+-=] [选项] 文件或目录名

  * 选项: + 增加权限   -减少权限   =等于某个权限
  * a:让文件或目录仅可追加内容
  * i:不得任意更动文件或目录

* 1.创建文件并设置属性
[root@oldboy ~]# touch wang_a file_i
[root@oldboy ~]# lsattr wang_a file_i 
---------------- wang_a
---------------- file_i


* 2.使用chattr设置属性,lsattr查看权限限制
[root@oldboy ~]# chattr +a wang_a 
[root@oldboy ~]# chattr +i file_i 
[root@oldboy ~]# lsattr wang_a file_i 
-----a---------- wang_a
----i----------- file_i

*  3.a权限,无法写入和删除文件,但可以追加数据,适合/etc/passwd这样的文件
[root@oldboy ~]# echo "aa" > wang_a 
bash: wang_a: Operation not permitted  #不允许
[root@oldboy ~]# echo "aa" > file_i 
bash: file_i: Permission denied  #权限被拒绝
#5.i权限, 无法写入,无法删除,适合不需要更改的重要文件加锁
[root@oldboy ~]# echo "i" > file_i
bash: file_i: Permission denied
[root@oldboy ~]# echo "i" >> file_i
bash: file_i: Permission denied
[root@oldboy ~]# rm -f  file_i
rm: cannot remove ‘file_i’: Operation not permitted

#6.解除限制
[root@oldboy ~]# chattr -a wang_a
[root@oldboy ~]# chattr -i file_i

3.进程掩码umask

1.umask是什么?
  • 当我们登录系统之后创建一个文件总是有一个默认权限的,比如: 目录755、文件644、那么这个权限是怎么来的呢?umask设置了用户创建文件的默认权限。
2.umask是如何改变文件的权限
  • 系统默认umask为022,那么当我们创建一个目录时,正常情况下目录的权限应该是777,但umask表示要减去的值,所以新目录文件的权限应该是777 - 022 =755。
    文件的权限也依次类推666 - 022 =644。

  • 3.umask涉及哪些配置文件

  • umask涉及到的相关文件/etc/bashrc /etc/profile ~/.bashrc ~/.bash_profile
    shell (vim,touch) --umask--> 会影响创建的新文件或目录权限
    vsftpd服务如果修改--umask--> 会影响ftp服务中新创建文件或创建目录权限
    useradd如果修改umask--> 会影响用户HOME家目录权限*

  • 4.umask演示示例

#1.假设umask值为:022(所有位为偶数)
#文件的起始权限值
6 6 6  -  0 2 2  = 6 4 4 

#2.假设umask值为:045(其他用户组位为奇数)
#计算出来的权限。由于umask的最后一位数字是5,所以,在其他用户组位再加1。
6 6 6  -   0 4 5 = 6 2 1

#3.默认目录权限计算方法
7 7 7  -  0 2 2 = 7 5 5

#umask所有位全为偶数时
# umask 044
# mkdir d044   目录权限为733 ---755-044=733
# touch f044   文件权限为622  ---666-044=622

#umask部分位为奇数时
# umask 023
# mkdir d023   目录权限为754
# touch f023   文件权限为644

#umask值的所有位为奇数时
# umask 035
# mkdir d035   目录权限为742
# touch f035   文件权限为642

  • 示例1: 在 shell 进程中创建文件
* 查看当前用户的umask权限
[root@oldboy ~]# umask 0022
[root@oldboy ~]# touch w0022
[root@oldboy ~]# mkdir z0022
[root@oldboy ~]# ll -d w0022 z0022/
-rw-r--r--. 1 root root 0 Aug  8 15:41 w0022
drwxr-xr-x. 2 root root 6 Aug  8 15:41 z0022/


  • 示例2: 修改 shell umask 值(临时生效)
[root@oldboy ~]# umask 000
[root@oldboy ~]# mkdir w000
[root@oldboy ~]# touch z000
[root@oldboy ~]# ll -d w000 z000
drwxrwxrwx. 2 root root 6 Aug  8 15:43 w000
-rw-rw-rw-. 1 root root 0 Aug  8 15:43 z000

  • 示例3: 通过 umask 决定新建用户 HOME 目录的权限
[root@oldboy ~]# vim /etc/login.defs 
UMASK 077
[root@oldboy ~]# useradd abc
[root@oldboy ~]# ll -d /home/abc/
drwx------. 2 abc abc 62 Aug  8 16:00 /home/abc/

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