uu们在进行Linux学习的时候,肯定会涉及到用户权限的问题,这篇文章就来深入介绍介绍Linux中的权限~
1、什么是权限
简单来讲,就是一件事是否能够被‘做’,是针对(人)和(事物的基本属性)决定的相关概念。也就是说**权限的核心为:人+事物属性**
2、Linux系统下的两种用户
超级用户
可以在Linux系统下干任何事,几乎不受限制,超级用户的输入提示符为:#
普通用户
只能做有限的事情,普通用户的输入提示符为:$
- su 【用户名】 //用来切换用户,当从普通用户切换到超级用户时需要输入超级用户的密码
- Linux允许存在多个用户,用户之间不会相互影响
3、文件的访问者(人)
- 文件和文件目录的所有者:u——User
- 文件和文件目录的所有者所在的组:g——Group
- 其他用户:o——others
4、文件类型和访问权限(事物属性)
以上是在Linux系统中查看文件所有属性的图片,拿第三行来进行说明:
drwxrwxr-x 3 JingLi JingLi 4096 Jul 21 11:00 d1
(1)第一列的第一个字符表示文件类型(Linux下,不以文件后缀名区分文件类型)
- d:目录
- -:普通文件
- p:管道文件
- b:块设备(磁盘设备)
- c:字符设备(键盘或者显示器)
- l:链接文件(类似于Windows上的快捷方式)
(2)第一列的第二个字符到第十个字符,每三个字符为一组,表示三种访问者的权限
- rwx:User拥有读、写、执行三种权限
- rwx:Group拥有读、写、执行三种权限
- r-x:Others拥有读、执行两种权限,没有写的权限
(3)第二列的数字暂时先不讲
(4)第三列的字符串表示User,第四列的字符串表示Group
(5)第五列的数字表示所占内存大小,单位为字节(byte)
(6)第六列,第七列,第八列表示文件的创建月、日、时间
(7)最后一列为文件名
所以对上面的示例行的解读为:这是一个名字为d1的目录文件,创建于7月21日11:00,占用4096字节的空间大小,拥有者为JingLi,拥有读、写、执行的权限,所属组为JingLi,同样拥有读、写、执行的权限,其他用户只拥有读、执行的权限,没有写的权限
5、文件权限的表示方法
基本权限:
- 读(r):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
- 写(w):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
- 执行(x):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
- “-”表示不具有该项权限
字符表示方法:
八进制数表示方法:
6、文件权限修改的相关方法
chmod 指令
语法:chmod 【选项】 【权限】 【文件名】
功能:更改指定文件的权限
常用选项:
- R :递归修改目录文件的权限 说明:只有文件的拥有者和root才可以改变文件的权限
权限的格式:
- +:向权限范围增加权限代号所表示的权限
- -:向权限范围取消权限代号所表示的权限
- =:向权限范围赋予权限代号所表示的权限
**用户符号: **
- u:拥有者
- g:拥有者同组用
- o:其它用户
- a:所有用户
示例:
chmod u-x d1 //去掉文件d1的拥有者执行权限
chmod g+r file.txt // 给file.txt的所属组加上读权限
chmod o+w test.c // 给test.c的其他用户加上写权限
//
chmod 666 file.txt //给文件file.txt的u、g、o读写权限,均无执行权限
chown 指令
语法:chown 【选项】 【用户名】 【文件名】
功能:修改文件的拥有者(只有文件的拥有者和root才能修改)
常用选项:
- R :递归修改目录文件的拥有者 说明:只有文件的拥有者和root才可以改变文件的拥有者
chgrp 指令
与chown类似,chgrp时用来改变文件的所属组,这里就不多赘述
使用sudo分配权限
想要使用chown,chgrp指令来修改非本用户拥有的文件,可使用sudo指令
如果普通用户想要执行sudo来提升权限,需要该用户在信任列表里面,才可以执行sudo,然而添加用户到信任列表是需要root身份的!
添加到信任列表的方法:
chmod 740 /etc/sudoers
vi /etc/sudoer
//格式:接受权限的用户登陆的主机 =(执行命令的用户) 命令
使用示例:
sudo chown JingLi mycode.c //将文件mycode.c的拥有者改为JingLi
7、umask
Linux默认:
- 一个目录被创建时,起始权限为0777
- 一个普通目录被创建时,起始权限为0666
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值,原因就是创建文件或目录的时候还要受到 umask的影响,假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask
语法:umask
umask 权限值
功能:查看权限掩码
修改权限值
说明:
将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002
8、file 指令
语法:file 【选项】 【文件或者目录】
功能:辨识文件类型
常用选项:
- -c 详细显示指令执行过程,便于排错或分析程序执行的情形
- -z 尝试去解读压缩文件的内容
9、粘滞位
如果大家所有用户都在一个目录下,对该目录具有相同的权限,那么张三在这个目录下创建的文件是可以被李四删除的,这就不合理了,如果采用将所在目录的w可写权限去掉,那么即使是张三也不能删除自己创建的文件了,肯定是不行的,那么我们就引入了粘滞位的概念
我们可以**给目录加上粘滞位**来得到我们想要的结果:
chmod +t /home/ //给目录加上粘滞位
当给目录加上粘滞位时,则该目录下的文件只能超级用户、文件拥有者、文件所属组删除,而不能被其他用户删除
注意:
- 粘滞位只能给目录加,不能给普通文件加
- 一般粘滞位是谁给的,谁才能取消(超级用户不受限制)
以上就是关于Linux权限理解的全部内容了~
有问题欢迎指出,多多点赞~
版权归原作者 Joker2373 所有, 如有侵权,请联系我们删除。