Linux-权限管理(二)

三、文件特殊权限SetUID、SetGID、Sticky BIT

1、SetUID

1)SetUID是什么

SetUID的功能可以这样理解:

只有可以执行的二进制程序才能设定SUID权限命令执行者在执行该程序时获得该程序文件属主的身份(在执行程序的过程中灵魂附体问文件的属主)SetUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行的过程中有效

2)举例

[[email protected] ~]# ll /etc/passwd
-rw-r--r--. 1 root root 1423 5月  15 16:47 /etc/passwd
[[email protected] ~]# ll /etc/shadow
----------. 1 root root 940 5月  15 17:32 /etc/shadow
因为
[[email protected] ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 25980 2月  22 2012 /usr/bin/passwd

/usr/bin/passwd命令拥有特殊权限SetUID,也就是在属主的权限后,用户执行这个文件时将以文件所有者的身份执行。/usr/bin/passwd命令具有SetUID权限,所有者为root(Linux中的命令默认所有者都是root),也就是说当普通用户使用passwd更改自己的密码的时候那一瞬间灵魂附体了,实际上使用的是用passwd命令所有者root的身份在执行passwd命令,root当然可以将密码写入/etc/shadow文件(不要忘记root这个家伙是superman什么事都可以干),普通用户也可以修改/etc/shadow文件,命令执行完成后该身份也随之消失如果取消SetUID权限,则普通用户就不能修改自己的密码了

3)、危险的SetUID

[[email protected]~]# chmod u+s /usr/bin/vim
[[email protected]~]# ll /usr/bin/vim
-rwsr-xr-x. 1 root root 1847752 4月   5 2012 /usr/bin/vim

4)、有几点建议:

关键目录应严格控制写入权限。比如“/”、“/usr”等:

用户的密码设置要严格遵守密码三原则:

对系统中默认应该具有SetUID权限的文件作为一列表,定时检查有没有这个之外的文件被设置了SetUID权限。

5)、检测SetUID的脚本

[[email protected] ~]# visuidcheck.sh
#!/bin/bash
find / -perm -4000 -o -perm -2000 >/tmp/set
#搜索系统中所有拥有SUID和SGID的文件,并保存到临时目录中。
for i in $(cat /tmp/set)           #做循环,每次循环取出临时文件中的文件名
do
        grep $i /root/set > /dev/null        #对比这个文件名是否在这个模版中
                 if ["$?"!="0" ]      #如果在不报错
                then
                 echo "$i is not inlistfile!">> /root/suid_log_$(date +%F)
                                          #如果文件名不再模版文件中,则报错。并把报错信息保存到日志中
        fi
 done
 rm -rf /tmp/set2、SetUID    #删除临时文件
[[email protected]~]# chmod 755 suidcheck.sh    #给脚本赋予权限
[[email protected]~]# ./suidcheck.sh    #执行检测脚本,只要不是脚本错误就不用管它
[[email protected]~]# cat suid_log_2015-05-16
/bin/vi is notin listfile!#报错了,vi不再模版文件中。代表vi被修改了SUID权限

1)针对文件的作用

SGID即可以针对文件生效,也可以针对目录生效,这和SUID明显不同。如果针对文件,SGID的含义如下:

只有可执行的二进制程序才能设置SGID权限

命令执行者要对该程序拥有x(执行)权限

命令执行在执行程序的时候,组身份升级为该程序文件的属组

SetGID权限同样只在该程序执行过程中有效,也就是说组身份该变只在程序执行过程中有效

[[email protected]~]# ll /var/lib/mlocate/mlocate.db
-rw-r-----. 1 root slocate 1531899 5月  15 17:17 /var/lib/mlocate/mlocate.db
上面可以发现属主权限是r、w,属组权限是r,但是其他人权限是0:
[[email protected] ~]# ll /usr/bin/locate
-rwx--s--x. 1 root slocate 35548 10月 10 2012/usr/bin/locate
当普通用户wulaoer执行locate命令时,会发生如下事情:
/usr/bin/locate是可执行二进制程序,可以赋予SGID
执行用户wulaoer对/usr/bin/locate命令拥有执行权限
执行/usr/bin/locate命令时,组身份会升级为slocate组,而slocate组对/var/lib/mlocate/mlocate.db
数据库拥有r权限,所以普通用户可以使用locate命令查询mlocate.db数据库

2)针对目录的作用

如果SGID针对目录设置,含义如下:

普通用户必须对此目录拥有r和x权限,才能进入此目录

普通用户在此目录中的有效组会变成此目录的属组’

若普通用户对此目录拥有w权限时,新建是文件的默认属组是这个目录的属组

举例:

[[email protected] ~]# cd/tmp/
[[email protected] tmp]#mkdir dtest       #建立测试目录
[[email protected] tmp]#chmod g+s dtest       #给测试目录赋予SGID
[[email protected] tmp]# ll-d dtest
drwxr-sr-x. 2 root root4096 5月  16 01:30 dtest       #SGID已经生效
[[email protected] tmp]#chmod 777 dtest/     #给目录权限让普通用户可以写入
[[email protected] tmp]# su –wulaoer              #切换wulaoer用户登录
[[email protected] ~]$ cd/tmp/dtest/        #普通用户进入测试目录
[[email protected] dtest]$touch abc          #普通用户建立abc文件
[[email protected] dtest]$ll
总用量 0
-rw-rw-r--. 1 wulaoer root0 5月  16 01:32 abc
#abc文件的默认属组不再是wulaoer用户组,而变成了dtest组的属组root

3)文件特殊权限之Sticky     BIT

Sticky BIT粘着位,也简称为SBIT。SBIT目前针对目录有效,它的作用如下:

粘着位目前只对目录有效

普通用户对该目录拥有w和x权限,即普通用户可以在此目录有用写入权限

如果没有粘着位,因为普通用户拥有w权限,所以可以删除此目录下所有的文件,包括其他用户建立的文件。一旦赋予了粘着位,除了root可以删除所有文件,普通用户就算拥有w权限,也只能删除自己建立的文件,但是不能删除其他用户建立的文件。

1、  设定文件特殊权限

特殊权限这样来表示:

4代表SUID

2代表SGID

1代表SBIT

[[email protected]~]# chmod 4755 ss        #赋予SUID权限
[[email protected]~]# chmod 2755 ss        #赋予SGID权限
[[email protected]~]# mkdir dtest
[[email protected]~]# chmod 1755 dtest/#给目录赋予SBIT,SBIT只对目录有效

四、文件系统属性chattr权限

1、命令格式

[[email protected] ~]# chattr[+-=] [选项] 文件或目录名
选项:
    +:  增加权限
    -:  删除权限
    =:  等于某权限
    i:   如果对文件设置i属性,那么不允许对文件进行删除、改名,也不能添加和修改数据;如果对目录设置i属性,那么只允许修改目录下文件的数据,但不允许建立和删除文件
    a:  如果对文件设置a属性,那么只能在文件中增加数据,但是不能删除也不能修改数据;如果对目录设置a属性,那么只允许在目录中建立和修改文件,但是不允许删除
    e:   Linux中绝大多数的文件都默认拥有e属性。表示文件是使用ext文件系统进行存储,而且不能使用“chattr -e”命令取消e属性。

2、  查看文件系统属性lsattr

[[email protected] ~]# lsattr 选项     文件名
选项:
         -a      显示所有文件和目录
         -d      若目标是目录,仅列出目录本身的属性,而不是子文件的

3、举例

例1:

#给文件赋予i属性
[[email protected]~]# touch ftest               #建立测试文件
[[email protected] ~]# chattr +i ftest
[[email protected] ~]# rm -rf ftest
rm: 无法删除"ftest": 不允许的操作  #赋予权限后root也不能删除
[[email protected] ~]# echo 111 >> ftest
-bash: ftest: 权限不够                       #也不能修改文件的数据
 
#给目录赋予i属性
[[email protected] ~]# mkdir dtest              #建立测试目录
[[email protected] ~]# touch dtest/abc          #在建立一个测试文件
[[email protected] ~]# chattr +i dtest          #给目录赋予i属性
[[email protected] ~]# cd dtest
[[email protected] dtest]# touch bcd
touch: 无法创建"bcd": 权限不够               #dtest目录不能新建文件
 
[[email protected] dtest]# echo 11 >> abc
[[email protected] dtest]# cat abc
11
[[email protected] dtest]# rm -rf abc
rm: 无法删除"abc": 权限不够                   #不能删除

例2:

[[email protected] ~]# mkdir -p /back/log         #建立备份目录
[[email protected] ~]# chattr +a /back/log         #赋予a属性
[[email protected] ~]# cp /var/log/messages /back/log/
#可以复制文件和新建文件到指定目录
[[email protected] ~]# rm -rf /back/log/messages
rm: 无法删除"/back/log/messages": 不允许的操作#但是不允许删除
时间: 2024-12-27 21:18:34

Linux-权限管理(二)的相关文章

[Linux 004]——用户和用户组以及 Linux 权限管理(二)

到权限了.前面讲到了 Linux 中的用户和用户主管理,其实它们的本质(或者用户和用户组出现的初衷)都是方便权限管理.权限管理对于计算机的重要性不言而喻,权限让每个用户能够安安心心的使用计算机,而不用担心别的用户破坏到自己的资源.如果老王手里有一把你家的钥匙,你是不是很蛋疼呢,如果邻居除了老王,还有老赵,老李,老张...都有你家的钥匙,你是不是更加蛋疼呢.作为多用户的 Linux 而言,权限管理至关重要. 1.Linux 文件权限的规定 前文提到,Linux 规定一个文件必须要有三种权限:文件所

Linux权限管理及用户与用户组

第一部分:Linux权限管理 一.基本权限 linux权限机制采用UGO模式.其中 u(user)表示所属用户.g(group)表示所属组.o(other)表示除了所属用户.所属组之外的情况. u.g.o 都有读(read).写(write).执行(excute) 三个权限,所以UGO模式是三类九种基本权限. 用命令 ls -l 可列出文件的权限,第一列输出明确了后面的输出(后面一列代表 ugo权限).第一个字母对应的关系: "-"    普通文件 "d"   目录

Linux权限管理(用户、组、文件管理)

一. Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示. 1. 文件查看类命令cat,tac, head, tail, more, less, ls ,file: -ls : list,列出指定目录下的内容 使用语法:ls [option]- [file]- 参数:-a 显示所有文件,包括隐藏文件: -A 显示除.和..之外的所有文件: -l –long,长葛市列表,即显示文件的详细属性信息: 例:-rw-r--r--. 1 root   root     8957 10月

Linux权限管理---特殊权限

目录 Linux权限管理---特殊权限 一.Linux系统特殊权限概述 二.特殊权限suid介绍 三.特殊权限sgid介绍 四.特殊权限sbit介绍 五.特殊权限总结: 六.linux权限属性chattr概述 七.Linux进程掩码umask Linux权限管理---特殊权限 一.Linux系统特殊权限概述 除了r(读). w(写). x(执行)这三种普通权限外,在查询系统文件权限时会发现还有其他的权限字母. 例如: [[email protected] ~]# ll /usr/bin/pass

【Linux】 Linux权限管理与特殊权限

Linux权限管理 权限管理这方面,非常清楚地记得刚开始实习那会儿是仔细研究过的,不知道为什么没有笔记留痕..除了一些基本的知识点早就忘光了,无奈只好从头开始学习一遍.. ■ 基本权限知识 这部分实在是比较基础,不想多讲了.主要就是9格权限的理解.搞清楚读权限.写权限和执行权限对于文件和目录来说分别以为着什么,就可以了.下面是一些以前没怎么注意,今天听完培训之后觉得有些意思的点: ●  管理权限的权限 文件权限信息和其他文件信息一样,并不属于文件内容的一部分,而基本的权限是针对文件内容而言的.比

linux权限管理总结

文件或目录的权限 目录和文件拥有:读r.写w.执行x权限. // 使用 ls -l命令查看当前目录的文件权限信息 #ll -rw-r--r-- 1 root root 161 Mar 20 20:39 test.txt // test文件所有者拥有读写权限.所属组和其他用户拥有读权限 drw-r--r-- 1 root root 248 Mar 23 21:03 download 权限对文件的作用 r :读取文件内容(cat.more.head.tail) w:编辑.新增.修改文件内容(vi.e

Linux基础知识之用户和用户组以及 Linux 权限管理

已经开始接触Linux用户管理,用户组管理,以及权限管理这几个逼格满满的关键字.这几个关键字对于前端程序猿的我来说真的是很高大上有木有,以前尝试学 Linux 的时候看到这些名词总是下意识的跳过不敢看有木有,一提起这几个名词马上脑海中总是升腾起无限的崇拜有木有!今天就硬着头皮捯饬捯饬这几个概念,希望能有所收获. 1.从 /etc/passwd 说起 前面的基本命令学习中,我们介绍了使用 passwd 命令可以修改用户密码.对于操作系统来说,用户名和密码是存放在哪里的呢?我们都知道一个站点的用户名

linux权限管理初探

权限管理 在linux系统上,有个"潜规则",就是一切皆文件.字符设备是文件,目录是文件,套接字,也是文件...那么怎么区别那个文件到底属于哪种类型呢? 大多数文件系统的实现定义了7中文件类型, 分别是 普通文件 目录 字符设备文件 块设备文件 本地域套接字 有名管道 符号链接 用户可以使用命令 ls -l 来查看文件的类型.ls命令输出的第一个字符即为文件类型. [[email protected] ~]$ ls -l 总用量 0 drwxrwxr-x. 2 john john 6

JAVAWEB开发之权限管理(二)——shiro入门详解以及使用方法、shiro认证与shiro授权

shiro介绍 什么是shiro shiro是Apache的一个开源框架,它将软件系统的安全认证相关的功能抽取出来,实现用户身份认证,权限授权.加密.会话管理等功能,组成了一个通用的安全认证框架.它可以实现如下的功能: 1.验证用户 2.对用户执行访问控制,如:判断用户是否具有角色admin,判断用户是否拥有访问的资源权限. 3.在任何环境下使用SessionAPI.例如C/S程序 4.可以使用多个用户数据源.例如一个是Oracle数据库,另外一个是MySQL数据库. 5.单点登录(SSO)功能

Linux权限管理问题

权限管理是Linux中一个重要的部分.对于初学者来说,假如只有文件的权限管理内容就比较容易理解,但是文件与目录的权限产生的效果不一样,因此就会产生迷惑. 对于文件, r 读权限 允许查看文件内容 w    写权限 允许修改文件内容 x  执行权限   允许执行文件 对于目录, r 读权限 允许列出目录中的内容 w     写权限  允许创建或者删除目录中的文件 x 执行权限  允许进入目录 乍眼一看,感觉没有什么难以理解的或者令人迷惑的.那就举个例子吧.在/home/LuciferMJ文件下,r