美文网首页
day11-Linux特殊权限

day11-Linux特殊权限

作者: 恩楠 | 来源:发表于2019-08-11 12:31 被阅读0次

1. 特殊权限

SUID:(set uid)当我们为某个命令设定了suid,无论谁使用该命令都会使用该命令的 "属主" 运行该命令。
  我们知道在Linux中,每个用户可以通过passwd命令更改自己的密码。密码存放的位置为/etc/shadow。我们可以查看一下/etc/shadow的权限。

[root@MiWiFi-R3L-srv ~]# ll /etc/shadow
----------. 1 root root 1088 Aug  7 16:07 /etc/shadow

 通过上结果,我们可以知道任何人对/etc/shawow都是没有任何权限的。当然root除外,因为root在Linux系统中有着最高的权限。
 我们时通过passwd这个命令来修改密码的,在Linux中一切皆文件,我们可以查看一下passwd这个命令的权限。

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

 我们发现属主的权限中有个s(若原先权限为为空的话,会显示 S),这就是SUID,这表示当任何人想要执行passwd这条命令时,都会以该命令的属主身份运行该命令。
 使用普通用户ennan执行passwd修改密码

[ennan@MiWiFi ~]$ passwd 
Changing password for user ennan.
Changing password for ennan.
(current) UNIX password:

 我们发现其实是以root的身份在运行这条命令。

[root@MiWiFi ~]# ps aux |grep passwd 
root       2251  0.0  0.0 170704  1992 pts/0    S+   18:19   0:00 passwd

SUID的设置与取消
可通过
chmod u+s 文件名称
chmod 4XXXX 文件名称设置

[root@MiWiFi-R3L-srv ~]# ll /usr/bin/vim
-rwxr-xr-x. 1 root root 2294216 Jun 28 21:59 /usr/bin/vim
[root@MiWiFi-R3L-srv ~]# chmod 4755 /usr/bin/vim
[root@MiWiFi-R3L-srv ~]# ll /usr/bin/vim
-rwsr-xr-x. 1 root root 2294216 Jun 28 21:59 /usr/bin/vim
[root@MiWiFi-R3L-srv ~]# chmod u-s /usr/bin/vim
[root@MiWiFi-R3L-srv ~]# ll /usr/bin/vim
-rwxr-xr-x. 1 root root 2294216 Jun 28 21:59 /usr/bin/vim

进程能够以何种形式访问文件,取决于运行这个进程的用户对这个文件有没有相应的权限。
比如:passwd要修改/etc/shadow,要看运行passwd这条命令的人对/etc/shadow用怎么样的权限。

SGID:将目录设置为sgid后,如果在该目录下创建文件,都将与该目录的所属组保持一致。

[root@MiWiFi-R3L-srv /]# chmod 2777 /test/
[root@MiWiFi-R3L-srv /]# ll -d /test/
drwxrwsrwx. 2 root root 23 Aug  7 18:41 /test/

切换用户在/test中创建文件

[ennan@MiWiFi-R3L-srv test]$ touch ennan.txt
[ennan@MiWiFi-R3L-srv test]$ ll
total 0
-rw-rw-r--. 1 ennan root 0 Aug  7 18:42 ennan.txt

这时候,我们发现ennan.txt的属组已经变成了root,即/test/这个目录的属组。

SBIT:如果一个目录设定了粘滞位, 那么谁都可以在该目录下创建文件。删除文件只能是 谁创建的谁删除. 除此以外 root 和目录的所属主都能删除该目录下的所有内容。
给/test/设置粘滞位

[root@MiWiFi-R3L-srv /]# chmod 1777 /test/
[root@MiWiFi-R3L-srv /]# ll /test/ -d
drwxrwxrwt. 2 root root 23 Aug  7 18:42 /test/

ennan在该目录下创建文件

[ennan@MiWiFi-R3L-srv test]$ touch ennan.txt

test用户虽然对目录/test/有足够的权限,但是仍然无法删除ennan.txt

[test@MiWiFi-R3L-srv test]$ rm ennan.txt -f
rm: cannot remove ‘ennan.txt’: Operation not permitted

取消粘滞位后,test用户可以删除ennan.txt

[root@MiWiFi-R3L-srv /]# chmod o-t /test/
[root@MiWiFi-R3L-srv /]# ll /test/ -d
drwxrwxrwx. 2 root root 23 Aug  7 18:48 /test/
[test@MiWiFi-R3L-srv test]$ rm ennan.txt -f
[test@MiWiFi-R3L-srv test]$ ll /test/
total 0

2. 特殊属性

chattr:只有 root 用户可以使用,用来修改文件系统的权限属性,建立凌驾于 rwx 基础权限之上的授权。
lsattr:查看文件的特殊属性。
chattr常用选型及解释

选项 解释
+i 锁定文问,任何人无法对文件进行操作
+a 无法写入和删除文件,可追加文件内容

例:当文件被+i后,包括root在内的所有用户无法对文件进行操作。

[root@MiWiFi-R3L-srv test]# touch ennan.txt
[root@MiWiFi-R3L-srv test]# lsattr ennan.txt 
---------------- ennan.txt
[root@MiWiFi-R3L-srv test]# chattr +i ennan.txt 
[root@MiWiFi-R3L-srv test]# lsattr ennan.txt 
----i----------- ennan.txt
[root@MiWiFi-R3L-srv test]# rm -f ennan.txt 
rm: cannot remove ‘ennan.txt’: Operation not permitted
[root@MiWiFi-R3L-srv test]# echo "hello" > ennan.txt 
-bash: ennan.txt: Permission denied

若对/etc/passwd设置了+i选项后,任何人无法增加或者删除用户

[root@MiWiFi-R3L-srv test]# chattr +i /etc/passwd
[root@MiWiFi-R3L-srv test]# useradd yan
useradd: cannot open /etc/passwd
[root@MiWiFi-R3L-srv test]# userdel ennan
userdel: cannot open /etc/passwd
# 取消文件锁定
[root@MiWiFi-R3L-srv test]# chattr -i /etc/passwd

文件使用了+a选项后,尽可追加文件内容,不可进行其他任何操作

[root@MiWiFi-R3L-srv test]# chattr +a ennan.txt 
[root@MiWiFi-R3L-srv test]# lsattr ennan.txt 
-----a---------- ennan.txt
[root@MiWiFi-R3L-srv test]# rm ennan.txt -f
rm: cannot remove ‘ennan.txt’: Operation not permitted
[root@MiWiFi-R3L-srv test]# echo "hello" >> ennan.txt 
[root@MiWiFi-R3L-srv test]# echo "My name" >> ennan.txt 
[root@MiWiFi-R3L-srv test]# cat ennan.txt 
hello
My name
# 取消a选项
[root@MiWiFi-R3L-srv test]# chattr -a ennan.txt 
[root@MiWiFi-R3L-srv test]# lsattr ennan.txt 
---------------- ennan.txt

3.进程掩码umask

通过umask可查看当前登陆用户的umask

[root@MiWiFi-R3L-srv ~]# umask 
0022

Linux在/etc/bashrc中定义了umask的值

[root@MiWiFi-R3L-srv ~]# vim /etc/bashrc 
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
   umask 002
else
   umask 022
fi

用户也可以通过umask临时设置umask的值

[root@MiWiFi-R3L-srv ~]# umask 002
[root@MiWiFi-R3L-srv ~]# umask 
0002

用户家目录的umask可以通过/etc/login.defs指定

[root@MiWiFi-R3L-srv ~]# grep UMASK /etc/login.defs 
UMASK           077
[root@MiWiFi-R3L-srv ~]# ll /home/
total 0
drwx------. 2 bgx     students 62 Aug  2 07:58 bgx
drwx------. 3 ennan   ennan    95 Aug  8 04:24 ennan
drwx------. 2 oldboy  edu      62 Aug  7 14:39 oldboy
drwx------. 2 oldgirl edu      62 Aug  7 14:41 oldgirl

当用户的umask为045的时候(其他用户组位为奇数)

[root@MiWiFi-R3L-srv ~]# umask
0045
[root@MiWiFi-R3L-srv ~]# touch test
[root@MiWiFi-R3L-srv ~]# mkdir dir
[root@MiWiFi-R3L-srv ~]# ll
total 0
drwx-wx-w-. 2 root root 6 Aug  8 06:43 dir
# 777-045=032
-rw--w--w-. 1 root root 0 Aug  8 06:42 test
# 666-045=621,而创建出来的文件权限是622,所以当umask的其他用户组位为奇数时,在其他用户组位再加1

umask值的所有位为奇数时

[root@MiWiFi-R3L-srv ~]# umask 
0035
[root@MiWiFi-R3L-srv ~]# touch test
[root@MiWiFi-R3L-srv ~]# mkdir dir
[root@MiWiFi-R3L-srv ~]# ll
total 0
drwxr---w-. 2 root root 6 Aug  8 06:50 dir
# 777-035=742
-rw-r---w-. 1 root root 0 Aug  8 06:50 test
# 666-035=631,而创建出来的文件的权限时642,所以当umask的所有位为奇数时,在为奇数的位再加1

umask的计算方式
文件:666-umask
目录:777-umask

相关文章

网友评论

      本文标题:day11-Linux特殊权限

      本文链接:https://www.haomeiwen.com/subject/foltjctx.html