特殊权限:安全
mode:
ls -lssh
安全上下文
一、进程以某用户身份运行;进程是发起此进程的用户的代理,其用户身份进程发起者;
二、权限匹配模型:
(1) 进程的属主,是否与被访问的文件属主相同;
(2) 进程的属主所属于的组当中,是否有一个与被访问的文件的属组相同;
(3) 以other的权限进行访问;
进程的属主是发起者,属组是发起者的基本组oop
[root@root ~]#ls -l $(which cat)
-rwxr-xr-x. 1 root root 48568 Oct 15 12:51 /bin/cat
[root@root ~]#ls -l $(which passwd)
-rwsr-xr-x. 1 root root 30768 Feb 22 2012 /usr/bin/passwd 注意属主上的 s 权限位
普通用户使用passwd时,是不能接参数的,也就是说只能改本身的密码
称为suid: Set UID
前提:此类文件为有可执行权限的命令
(当某用户尝试执行具备suid权限的命令时,不是以命令的发起者做为进程的用户身份,而是以
这个文件的属主看成进程的身份)
任何用户运行此命令为一个进程时,此进程的有效身份不是发起者,而是命令文件自身的属主;
可以临时的让某些用户以管理员的权限来执行某些命令
chmod u+s FILE... 便可使文件具备suid的权限
使用ls -l查看时,此s可能显示为大写或小写两种形式之一;
属主原有执行权限时,显示为小写;属主原没有执行权限时,显示为大写;ui
sgid: Set GID
前提:
经常使用方法:若是将目录的属组设置SGID权限以后,全部用户在此目录建立文件的属组再也不是用
户的基本组,而是目录的属组3d
chmod g+s FILE... 在开发项目中多我的对同一个目录下的文件有写权限
一个用户对文件是否有删除权限取决于用户对文件所属目录是否有写权限
有那么一个目录:
指定的用户都可以在其中建立文件,也能删除本身的文件;但不能删除别人的文件;代理
sticky: 沾滞位 表现为在其余用户上有 t的权限
[root@root ~]#ls -ld /tmp/
drwxrwxrwt. 16 root root 4096 Dec 30 20:50 /tmp/ 让用户能建立文件可是不能删除别人的文件token
chmod o+t FILE... 能实现用户能删除文件,其余用户不能删除此文件进程
suid sgid sticky 组成了3位二进制
000:
001:
010
011
100
101
110
111hadoop
chmod 7755 开发
练习:
一、让普通用户使用/tmp/cat能查看管理员才有权限访问的文件;
二、新建目录/project/test,让普通用户hadoop和openstack对此目录都能
建立文件,且建立的文件的属组为此目录的属组,而非用户自身的属组,此
外还要求,每一个用户不能删除其它人的文件;
答案:
1.
把命令复制到tmp目录下
[root@root ~]#which cat
/bin/cat
[root@root ~]#cp /bin/cat /tmp/
[root@root ~]#ls -l /tmp/cat
-rwxr-xr-x. 1 root root 48568 Dec 30 21:07 /tmp/cat
[root@root ~]#ssh user10@192.168.20.120 "/tmp/cat /etc/shadow"
user10@192.168.20.120's password:
/tmp/cat: /etc/shadow: Permission denied
[root@root ~]#chmod u+s /tmp/cat 命令加入suid后,再来以普通用户的身份查看管理员才有权限查看的文件
[root@root ~]#ls -l /tmp/cat
-rwsr-xr-x. 1 root root 48568 Dec 30 21:07 /tmp/cat
[root@root ~]#ssh user10@192.168.20.120 "/tmp/cat /etc/shadow"
user10@192.168.20.120's password:
root:$6$0LBho94G$uPzBpRjBrDXJSoyVY6QqYXICQTDd6QHAq0OfT4lga7mYnoIjsOkd7MBQu7UOClBq2rDHIKxVU3d9mzCXZy8cu.:16425:0:99999:7:::
bin:*:15980:0:99999:7:::
daemon:*:15980:0:99999:7:::
adm:*:15980:0:99999:7:::
。。。。。。。。。。。。。。。。
2. ----------------------------------------------------- [root@root ~]#mkdir -pv /project/test mkdir: created directory `/project' mkdir: created directory `/project/test' [root@root ~]#id hadoop id: hadoop: No such user [root@root ~]#useradd hadoop [root@root ~]#passwd hadoop Changing password for user hadoop. New password: BAD PASSWORD: it is too simplistic/systematic BAD PASSWORD: is too simple Retype new password: passwd: all authentication tokens updated successfully. [root@root ~]#id openstack uid=520(openstack) gid=520(openstack) groups=520(openstack) [root@root ~]#passwd openstack Changing password for user openstack. New password: BAD PASSWORD: it is too simplistic/systematic BAD PASSWORD: is too simple Retype new password: passwd: all authentication tokens updated successfully. [root@root ~]#id user10 uid=1007(user10) gid=300(user10) groups=300(user10) [root@root ~]#chown -R user10.user10 /project/ [root@root ~]#ls -l /project/ total 4 drwxr-xr-x. 2 user10 user10 4096 Dec 30 21:27 test [root@root ~]#usermod -a -G user10 hadoop [root@root ~]#usermod -a -G user10 openstack [root@root ~]#id -G hadoop 1042 300 [root@root ~]#id -Gn hadoop hadoop user10 [root@root ~]#id hadoop uid=1039(hadoop) gid=1042(hadoop) groups=1042(hadoop),300(user10) [root@root ~]#id openstack uid=520(openstack) gid=520(openstack) groups=520(openstack),300(user10) [root@root ~]#cd /project/test/ [root@root test]#ssh hadoop@192.168.20.120 "touch yes.hadoop yes1.hadoop" hadoop@192.168.20.120's password: [root@root test]#ls -l /project/test/ total 0 [root@root test]#ssh hadoop@192.168.20.120 "touch /project/test/{yes.hadoop,yes1.hadoop}" hadoop@192.168.20.120's password: touch: cannot touch `/project/test/yes.hadoop': Permission denied touch: cannot touch `/project/test/yes1.hadoop': Permission denied [root@root test]#ls /project/test -ld drwxr-xr-x. 2 user10 user10 4096 Dec 30 21:27 /project/test [root@root test]#chmod g+w /project/test [root@root test]#ls /project/test -ld drwxrwxr-x. 2 user10 user10 4096 Dec 30 21:27 /project/test [root@root test]#ssh hadoop@192.168.20.120 "touch /project/test/{yes.hadoop,yes1.hadoop}" hadoop@192.168.20.120's password: [root@root test]#ls /project/test/ -l total 0 -rw-r--r--. 1 hadoop hadoop 0 Dec 30 21:35 yes1.hadoop -rw-r--r--. 1 hadoop hadoop 0 Dec 30 21:35 yes.hadoop [root@root test]#chmod g+s /project/test [root@root test]#ls -ld /project/test drwxrwsr-x. 2 user10 user10 4096 Dec 30 21:35 /project/test [root@root test]#ssh hadoop@192.168.20.120 "touch /project/test/{yes.hadoop1,yes1.hadoop2}" hadoop@192.168.20.120's password: [root@root test]#ls /project/test/ yes1.hadoop yes1.hadoop2 yes.hadoop yes.hadoop1 [root@root test]#ls /project/test/ -l total 0 -rw-r--r--. 1 hadoop hadoop 0 Dec 30 21:35 yes1.hadoop -rw-r--r--. 1 hadoop user10 0 Dec 30 21:36 yes1.hadoop2 -rw-r--r--. 1 hadoop hadoop 0 Dec 30 21:35 yes.hadoop -rw-r--r--. 1 hadoop user10 0 Dec 30 21:36 yes.hadoop1 [root@root test]#ssh openstack@192.168.20.120 "touch /project/test/{yes.openstack1,yes1.openstack2}" openstack@192.168.20.120's password: [root@root test]#ls -l /project/test/ total 0 -rw-r--r--. 1 hadoop hadoop 0 Dec 30 21:35 yes1.hadoop -rw-r--r--. 1 hadoop user10 0 Dec 30 21:36 yes1.hadoop2 -rw-r--r--. 1 openstack user10 0 Dec 30 21:38 yes1.openstack2 -rw-r--r--. 1 hadoop hadoop 0 Dec 30 21:35 yes.hadoop -rw-r--r--. 1 hadoop user10 0 Dec 30 21:36 yes.hadoop1 -rw-r--r--. 1 openstack user10 0 Dec 30 21:38 yes.openstack1 [root@root test]#ssh openstack@192.168.20.120 "rm -f /project/test/yes1.hadoop2" openstack@192.168.20.120's password: [root@root test]#ls /project/test/ -l total 0 -rw-r--r--. 1 hadoop hadoop 0 Dec 30 21:35 yes1.hadoop -rw-r--r--. 1 openstack user10 0 Dec 30 21:38 yes1.openstack2 -rw-r--r--. 1 hadoop hadoop 0 Dec 30 21:35 yes.hadoop -rw-r--r--. 1 hadoop user10 0 Dec 30 21:36 yes.hadoop1 -rw-r--r--. 1 openstack user10 0 Dec 30 21:38 yes.openstack1 [root@root test]#chmod o+t /project/test [root@root test]#ls -ld /project/test drwxrwsr-t. 2 user10 user10 4096 Dec 30 21:39 /project/test [root@root test]#ssh openstack@192.168.20.120 "rm -f /project/test/yes.hadoop1" openstack@192.168.20.120's password: rm: cannot remove `/project/test/yes.hadoop1': Operation not permitted [root@root test]#ssh openstack@192.168.20.120 "rm -f /project/test/yes.openstack1" openstack@192.168.20.120's password: [root@root test]#ll /project/test/ total 0 -rw-r--r--. 1 hadoop hadoop 0 Dec 30 21:35 yes1.hadoop -rw-r--r--. 1 openstack user10 0 Dec 30 21:38 yes1.openstack2 -rw-r--r--. 1 hadoop hadoop 0 Dec 30 21:35 yes.hadoop -rw-r--r--. 1 hadoop user10 0 Dec 30 21:36 yes.hadoop1