目录
前言
权限概念
权限管理
分类
1.用户
2.文件&&目录
表示
设置
1.chmod指令
2.chown指令
3.chgrp指令
4.umask指令
粘滞位
后记
前言
对于Linux基本指令,基本上就是操作文件或者目录,但是,是谁可以操作文件或目录,哪些文件和目录是可以操作的,这就涉及到了权限的问题。不仅是在Linux,在Windows下也是存在权限问题的,比如一些软件运行需要管理员身份运行。可见权限在操作系统中非常重要,在于它可以控制使用者在特定环境下的访问范围和操作能力,从而保障系统的安全和稳定性,同时也保护个人隐私和知识产权。
权限概念
权限是指对某个资源或行为的授权或限制的能力。在计算机系统中,权限通常指用户或程序可以进行的操作或访问某个资源的能力,可以是对文件读取、写入、修改、执行以及删除等操作,也可以是限制某些用户可以这些操作。
对于用户,Linux下分为两种,包括超级用户(root)和普通用户,root可以在Linux下做任何操作,不受任何限制;相反,普通用户则是只能做有限的事情。
Linux下,切换用户的指令:su [用户名]
注意:要从root用户切换到普通用户user,则使用 su user,不需要密码user的密码,因为root权力最大;要从普通用户user切换到root用户则使用 su root(root可以省略)或者su -,需要root的密码。
权限管理
-
分类
1.用户
将能否访问某文件或目录(后简称为文件)的人分为三种:
①文件所有者(User):创建文件的用户,或文件属于谁;
②文件所有者所在组(Group):一般在工程上都会划分组别,分工干活,可以控制组内的成员控制此文件的权限;
③其他用户(Other):除文件所有者以及所在组成员的所有人。
2.文件&&目录
先来看一下Linux下一个文件或目录的信息介绍,如图
1)文件类型
d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件
2)权限
前三个是所属用户的权限,中间三个是所属用户组的权限,后三个是other的权限,都是由读(r/read)、写(w/write)、执行(x/execute)、"-"排列组合而成,对于文件和目录的具体操作是不同的,而"-"是指不具有该权限,如下图
连接数先不做了解,后面会介绍;所属用户组名字默认与所属用户名相同;其他信息顾名思义,很好理解。
-
表示
文件权限的表示方法有两种,一种就是上方文件信息中由r、w、x、-组合而成的字符表示法,比如,r--是只读,-w-是只可写,rw-是可读可写不可执行、rwx是可读可写可执行、---是无任何权限等;
还有一种是八进制数值表示法,在通过指令修改文件权限使常用,因为r、w、x的相对位置固定,有八种组合方式,正好可以用八进制数值的方式,包括---对应0,--x对应1,-w-对应2,-wx对应3,r--对应4,r-x对应5,rw-对应6,rwx对应7。
-
设置
1.chmod指令
格式:chmod [选项] 权限 文件名
功能:设置文件的访问权限
选项: R 递归修改目录文件的权限
1)字符表示法
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户
+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
eg:
2)八进制数值表示法
将所属用户、所属用户组及其他人的权限的八进制数拼在一起,直接改所有权限,不像字符表示法需要+、-。
eg:
2.chown指令
格式:chown [参数] 需要改成的用户名 文件名
功能:修改文件的拥有者
说明:此指令会提升权限,需要root用户或者存在于信任列表中的用户,其中信任列表是root对于普通用户而言的,可以使得普通用户使用【sudo 指令】的方式拥有root权限执行后续指令,也就是说root用户直接使用此指令,而存在于信任列表的普通用户使用【sudo 指令】的方式,其他人无法使用此指令,添加用户到信任列表的方法在下面。
eg:
添加用户到信任列表:
1.切换成root用户
2.使用指令sudo vim /etc/sudoers 编辑sudoers文件,向下翻找到## Allows......
3.复制%wheel ALL=(ALL) ALL 到下面,再将%wheel改为想要添加的用户名,如上图,保存退出即可。
3.chgrp指令
格式:chgrp [参数] 需要改成的用户组名 文件名
功能:修改文件或目录的所属组
选项:-R 递归修改文件或目录的所属组
说明:chgrp指令也是如同chown指令使用受限。
eg:
4.umask指令
格式:umask [权限值]
功能:不加权限值是查看文件掩码,加权限值是修改文件掩码
说明:如图,当我们新建一个文件或者目录,可以看到文件初始权限是664(八进制数值表示法),目录初始权限是775;
其实,新建文件默认权限=666 新建目录默认权限=777,但实际上你所创建的文件和目录,看到的权限往往不是这个值,而是如图的值。原因就是创建文件或目录时还要受到 umask的影响。假设默认权限是originmask,则实际创建的出来的文件权限是: originmask & ~umask,即为建立文件时的初始权限。超级用户默认掩码值为022,普通用户默认为002,而umask指令就是修改这个值的。
粘滞位
先看这么个场景,当多个用户在同一路径下共享(管理)同一个目录时,需要在该目录下进行读写、创建、修改、删除文件,读写文件的权限通过对应文件控制,而创建、修改、删除文件的权限是由所在目录控制的,所以大家对此目录下的文件的权限是一模一样的,此时,别人是可以删除我创建的文件,万一别人有意删除或者不小心删除了我的文件,就会造成麻烦。
方法一:因为目录的w权限是创建、删除、修改目录内文件的权限,所以将目录的w权限去掉,但这样的话,虽然别人不能删除自己的文件了,但是自己也不能创建删除自己的文件,不可行!
方法二:使用粘滞位
格式:chmod +t 目录名
功能:该目录下的文件只能由超级管理员删除、该目录的所有者删除、该文件的所有者删除
注意:①粘滞位只能给目录设置,
②一般地,粘滞位谁设置,谁取消。
eg:
注:可以将t看做成x的一种特殊形式。
后记
在开发环境中,权限非常之重要,确保开发环境中安全性、组织结构、版本控制和测试环境等方面的重要手段,能够帮助我们更好地管理和保障开发和测试过程的有序进行。以上就是权限的入门理解,并不是很多,简易反复读阅,在后续的学习中会对权限的理解越来越深刻,加油,拜拜!