Linux第二周学习笔记(12)windows
2.18 特殊权限set_uidide
set_uid:这个权限是针对二进制可执行文件,使文件在执行阶段具备文件全部者的的权限。学习
-------------------------------------------------------------------------------------------- ui
例如passwd命令:spa
[root@daizhihong01 ~]# which passwdorm
/usr/bin/passwdit
[root@daizhihong01 ~]# ls -l /usr/bin/passwdclass
-rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd权限
首先咱们分析不一样点:/usr/bin/passwd这个文件是一个红色的文件,-rwsr-xr-x.在它的权限位上多了一个“s”。学习笔记
这个“s”就是set_uid的权限:windows系统里一个普通的用户也是能够给本身的帐号更改密码,在Linux系统里passwd也是能够支持普通用户更改本身的密码,可是在Linux系统里面普通用户是不能更改密码文件的,咱们来看一下密码文件的一个权限:
[root@daizhihong01 ~]# ls -l /etc/shadow
---------- 1 root root 677 1月 30 23:11 /etc/shadow
/etc/shadow文件权限都是零,连超级用户root都没有权限更改,普通用户是更加改不了密码文件的。在root用户下是能够受权一个可写的权限给这个文件那就能够直接更改了,可是普通用户就不可能更改密码文件的。要想让普通用户更改本身的密码可是这个密码文件又不能让它写,这个就是比较矛盾的地方。那咱们怎么来实现这个问题呢?为了可以实现这个问题咱们就要使用特殊权限set_uid来完解决普通用户更改密码的问题,set_uid特殊权限可让普通用户在执行/usr/bin/passwd 命令的时候赋予普通用户临时拥有全部者的权限,进行密码的更改,更改完了之后权限就会被收回。这个就是set_uid特殊权限的做用。
set_uid特殊权限:保证普通用户临时拥有该命令全部者的身份,使用set_uid特殊权限的文件必须是一个二进制的文件,而且是一个可执行文件。在Linux系统当中只有/usr/bin/passwd 命令用到这个权限
----------------------------------------------------------------------------------------------
文件受权set_uid特殊权限:
给ls –l /usr/bin/ls, 授予set_uid特殊权限
先查看权限:
[root@daizhihong01 ~]# ls -l /usr/bin/ls
-rwxr-xr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls
而后切换一个普通用户:
[root@daizhihong01 ~]# su - yngndzh1
[yngndzh1@daizhihong01 ~]$ whoami
yngndzh1(切换到yngndzh1用户)
普通用户查看/root/时权限不够:
[yngndzh1@daizhihong01 ~]$ ls /root/
ls: 没法打开目录/root/: 权限不够
[yngndzh1@daizhihong01 ~]$ ls -ld /root/
dr-xr-x---. 3 root root 203 1月 30 20:53 /root/(普通用户是没有权限的)
对ls命令设置一个set_uid特殊权限使普通用户临时拥有root用户的权限:
切换到root用户下进行修改:
[root@daizhihong01 ~]# chmod u+s /usr/bin/ls
[root@daizhihong01 ~]# ls -l /usr/bin/ls
-rwsr-xr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls
这时-rwsr-xr-x权限位加上了“s”
切换到yngndzh1普通用户下运行ls命令:
[yngndzh1@daizhihong01 ~]$ ls -l /root/
总用量 12
-rwx------ 1 root root 0 1月 30 20:53 123.txt
-rw-------. 1 root root 1418 1月 22 08:19 anaconda-ks.cfg
-rw-r--r-- 1 root root 4358 1月 29 23:24 anaconda-ks.cfg.1
[yngndzh1@daizhihong01 ~]$ ls -ld /root/
dr-xr-x---. 3 root root 203 1月 30 20:53 /root/(权限依旧是普通用户不能执行)
受权set_uid特殊权限之后就能查看/root/目录下的内容了
去掉set_uid特殊权限:
[root@daizhihong01 ~]# chmod u-s /usr/bin/ls
[root@daizhihong01 ~]# ls -l /usr/bin/ls
-rwxr-xr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls
[root@daizhihong01 ~]#
--------------------------------------------------------------------------------------------
[root@daizhihong01 ~]# chmod u=rws /usr/bin/ls
[root@daizhihong01 ~]# ls -l /usr/bin/ls
-rwSr-xr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls
[root@daizhihong01 ~]#
这时变成了大“S”-rwSr-xr-x,这时由于没有X权限,少了一个x因此就变成了一个大写的“S”,设置成小“s”的话加入x权限便可,以下:
[root@daizhihong01 ~]# chmod u+x /usr/bin/ls
[root@daizhihong01 ~]# ls -l /usr/bin/ls
-rwsr-xr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls
大“S”和小“s”区别不大,由于咱们授予ls这个命令特殊权限的时候ls这个命令自己普通户就拥有X权限,因此执行时不受限制
[root@daizhihong01 ~]# ls -l /usr/bin/ls
-rwxr-xr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls
---------------------------------------------------------------------------------------------
目录受权set_uid特殊权限:
目录是能够加入set_uid特殊权限,可是用处不大