链接:https://www.cnblogs.com/rallina/p/17931072.html

linux权限管理
一、权限概述
㈠ 什么是权限
权限:
在计算机
系统中
,权限是指某个
计算机用户
具有
使用软件资源的权利
。
思考:计算机资源分为哪两部分?
-
硬件资源 硬盘、CPU、内存、网卡等
物理硬件资源
-
软件资源
软件
:操作系统(特殊的软件)、应用程序。只要不启动,这些软件就是一堆静态的
文件
,并且静静的躺在我们计算机的磁盘中。
软件资源
:Linux系统中,一切皆文件!SO,这里的软件资源就是
文件资源
。
总结:
我们今天所讲的权限,指的就是:
文件资源
所拥有的相关权限,即
文件权限
。
㈡ 权限设置目的
文件权限的设置目的:
是想让某个用户有权利操作文件
㈢ 文件权限的分类
注意:
权限是
设置在文件上
的,而不是用户
二、
普通权限(重点)
㈠ 理解普通权限rwx含义
1、读权限—r(
r
ead)
2、写权限—w(
w
rite)
3、执行权限—x(e
x
ecute)
4、没有权限—横杠
-
㈡ 理解UGO的含义
1、UGO指的是什么
UGO,指的是
用户身份
,每个字母代表
不同的
用户身份。
-
U(the user who owns it)
文件的
拥有者
(owner)或者
创建者
-
G(other users in the file’s
g
roup)
在文件的所属组(默认是创建文件的用户的主组)里的用户
-
O(
o
ther users
not in
the file’s group)
既不是文件的创建者,也不在文件属组里的用户,称为其他人
注意:
除了上面ugo以外,还有一个字母
a
(all users),表示
所有用户
,包含ugo
2、如何判断不同身份的用户对文件的权限
查看文件详细信息,包含权限信息:
[root@localhost ~]# ls -l
total 144
-rw-r--r--. 1 root root 9 Mar 2 20:38 1.sh
-rw-------. 1 root root 1651 Feb 28 11:00 anaconda-ks.cfg
drwxr-xr-x. 2 root root 4096 Mar 6 18:34 Desktop
drwxr-xr-x. 2 root root 4096 Feb 28 14:12 dir1
㈢ 修改文件普通权限(chmod)
1、chmod命令用法
chmod [选项] 文件名
常见选项:
-R, --recursive 递归更改目录和目录里文件的权限
2、举例说明
① 通过字母形式更改文件权限
u:表示文件拥有者
g:表示文件属组用户
o:表示其他人,即不是文件的创建者,也不在文件属组里
a:表示所有人
[root@localhost ~]# mkdir /tmp/dir1
[root@localhost ~]# touch /tmp/dir1/file{1..5}
[root@localhost ~]# touch /tmp/test{1..3}
[root@localhost ~]# ll /tmp/ -R
[root@localhost tmp]# pwd
/tmp
[root@localhost tmp]# ll test1
-rw-r--r--. 1 root root 0 Mar 6 20:45 test1
[root@localhost tmp]# chmod u+x test1
[root@localhost tmp]# ll test1
-rwxr--r--. 1 root root 0 Mar 6 20:45 test1
[root@localhost tmp]# chmod g+w test1
[root@localhost tmp]# ll test1
-rwxrw-r--. 1 root root 0 Mar 6 20:45 test1
[root@localhost tmp]# chmod o-r test1
[root@localhost tmp]# ll test1
-rwxrw----. 1 root root 0 Mar 6 20:45 test1
[root@localhost tmp]# ll test2
-rw-r--r--. 1 root root 0 Mar 6 20:45 test2
[root@localhost tmp]# chmod a+x test2
[root@localhost tmp]# ll test2
-rwxr-xr-x. 1 root root 0 Mar 6 20:45 test2
[root@localhost tmp]# ll test3
-rw-r--r--. 1 root root 0 Mar 6 20:45 test3
[root@localhost tmp]# chmod u+x,g+w,o-r test3
[root@localhost tmp]# ll test3
-rwxrw----. 1 root root 0 Mar 6 20:45 test3
[root@localhost tmp]# chmod u=rw,g=rx,o+r test3
[root@localhost tmp]# ll test3
-rw-r-xr--. 1 root root 0
Mar 6 20:45 test3
修改目录的权限:
[root@localhost tmp]# ll -d dir1/
drwxr-xr-x. 2 root root 4096 Mar 6 20:45 dir1/
[root@localhost tmp]# ll dir1/
total 0
-rw-r--r--. 1 root root 0 Mar 6 20:45 file1
-rw-r--r--. 1 root root 0 Mar 6 20:45 file2
-rw-r--r--. 1 root root 0 Mar 6 20:45 file3
-rw-r--r--. 1 root root 0 Mar 6 20:45 file4
-rw-r--r--. 1 root root 0 Mar 6 20:45 file5
1.只修改目录本身的权限
[root@localhost tmp]# chmod g+w dir1/
[root@localhost tmp]# ll -d dir1/
drwxrwxr-x. 2 root root 4096 Mar 6 20:45 dir1/
[root@localhost tmp]# ll dir1/
total 0
-rw-r--r--. 1 root root 0 Mar 6 20:45 file1
-rw-r--r--. 1 root root 0 Mar 6 20:45 file2
-rw-r--r--. 1 root root 0 Mar 6 20:45 file3
-rw-r--r--. 1 root root 0 Mar 6 20:45 file4
-rw-r--r--. 1 root root 0 Mar 6 20:45 file5
说明:目录下面文件的权限并没有修改
2.修改目录以及目录里所有文件的权限(递归修改),使用-R参数
[root@localhost tmp]# chmod -R o+w dir1/
[root@localhost tmp]# ll -d dir1/
drwxrwxrwx. 2 root root 4096 Mar 6 20:45 dir1/
[root@localhost tmp]# ll dir1/
total 0
-rw-r--rw-. 1 root root 0 Mar 6 20:45 file1
-rw-r--rw-. 1 root root 0 Mar 6 20:45 file2
-rw-r--rw-. 1 root root 0 Mar 6 20:45 file3
-rw-r--rw-. 1 root root 0 Mar 6 20:45 file4
-rw-r--rw-. 1 root root 0 Mar 6 20:45 file5
② 通过数字形式更改文件权限
字母和数字对应关系:
r——4
w——2
x——1
-——0
rw- r-x r-- 用数字表示就是654
rwx rw- --- 用数字表示就是760
755 用字母表示就是rwx r-x r-x
644 用字母表示就是rw- r-- r--
# chmod 644 file1
# chmod 700 file2
# chmod -R 755 dir1
总结:
-
用户是否可以删除目录里的文件,看的是目录的权限!!!
-
对于正常能够操作的目录来说,应该默认具备r-x
3、课堂练习
-
创建5个用户user01~user05和一个admin组
-
将user01~user03用户加入到admin组里
-
user01用户在其家目录里创建file1~file3三个文件
-
user02用户编辑/home/user01/file1文件的内容:good good study,day day up!
-
user05用户往/home/user01/file1文件里追加内容:I known
-
user04用删除/home/user01家目录的所有文件
三、高级权限(了解)
㈠ 高级权限有哪些
1、冒险位(SETUID)
2、强制位(SETGID)
3、
粘滞位(STICKY)
㈡ 高级权限设置
1、冒险位举例
需求:
给一个vim命令设置冒险位,目的是任何人拿vim去修改文件可以临时获得文件拥有者的权限
[root@localhost tmp]# which vim
/usr/bin/vim
[root@localhost tmp]# ll /usr/bin/vim
-rwxr-xr-x. 1 root root 2324712 Dec 22 2016 /usr/bin/vim
[root@localhost tmp]# chmod u+s /usr/bin/vim
或者
[root@localhost tmp]# chmod 4755 /usr/bin/vim
[root@localhost tmp]# ll /usr/bin/vim
-rwsr-xr-x. 1 root root 2324712 Dec 22 2016 /usr/bin/vim
测试验证,普通用户使用vim修改一个本没有权限修改的文件:
[root@localhost tmp]# ll /etc/passwd
-rw-r--r--. 1 root root 1650 Mar 5 20:39 /etc/passwd
[root@localhost tmp]# su - user01
[user01@localhost ~]$ vim /etc/passwd
验证是否可以修改成功,如果可以,说明user01用户临时拥有了/etc/passwd文件拥有者的权限
2、强制位举例
需求:
给目录dir2设置一个强制位,测试是否任何人在该目录里创建的文件属组都是该目录的属组
[root@localhost tmp]# ll -d dir2
drwxr-xr-x. 2 root root 4096 Mar 6 13:42 dir2
给dir2增加强制位:
[root@localhost tmp]# chmod g+s dir2
给dir2目录设置权限,让其他人可以写
[root@localhost tmp]# chmod o+w dir2
[root@localhost tmp]# ll -d dir2
drwxr-srwx. 2 root root 4096 Mar 6 13:42 dir2
测试普通用户user01在dir2目录里创建文件的属组是否是dir2的属组
[root@localhost tmp]# su - user01
[user01@localhost ~]$ touch /tmp/dir2/file1
[user01@localhost ~]$ ll /tmp/dir2/file1
-rw-rw-r--. 1 user01 root 0 Mar 6 13:44 /tmp/dir2/file1
3、
粘滞位举例
需求:
在创建一个公共目录/tmp/dir3,要求所有人都可以在该公共目录里创建、删除文件;但是只能自己管理自己,不能删除别人的文件
[root@localhost ~]# mkdir /tmp/dir3
[root@localhost ~]# chmod 777 /tmp/dir3
[root@localhost ~]# chmod o+t /tmp/dir3
或者一步到位:
[root@localhost ~]# chmod 1777 /tmp/dir3
[root@localhost ~]# ll -d /tmp/dir3
drwxrwxrwt. 2 root root 4096 Mar 6 13:52 /tmp/dir3
测试验证:
自己完成
㈢ 总结
四、默认权限(了解)
㈠ 什么是文件的默认权限
所谓文件的默认权限(遮罩权限),是指用户创建文件后,
文件天生
就有的权限,不需要设置。
㈡ 文件默认权限由谁控制
文件默认权限由一个叫做
umask
的东西来控制。
㈢ umask如何控制文件默认权限
1、临时控制
-
什么是临时控制?
临时控制,指的是用命令
umask
临时设置,只在当前终端当前进程中生效。
查看当前用户的umask:
[root@localhost ~]# umask
0022
[root@localhost ~]# su - user01
[user01@localhost ~]$ umask
0002
注意:
1. 管理员和普通用户的umask不同,就表示管理员和普通用户创建的文件的默认权限不同!
2. 第1位数字表示高级权限;后面3位数字表示普通权限