如何在linux进行权限管理

本章主要介绍Linux系统中的权限管理。
  • 所有者和所属组的管理‘
  • 权限管理
  • 用数字表示权限
  • 默认权限、特殊权限和隐藏权限
9.1 所有者和所属组
为了理解所有者和所属组的概念,我们先看图9。
张老板是某公司老板,买了一套房作为员工宿舍给A部门员工居
住。张老板是房主,所以他对房子具有很多权限,A部门员工只有使
用权而不能私自装修等,除张老板和A部门员工外,其他所有人都没
有任何权限。

 那么,这套房子对三组人设置的权限如表9-1所示。

同理,在Linux系统中对文件的授权也是通过这样的分组来进行的

1 的位置是所有者,这里/opt/hosts的所有者为root。
2 的位置是所属组,这里/opt/hosts的所属组为root。
如果想改变所有者,可以使用chown命令来实现,chown的用法如下。
chown user1 file

这里的意思是把file的所有者改为user1(理解为过户)。例如,把/opt/hosts的所有者改为lduan

[root@op ~]# chown blab /opt/hosts
[root@op ~]# ls -lh /opt/hosts 
-rw-r--r--. 1 blab root 158 11月 30 11:04 /opt/hosts
[root@op ~]# 
chown也可以用于修改组,用法如下。
 chown .group1 file 或 chown :group1 file
把file的所属组改成 group1,这里组前面有一个点或冒号。例如,把/opt/hosts 的所属
组改成users,如下所示。
[root@op ~]# chown .users /opt/hosts 
[root@op ~]# ls -lh /opt/hosts 
-rw-r--r--. 1 blab users 158 11月 30 11:04 /opt/hosts
[root@op ~]# 
需要注意的是,这里的点或冒号一定不要忘记了,否则就是修改所有者了。
也可以同时修改所有者和所属组,用法为“chown user1.group1 file”。例如,
把/opt/hosts的所有者改成root。所属组改成blab,如下所示。
[root@op ~]# chown root.blab /opt/hosts 
[root@op ~]# ls -lh /opt/hosts 
-rw-r--r--. 1 root blab 158 11月 30 11:04 /opt/hosts
[root@op ~]# 

9.2 查看及修改权限

对于一个文件来说,我们可以设置某用户对它具有什么操作权限,例如,是否可以看这个
文件中的内容,是否可以往这个文件中写内容等。具有的权限包括以下3种。
(1)r:读权限。
(2)w:写权限。
(3)x :可执行权限。
r 权限和 w 权限比较好理解,x 权限如何理解呢?
对于一个目录 dir1来说,如果用户 user1 对目录 dir1 有x权限,则 user1 是可以用 cd
命令进入到dir1 中的,反之则不能用 cd 命令进人到此目录。
对于文件file1来说,如果用户user1对file1具有x权限,则用户可以把 file1当成一个命令
来执行,当然运行的结果就要看file1的内容写的是什么了。

在 Linux系统中,文件或目录的权限是通过u、g、o授权的,看下面的例子

1 是所有者的权限,这里的权限为rw。
2 是所属组的权限,这里的权限为r。
3 是其他人的权限,这里的权限为r。
查看blab所属组,命令如下。
[root@op ~]# group
groupadd   groupdel   groupmems  groupmod   groups     
[root@op ~]# groups blab 
blab : blab
blab 用户只属于 blab 组,所以 blab 用户对/opt/hosts文件只能使用 o 的权限,即只读
r。
修改权限使用的是 chmod 命令

设置 o 不允许读 /opt/hosts
[root@op ~]# chmod o-r /opt/hosts 
[root@op ~]# ls -l /opt/hosts 
-rw-r-----. 1 root blab 158 11月 30 11:04 /opt/hosts
[root@op ~]# 
使用 jjj 用户读取此文件
[jjj@op ~]$ cat /opt/hosts 
cat: /opt/hosts: 权限不够
[jjj@op ~]$ 
可以看到,blab 用户没有读取 /opt/hosts 的权限。
现在把所有者的写权限去掉,同时给 o 加上读和写权限。
[root@op ~]# chmod u-w,o+rw /opt/hosts
[root@op ~]# ls -l /opt/hosts 
-r--r--rw-. 1 root blab 158 11月 30 11:04 /opt/hosts
测试 jjj 是否对此文件可读可写。
[jjj@op ~]$ cat /opt/hosts 
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
[jjj@op ~]$ echo 111 >> /opt/hosts 
[jjj@op ~]$ cat /opt/hosts 
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
111
从权限来看,root对此文件是只读权限,应该是写不进去的,但是实际却写进去了,这是
因为很多时候这些权限设置对root是不生效的。
9.3 用数字表示权限
我们还可以用三个数字分别表示u、g、o的权限,规则如下。
(1)r——4。
(2)w——2。
(3)x——1。
再来看前面的图
这里u的权限为rw,则r-4,w=2,没有x则是0数字加起来为6,所以用6表示u的权限。g的
权限为r,所以用4表示g的权限。o的权限为r,所以用4表示o的权限。
查看目录/opt的属性
[root@op ~]# ls -ld /opt/
drwxr-xr-x. 2 root root 72 11月 30 11:11 /opt/
[root@op ~]# 
这里u的权限为rwx,对应数字的和是4+2+1=7。
g的权限为x,对应数字的和是4+0+1=5。
o的权限为x,对应数字的和是4+0+1=5。
除给出权限能知道对应的数字外,给出数字也要能知道对应的权限。给出3个数字,要知
道第一个数字是u的权限,第二个数字是g的权限,第三个数字是o的权限,然后每个数字用
4、2、1进行分解。案例如下。
[root@op ~]# chmod 426 /opt/hosts 
[root@op ~]# ls -l /opt/hosts 
-r---w-rw-. 1 root blab 162 12月  2 13:45 /opt/hosts
[root@op ~]# ls -l /opt/hosts 
-r---w-rw-. 1 root blab 162 12月  2 13:45 /opt/hosts
[root@op ~]# 
此处4是u的权限,4不能再次拆分,对应的权限为r。
2是g的权限,对应的权限为w。
6是o的权限,6=4+2,所以对应的权限为r和w。
如果想给一个目录/文件设置权限,让所有人都具备所有权限,可以把此目录/文件的权限
设置为777。

9.4 默认权限
先做如下操作,清空/opt中所有的内容
[root@op ~]# cd /opt/
[root@op opt]# rm -rf *
[root@op opt]# ls
[root@op opt]# 
然后创建两个目录aa和 bb,创建两个文件11和22。
[root@op opt]# mkdir aa bb
[root@op opt]# touch 11 22
[root@op opt]# ll
总用量 0
-rw-r--r--. 1 root root 0 12月  2 13:57 11
-rw-r--r--. 1 root root 0 12月  2 13:57 22
drwxr-xr-x. 2 root root 6 12月  2 13:57 aa
drwxr-xr-x. 2 root root 6 12月  2 13:57 bb
[root@op opt]# 
可以看到,文件的默认权限都是644,目录的默认权限都是755(大家可以自行再多创建
几个文件和目录进行验证),这个默认权限是哪里来的呢?系统中存在一个叫umask的值。
[root@op opt]# umask
0022
[root@op opt]# 
9.5 特殊权限
除具有r、w、x三个权限外,还有 s 和 t 权限。
1.s 设置在可执行命令上
当某可执行命令的所有者的位置上有s位时,那么当普通
用户再执行这个命令时将具有所有者的权限
我们知道用户的密码都是存放在/etc/shadow中的,而/etc/shadow对其他人来说是没有
任何权限的
[root@op ~]# ls -l /etc/shadow
----------. 1 root root 1599 12月  1 11:14 /etc/shadow
[root@op ~]# 
举一个例子,查看/opt/11的权限。
[root@op opt]# ls -l /opt/11 
-rw-r--r--. 1 root root 0 12月  2 14:03 /opt/11
[root@op opt]# 
再看一下 vim 命令的属性。
[root@op opt]# ls -l $(which vim)
-rwxr-xr-x. 1 root root 3063600 9月  20 2021 /usr/bin/vim
[root@op opt]# 
这里 vim命令没有s位。
blab 用户对/opt/11只能使用o的权限,即r--,是没有写权限的,请自行用vim打开此文
件,写入一些数据,然后强制保存,如图9-9所示,发现是写不进去的。

给vim命令所有者位置上加上 s 权限。
[root@op opt]# ls -l $(which vim)
-rwsr-xr-x. 1 root root 3063600 9月  20 2021 /usr/bin/vim
[root@op opt]# 
前面讲可以用数字表示权限,3个数字分别是u、g、o的权限,有时我们可以看到有4个数

其中后面三个是u、g、o的权限,第一个数字就是特殊权限了。
(1)4=所有者+s。
(2)2=所属组+s。
(3)1=其他人+t。

9.6 隐藏权限

系统中还存在一些隐藏权限,这些权限的设置对 root 也是生效的。查看隐藏权限的命
令是lsattr,如果是查看目录的隐藏权限,需要加上-d选项。
[root@op opt]# lsattr -d /opt/aa/
-------------------- /opt/aa/
[root@op opt]# 
这里不存在任何隐藏权限。修改隐藏权限的命令是chattr,常见的隐藏权限包括以下两
种。
(1)a:只能增加,不能删除。
(2)i:不能增加,也不能删除。
增加权限用+,减去权限用-。
为/opt/aa增加a权限,命令如下。
[root@op opt]# chattr +a /opt/aa/
[root@op opt]# lsattr -d /opt/aa/
-----a-------------- /opt/aa/
[root@op opt]# 
目录/opt/aa中的内容只能增加,不能删除。
[root@op opt]# cp /etc/hosts /opt/aa/
[root@op opt]# ls /opt/aa/
hosts
[root@op opt]# rm -rf /opt/aa/hosts 
rm: 无法删除'/opt/aa/hosts': 不允许的操作
[root@op opt]# 
删除失败,因为目录/opt/aa中的内容不允许删除,但是里面的文件是可以修改的。
[root@op opt]# echo 1111 > /opt/aa/hosts 
[root@op opt]# 
可以看到,修改成功了。
去除a权限,命令如下。
[root@op opt]# chattr -a /opt/aa/
[root@op opt]# lsattr -d /opt/aa/
-------------------- /opt/aa/
[root@op opt]# 
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值