今天介绍一下用户权限的基本权限UGO的授权,学习一下基本元素。
一、概述
权限举个例子就是比如我们QQ空间的红钻特权,爱奇艺会员特权,游戏里面的VIP特权等
超级用户:可以做任何事情,不受限制
普通用户:能做有限的事情
超级用户的命令提示符#,普通用户的命令提示符$。
二、权限对象以及权限的类型
1、权限对象
u:属主(拥有者)
g:属组(拥有者同组)
o:其他人(其他用户)
特殊对象:a:所有人(u+g+o)
2、权限类型
符号表示 | 数字表示 | 说明 | 符号表示 | 数字表示 | 说明 |
r | 4 | 只读 | rx | 5 | 读和执行 |
w | 2 | 只写 | wx | 3 | 写和执行 |
x | 1 |
只执行 | rwx | 7 | 读、写和执行 |
rw | 6 |
读和写 | --- | 0 | 无权限 |
三、更改权限
权限的更改可以用符号和数字表示,下面来详细介绍其具体用法,介绍使用符号和使用数字的表达方式。
1、语法
语法:chmod (-R) 对象(u/g/o/a) 赋值符(+/-/=) 权限类型(r/w/x/) 文件/文件目录
“+”代表赋予权限
“-”代表取消权限
“=”代表覆盖权限
如果在给授权目录的时候加-R那么目录下的所有文件权限都会随着变化,下面会一一演示。
2、普通文件的基本权限解读
首先我们先使用cd命令进入到需要创建文件的目录,这个时候我们要用相对路径来操作,如果我们在root下使用绝对路径操作的话,普通用户是无法对文件进行操作的,因为root只有root用户才能访问,普通用户无法访问,为了防止后面出现问题我们使用cd命令进入到需要创建文件的目录
文件类型
d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件
cd /tmp/ //进入到tmp目录下
touch sure1 //在tmp目录下创建一个file1的文件
ls -l sure1 (ll sure1 是一样的效果都是查看sure1 的信息)
[root@localhost ~]# cd /tmp [root@localhost tmp]# touch sure1 [root@localhost tmp]# ll sure1 -rw-r--r--. 1 root root 0 9月 26 14:14 sure1
我们来解读一下sure1文件的信息
- rw-r--r--. 1 root root 0 9月 26 14:14 sure1
- :之前我们讲过的代表他是普通文件
rw-r--r--. :权:他是按照rwxrwxrwx排列的没有的权限会用“-”表示,三个三个组合,分别代表着属主、属组、其他人的权限,
rw-:属主的权限(u)
r--:属主的权限(g)
r--:其他人的权限(o)
上面讲的r:读、w:写、x:执行
1:如果是目录,代表目录下的子目录数,一个目录默认有两个子目录通过ls -a可以看到“.”和“..”,对于其他文件代表链接数。
root:属主
root:属组
0:文件大小
9月 26 14:14 :创建时间
sure1:文件名
3、更改权限演示
3.1对文件操作
1)“+”给属主赋予执行权,给属组和其他人赋予写和执行权
使用符号操作:
[root@localhost tmp]# ll sure1 //更改权限之前查看文件信息
-rw-r--r--. 1 root root 0 9月 26 14:14 sure1
[root@localhost tmp]# chmod u+x sure1 //给属主赋予执行权
[root@localhost tmp]# chmod go+wx sure1 //给属组和其他人赋予写和执行权
[root@localhost tmp]# ll sure1 //查看文件信息
-rwxrwxrwx. 1 root root 0 9月 26 14:14 sure1 //权限已经赋予成功
属组和其他人需要赋予的权利一样,所以可以直接一起赋予。
使用数字操作:
[root@localhost tmp]# ll sure2 //查看更改权限之前的文件信息
-rw-r--r--. 1 root root 0 9月 26 14:32 sure2
[root@localhost tmp]# chmod 777 sure2 //授权给sure2
[root@localhost tmp]# ll sure2
-rwxrwxrwx. 1 root root 0 9月 26 14:32 sure2
注意:数字授权相当于是覆盖授权,7=4(r)+2(w)+1(x),按照数字顺序分别表示属主、属组、其他人的权利。
2)“-”删除属主、属组、其他人的写和执行的权利
用符号操作:
[root@localhost tmp]# chmod ugo-wx sure1 //删除属主、属组、其他人的写和执行的权利
[root@localhost tmp]# ll sure1 //查看sure1的信息
-r--r--r--. 1 root root 0 9月 26 14:14 sure1
用数字操作:改操作相当于只保留读的权利
[root@localhost tmp]# chmod 444 sure2
[root@localhost tmp]# ll sure2
-r--r--r--. 1 root root 0 9月 26 14:32 sure2
3)“=”覆盖授权,将属主和属组的权限只有读和写
用符号操作:
[root@localhost tmp]# chmod ug=rw sure1
[root@localhost tmp]# ll sure1
-rw-rw-r--. 1 root root 0 9月 26 14:14 sure1
用数字操作:注意第三个数字不能不写不然意思就是其他人没有任何权利,所以这里第三个数字也就是其他人权利需要继续赋予原来读的权利。
[root@localhost tmp]# chmod 664 sure2
[root@localhost tmp]# ll sure2
-rw-rw-r--. 1 root root 0 9月 26 14:32 sure2
3.2对目录操作
这里重点讲-R //在更改目录权限的时候使用-R改目录下的文件权限也会随之改变。
目录如果没有x执行权
1)如果没有x权限,不能进到目录里,即无法 cd dir
2)如果没有x权限,ls列表可以看到所有文件名,但是会提示无权访问目录下文件
3)如果没有x权限,ls -l列表,所有的属性会带有问号,也会提示无权访问目录下文件,但是可没有r无法列表文件及目录
没有w无法新建和删除
对目录进行授权
[root@localhost tmp]# mkdir -p /tmp/dir1/sss1 //创建一个目录
[root@localhost tmp]# ls -ld /tmp/dir1/sss1 //查看目录信息
drwxrwxrwx. 2 root root 15 9月 26 15:52 /tmp/dir1/sss1
[root@localhost tmp]# touch /tmp/dir1/sss1 1 //在sss1目录下创建一个1文件
[root@localhost tmp]# ll /tmp/dir1/sss1/1 //查看1文件信息
-rw-r--r--. 1 root root 0 9月 26 15:52 /tmp/dir1/sss1/1
[root@localhost tmp]# chmod 777 /tmp/dir1/sss1 //不用-R更改sss1目录权限
[root@localhost tmp]# ll /tmp/dir1
drwxrwxrwx. 2 root root 6 9月 26 15:48 sss1
[root@localhost tmp]# ll /tmp/dir1/sss1/1 //查看1文件信息
-rw-r--r--. 1 root root 0 9月 26 15:52 /tmp/dir1/sss1/1
[root@localhost tmp]# chmod -R 777 /tmp/dir1/sss1 //用-R修改sss1目录权限
[root@localhost tmp]# ls -ld /tmp/dir1/sss1
drwxrwxrwx. 2 root root 15 9月 26 15:52 /tmp/dir1/sss1
[root@localhost tmp]# ll /tmp/dir1/sss1/1 //查看1文件信息发现1的权限被更改
-rwxrwxrwx. 1 root root 0 9月 26 15:52 /tmp/dir1/sss1/1
四、测试执行权
我们用sure1文件进行操作,要测试执行权,需要在文件内编写可执行的文本。
1)编写程序
echo:就是把后面的内容显示在屏幕上
read:读取我们输入的信息放到我们后面指定的变量内(-p代表将后面信息显示在屏幕上)
[root@localhost tmp]# vim sure1
//进入到sure1文件内进行编写内容,下列是在sure1内输入的信息
echo “hello2022”
read -p “input your name please:” name
echo “welcome $name ”
2)增加执行的权利
这里我们只需要给属主加执行权就可以了,属主就是我们创建文件使用的账号
[root@localhost tmp]# chmod u+x sure1 //给属主加执行的权利
[root@localhost tmp]# ll sure1
-rwxrw-r--. 1 root root 73 9月 26 14:55 sure1 //属主有了执行权
3)运行测试
运行就是打开这个文件即可
[root@localhost tmp]# ./sure1 //./代表打开文件
hello //输出结果
input your name please:sure //read的执行结果输入内容放入到name内
welcome sure //运行最后的结果
4)去除权限测试
[root@localhost tmp]# chmod u-x sure1 //去除属主的执行权
[root@localhost tmp]# ll sure1
-rw-rw-r--. 1 root root 73 9月 26 14:55 sure1 //属主没有了执行权
[root@localhost tmp]# ./sure1 //执行文件
bash: ./sure1: 权限不够 //显示权限不足
五、更改属主、属组
首先更改sure1的权限为默认的属主有读写权限,属组和其他人只有读的权利
[root@localhost tmp]# ll sure1
-rw-r--r--. 1 root root 73 9月 26 14:55 sure1
接下来我们需要更改的就是两个root的所在位置。
1)chown命令
注意一定要root下才能用
chown:设置一个文件属于谁,属主
语法:chown 用户名.组名 文件
注意:同chmod一样可以对目录的属主和属组进行修改,加-R一样会修改目录下的所有文件
[root@localhost tmp]# chown sure1.S1 sure1 //改属主、属组(属主为sure1,属组为S1)
[root@localhost tmp]# ll sure1
-rw-r--r--. 1 sure1 S1 73 9月 26 14:55 sure1 //更改成功
[root@localhost tmp]# chown shuo sure1 //只改属主(更改属主为shuo)
[root@localhost tmp]# ll sure1
-rw-r--r--. 1 shuo S1 73 9月 26 14:55 sure1 //更改成功
[root@localhost tmp]# chown .S2 sure1 //只改属组(更改属组为S2)
[root@localhost tmp]# ll sure1
-rw-r--r--. 1 shuo S2 73 9月 26 14:55 sure1 //更改成功
2)chgrp命令
注意一定要root下才能用
chgrp:只修改属组
语法:chgrp 组名 文件
注意:和chmod、chown一样可以修改目录的属组加-R一样会修改目录下的所有文件的属组
[root@localhost tmp]# ll sure1 //查看sure1信息
-rw-r--r--. 1 shuo root 73 9月 26 14:55 sure1
[root@localhost tmp]# chgrp S1 sure1 //修改sure1的属组
[root@localhost tmp]# ll sure1 //查看sure1修改后的信息
-rw-r--r--. 1 shuo S1 73 9月 26 14:55 sure1
后面chown和chgrp对目录的修改就不在演示了,参照chmod的使用,后面chgrp命令可以忽略不看,因为chgrp的功能,chown可以实现,使用chown只修改属组的时候需要加“.”。