特殊权限:
mode:
ls -l
安全上下文
1、进程以某用户身份运行;进程是发起此进程的用户的代理,其用户身份进程发起者;
2、权限匹配模型:
(1) 进程的属主,是否与被访问的文件属主相同;
(2) 进程的属主所属于的组当中,是否有一个与被访问的文件的属组相同;
(3) 以other的权限进行访问;
进程的属主是发起者,属组是发起者的基本组
[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可能显示为大写或小写两种形式之一;
属主原有执行权限时,显示为小写;属主原没有执行权限时,显示为大写;
sgid: Set GID
前提:
常用方法:如果将目录的属组设置SGID权限之后,所有用户在此目录创建文件的属组不再是用
户的基本组,而是目录的属组
chmod g+s FILE... 在开发项目中多个人对同一个目录下的文件有写权限
一个用户对文件是否有删除权限取决于用户对文件所属目录是否有写权限
有那么一个目录:
指定的用户都能够在其中创建文件,也能删除自己的文件;但不能删除别人的文件;
sticky: 沾滞位 表现为在其他用户上有 t的权限
[root@root ~]#ls -ld /tmp/
drwxrwxrwt. 16 root root 4096 Dec 30 20:50 /tmp/ 让用户能创建文件但是不能删除别人的文件
chmod o+t FILE... 能实现用户能删除文件,其他用户不能删除此文件
suid sgid sticky 组成了3位二进制
000:
001:
010
011
100
101
110
111
chmod 7755
练习:
1、让普通用户使用/tmp/cat能查看管理员才有权限访问的文件;
2、新建目录/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