权限的基本概念
在Linux系统下有两种用户,分别为普通用户和超级用户 超级用户:可以再linux系统下做任何事情,不受限制 普通用户:在linux下做有限的事情。 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。 我们看到这样子一张图,当我们查看文件的详细信息时候,显示出来了文件的类型,文件的读写可执行权限,以及文件的连接数、拥有者,所属用户组、文件的大小、文件的最新修改日期和文件名称。 在这里我们详细的介绍一下前面的三种。 前面十个字符,第一个代表的是文件的类型即为: d:文件夹 -:普通文件 l:软链接(类似Windows的快捷方式) b:块设备文件(例如硬盘、光驱等) p:管道文件 c:字符设备文件(例如屏幕等串口设备) s:套接口文件 接下来的九个字符三三为一组,分别为文件拥有者(owner)、文件的所属组(group)、其他用户(other)的读写可执行权限。其中 rwx分别表示文件可读,可写,可执行,对应位置的-代表文件的该用户没有该权限。 我们可以这样子来理解权限,就是一件事情是否允许被特定的人做,权限是用来约束人的,文件的本身就具有天然的rwx属性。而文件的用户类别指的是一种角身份。
权限的修改
上面讲述了一些权限的基本概念,在文件的权限中,权限是可以修改的,以此用来约束人的。 权限是可以修改的,
chmod 设置文件的访问权限
格式 chmod 【参数】 权限 文件名
R -> 递归修改目录文件的权限 用户表示符+/-=权限字符 1、+:向权限范围增加权限代号所表示的权限 2、-:向权限范围取消权限代号所表示的权限 3、=:向权限范围赋予权限代号所表示的权限 用户符号: 1、u:拥有者 2、g:拥有者同组用 3、o:其它用户 4、a:所有用户 当我们删掉test2.c的查看权限的时候我们便不能查看该文件的内容了。 当然这里我们有8进制数值表示方法
权限符号 | 八进制 | 二进制 |
---|
r | 4 | 100 | w | 2 | 010 | x | 1 | 001 | rw | 6 | 110 | rx | 5 | 101 | wx | 3 | 011 | rwx | 7 | 111 |
这里我们可以直接用数字来表示 这里需要注意的是,我们这里的test2.c虽然显示的为可执行文件,但是我们并不能执行,这就相当于我们在windows系统下将一个后缀为.txt的文件后缀改为.exe,这个文件依然是不可以执行的。
chown 修改文件的拥有者
格式为:chown 参数 用户 文件
这里我们看到并不允许这样子操作,因此我们在命令前面加上sudo 这个时候为我们就是以root的身份执行这串指令 这个时候我们就可以将我们的所属组更改了。sudo这个命令有的人没有办法使用,我们再root用户下来到/etc目录下,之后再给当前目录下的sudoers文件中添加写权限,chmod u+w /etc/sudoers,之后再打开这个文件,在root ALL=(ALL) ALL 保存退出即可,之后来到我们的用户下就可以使用sudo命令了, 之后如上所示,就可以更改我们的文件拥有者了。这里我们还需要能看到,我们将一个东西给别人是需要经过他人的同意的,并且我们要将我们的文件的拥有者改回来。 我们发现是改不回来的,同样的,我们以sudo命令去执行就可以将其更改回来了 这个我们就可以更加清楚的看到root的权限之大,是不受控制的。
chgrp 修改文件的所属组
格式为: chgrp 【参数】 用户组名 文件名
这里我们需要注意的是这里所属组的修改是不需要sudo,因为文件本身就是属于自己的。但是当文件不是自己的时候,就不可以更改所属组,需要sudo更高权限。但是我这里使用sudo是因为我们这里将文件所属组更改的是root用户,我没有创建其他用户。 这里我们还要了解到chown可以一次更改我们的拥有者和所属组 chown 用户:用户 文件
问题
进入目录需要什么权限? 1>如果目录本身对other据有w权限,other也可以删掉任何的目录下的文件 2>如果目录本身对other没有w权限,other不可以删掉任何的目录下的文件
需求
other可以在特定的目录下创建文件并写入,但是不想让任何人删掉自己的文件,这里我们印出来了一个概念
粘滞位
格式 chmod o+t dir
粘滞位的操作只能设置目录,一般是限制other权限的,对设置了粘滞位的目录,在该目录下,只能文件的拥有者或者root用户可以删除,其他人不能删除。
问题
为什么系统中的文件创建出来就是我们所看到的样子呢? 比如我们创建的test3.txt,为什么它的权限就是664呢?这里我们介绍一个权限掩码凡是在umask中出现的权限掩码,都应该在起始权限中去掉 我们的掩码为0002=>>002 默认普通文件起始权限为666 110 110 110 默认目录文件起始权限为777 111 111 111 我们的002为000 000 010 最终权限 = 默认起始权限 & ~(mask) 【二进制】 当然我们也可以自定义掩码 这个时候我们新创建出来的文件的起始权限就不是664了,但是我们呢并不建议更改权限掩码。并且这里的更改是只对本次登录有效,要是想要永久修改的话需要更改配置文件
|