首页 > 代码库 > 07-权限管理
07-权限管理
1.1 环境搭建
#创建一个用户组
1 groupadd group_mode
#创建用户并属于 group_mode
1 useradd user_mode -g group_mode
#如果该用户有用户组的话:
1 usermod -g group_mode user_mode
#创建用户2属于这个用户组
1 useradd user_mode_2 -g group_mode
#创建其他用户test
1 useradd test
#查看创建情况
1 [root@AIGE ~]# id user_mode 2 3 uid=3337(user_mode) gid=3337(group_mode) groups=3337(group_mode) 4 5 [root@AIGE ~]# id user_mode_2 6 7 uid=3338(user_mode_2) gid=3337(group_mode) groups=3337(group_mode) 8 9 [root@AIGE ~]# id test 10 11 uid=3335(test) gid=3335(test) groups=3335(test) 12
#创建目录
1 [root@AIGE ~]# mkdir /user_mode 2 3 [root@AIGE ~]# ll -d /user_mode/ 4 5 drwxr-xr-x 2 root root 4096 Feb 9 09:20 /user_mode/ 6 7 [root@AIGE ~]# 8
第2章 文件权限测试
文件的执行权限和写权限需要读权限来配合。
执行权限对文件来说是最大的权限,相对来说比较危险。
所以默认的文件最高权限是666
文件默认权限为644 (umask 0022)
2.1 对文件的执行权限测试
用root创建文件夹及文件。
1 [root@AIGE user_mode]# pwd 2 3 /user_mode 4 5 [root@AIGE user_mode]# echo "echo Aige">>test.sh 6 7 [root@AIGE user_mode]# cat test.sh 8 9 echo Aige 10 11 [root@AIGE user_mode]# chmod +x test.sh 12 13 [root@AIGE user_mode]# sh test.sh 14 15 Aige 16 17 [root@AIGE user_mode]# ll test.sh 18 19 -rwxr-xr-x 1 root root 10 Feb 9 09:25 test.sh 20 21 [root@AIGE user_mode]# 22 23 user_mode运行该脚本 24 25 [user_mode@AIGE ~]$ /user_mode/test.sh 26 27 -bash: /user_mode/test.sh: Permission denied 28 29 显然,权限不足。 30
2.2 修改文件所有者及所属组
1 [root@AIGE user_mode]# chown -R user_mode.group_mode /user_mode/ 2 3 [root@AIGE user_mode]# ll test.sh 4 5 -rwxr-xr-x 1 user_mode group_mode 10 Feb 9 09:25 test.sh 6 7 [root@AIGE user_mode]# 8 9 #user_mode运行 10 11 [user_mode@AIGE ~]$ /user_mode/test.sh 12 13 Aige 14 15 #user_mode_2运行 16 17 [user_mode_2@AIGE ~]$ /user_mode/test.sh 18 19 Aige 20 21 #test运行 22 23 [test@AIGE ~]$ /user_mode/test.sh 24 25 Aige 26
修改权限:
1 [root@AIGE user_mode]# chmod u-x test.sh 2 3 [root@AIGE user_mode]# ll test.sh 4 5 -rw-r-xr-x 1 user_mode group_mode 10 Feb 9 09:25 test.sh 6
测试:
1 #user_mode运行: 2 3 [user_mode@AIGE ~]$ /user_mode/test.sh 4 5 -bash: /user_mode/test.sh: Permission denied 6 7 #user_mode_2运行: 8 9 [user_mode_2@AIGE ~]$ /user_mode/test.sh 10 11 Aige 12 13 #test运行: 14 15 [test@AIGE ~]$ /user_mode/test.sh 16 17 Aige 18
2.3 对文件进行读写权限测试
2.3.1 读权限
#权限检测
1 [root@AIGE user_mode]# ll test.sh 2 3 -rwxr-xr-x 1 user_mode group_mode 10 Feb 9 09:25 test.sh 4 5 #user_mode运行 6 7 [user_mode@AIGE ~]$ cat /user_mode/test.sh 8 9 echo Aige 10 11 #user_mode_2运行 12 13 [user_mode_2@AIGE ~]$ cat /user_mode/test.sh 14 15 echo Aige 16 17 #test运行 18 19 [test@AIGE ~]$ cat /user_mode/test.sh 20 21 echo Aige 22
#去掉读权限:
1 [root@AIGE user_mode]# chmod u-r test.sh 2 3 [root@AIGE user_mode]# ll test.sh 4 5 --wxr-xr-x 1 user_mode group_mode 10 Feb 9 09:25 test.sh 6 7 #user_mode运行: 8 9 [user_mode@AIGE ~]$ cat /user_mode/test.sh 10 11 cat: /user_mode/test.sh: Permission denied 12
2.3.2 写权限
1 [root@AIGE user_mode]# ll test.sh 2 3 -rwxr-xr-x 1 user_mode group_mode 10 Feb 9 09:25 test.sh 4 5 去掉写权限: 6 7 [root@AIGE user_mode]# chmod u-w test.sh 8 9 [root@AIGE user_mode]# ll test.sh 10 11 -r-xr-xr-x 1 user_mode group_mode 10 Feb 9 09:25 test.sh 12 13 #user_mode运行 14 15 [user_mode@AIGE ~]$ echo pwd >> /user_mode/test.sh 16 17 -bash: /user_mode/test.sh: Permission denied 18 19 有写权限没有读权限: 20 21 [root@AIGE user_mode]# chmod 355 test.sh 22 23 [root@AIGE user_mode]# ll test.sh 24 25 --wxr-xr-x 1 user_mode group_mode 10 Feb 9 09:25 test.sh 26 27 #user_mode运行: 28 29 [user_mode@AIGE ~]$ echo pwd > /user_mode/test.sh 30 31 [user_mode@AIGE ~]$ cat /user_mode/test.sh 32 33 cat: /user_mode/test.sh: Permission denied 34 35 [user_mode@AIGE ~]$ vi /user_mode/test.sh 36 37 "/user_mode/test.sh" [Permission Denied] 38
2.4 小结:
1. 可读r:标识具有读取,浏览文件内容(block)的权限
2. 可写w:标识具有新增,修改文件内容的权限。
1)如果没有r配合,那么vi编辑器会提示无法编辑(但是可以强制编辑),echo可以追加内容
2)删除文件,修改文件,创建文件的权限是父目录的权限控制的,与本身权限无关
3. 可执行x:标识具有执行文件的权限。
1)首先文件的本身要能执行(命令或脚本)
2)普通用户同时还需要具备r的权限才能执行
3)root用户只要有x的权限就能执行。
第3章 目录权限测试
目录最高权限为777,目录相对危险的权限是写权限。
所以系统默认的umask的值为0022,组员和其他人只有进入并查看的权限
目录默认的权限为755
1 [root@AIGE /]# ll -d /user_mode/ 2 3 drwxr-xr-x 2 user_mode group_mode 4096 Feb 9 09:25 /user_mode/ 4 5 #user_mode运行 6 7 [user_mode@AIGE ~]$ touch /user_mode/user 8 9 [user_mode@AIGE ~]$ ll /user_mode/user 10 11 -rw-r--r-- 1 user_mode group_mode 0 Feb 9 10:24 /user_mode/user 12 13 [user_mode@AIGE ~]$ 14 15 #user_mode_2运行 16 17 [user_mode_2@AIGE ~]$ touch /user_mode/user_2 18 19 touch: cannot touch `/user_mode/user_2‘: Permission denied 20 21 [user_mode_2@AIGE ~]$ 22
当目录没有写权限的时候,对应的目录不能对目录进行增(创建文件)删(删除文件)改(修改文件名),仅剩下就是查(查看文件的数量和文件名)
3.1 小结:
1. 可读r:标识具有浏览目录(ls)下面文件及子目录的权限
1)如果没有x权限,则不能进到目录,既无法执行cd dir
2)如果没有x权限,ls列表时可以看到所有文件名,但是无法显示文件的详细属性
2. 可写w:表示具有增加,删除或修改目录内文件名的权限。
3. 可执行x:表示具有进入目录的权限
第4章 其他
4.1 默认权限分配的命令umask
umask的二进制是三位一个数字,既例如uamsk是0022.那么它就是000 000 010 010
默认权限是把文件的最高权限减去umask值
例如普通文件的默认最高权限是0666改成二进制000 110 110 110
那么二进制对应位置相减,得出的就是最终创建文件的默认权限。
例如0减去1
1.1 suid,sgid,Stickybit
1.1.1 suid知识小结:是针对命令和二进制程序的
1)用户或属主对应的前三位权限的x位上如果有s就表示suid权限。
当x位上没有小写执行权限的时候,Suid的权限是显示S(大写)。
2)suid作用是让普通用户可以以root(或其他)的用户角色运行只有root(或其他)账号才能运行的程序或命令,或程序命令对应本来没有权限操作的文件等。
3)passwd可以修改自己的密码,因为/etc/shadow是没有任何权限的,既不能读写执行。没有suid的话就不能修改/etc/shadow的密码文件,就不能修改自己密码。
4)仅对二进制命令程序有效,不能用在shell等类似脚本文件上(脚本调用二进制命令)
5)二进制命令程序需要有可执行权限x配合
6)suid权限仅再程序命令执行过程中有效。
7)执行suid命令的任意系统用户都可以获得该命令程序在执行期间对应的拥有者的所有权限
8)suid方便了命令使用,但是谁执行了却不得知。对系统安全有一定的威胁
1.1.2 sgid
1)与suid不同的是,sgid可以针对文件和目录
2)一旦执行命令跳转到了那个命令的组的权限。
3)管理目录,得到了那个目录管理的权限。
1.1.3 sbit
1)只针对目录
2)/tmp就是拥有粘滞位,用户只能修改自己的文件(增删改)
1.2 小结:
三个都方便了使用,但是都对系统安全有一定的威胁。
第2章 命令
2.1 chmod
chmod 644 file
chmod u-x,g-x file
chmod u=rwx,o=rwx file
chmod -x file
2.2 chown
chown user.group file
矮哥运维群:93324526
07-权限管理