首页 > 代码库 > 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-权限管理