✨✨ 欢迎大家来到贝蒂大讲堂✨✨
🎈🎈养成好习惯,先赞后看哦~🎈🎈
所属专栏:Linux学习
贝蒂的主页:Betty’s blog
1. Linux权限的基本概念
1.1 root与普通用户
在Linux
系统中,存在两种主要用户类型,即超级用户root
与普通用户。超级用户拥有极高的权限,可以在 Linux
统下执行几乎任何操作,其权限几乎不受限制。相比之下,普通用户通常只能在自己的工作目录/home/xxx
内进行工作,并且在整个系统上所能进行的操作也较为有限。 换句话说,Linux
系统中的权限概念主要是为了对普通用户的行为进行限制,以确保系统的安全性和稳定性。而超级用户由于其强大的权限,在使用时需要格外谨慎,以免误操作对系统造成严重破坏。 在命令提示符方面,超级用户的提示符为#
,普通用户的提示符为$
。这一区别可以帮助用户在使用命令行时快速区分自己当前所使用的用户身份,从而更好地掌握自己的操作权限范围。
1.2 创建与删除普通用户
实际上,使用root
账号是比较危险的,因为root
账号的权限太大,可能会因为误操作而造成不可挽回的结果,所以我们最好创建一个普通用户的账号平时使用。接下来我们就来谈一谈如何创建一个普通账户:
- 首先在
root
用户下,输入指令<font style="color:rgb(77, 77, 77);">addser yourid</font>
,其中<font style="color:rgb(77, 77, 77);">yourid</font>
是你自己创建的用户名。
- 然后输入指令
passwd yourid
来设置你的密码。(其中输入密码并不会显示)
- 最后再次确认密码,密码设置就成功。
在知道如何创建新用户之后,我们可以通过我们创建的用户名与密码登录普通用户。
然后我们再来谈谈如何删除用户:
直接在root
用户下,输入指令userdel -r yourid
,即可删除。
1.3 普通用户与root的切换
虽然我们平时使用的是普通用户,但是偶尔有些指令就需要在root
用户下执行。所以这时候就需要我们切换用户。
如果从普通用户切换为root
用户,可以使用两种指令:su(su root)
与su-
。其中第一个指令,仅仅是一个用户身份的切换,用户所处的路径不发生改变。而第二个指令则会更改为家目录/root
下,其实就是su -
就相当于重新登录。
如果是从root
用户切换到普通用户,直接输入指令 su user
。
切换用户后,若想切回上次的用户,可按Ctrl+d
实现,也可以输入指令exit
。
但是有时候我们并不知道root
用户的密码,但是又需要root
用户去执行某条指令,那么这时就需要输入指令sudo 指令
,这条指令就可以提升我们要执行指令的权限,即让root
用户执行。但是使用这个指令有一个条件就是root
用户将此普通用户添加到可信任白名单中。
如果要将某个用户添加进入可信任白名单中,首先在root
用户下,通过指令vim /etc/sudoers
对应文件。
然后我们就可以使用sudo 指令
来提升指令时的权限。
2. Linux权限管理
2.1 用户划分
在Linux
中,为了方便管理文件,还对我们的用户或者文件访问者进行了分类:
文件和文件目录的拥有者:
u—User
文件和文件目录的所属组:g—Group
其它用户(即不是这个文件的拥有者):o—Others
因为other
可能存在多个,所以除了文件拥有者和文件所属组之外的都叫other
。
2.2 文件类型与访问权限
首先是文件类型,在Linux
下,可以分为以下几种文件。
-
:普通文件(指不包含有文件系统信息的结构信息的文件,是用户所接触到的文件,比如常见的.exe
,.c
,.txt
,归档文件等在Linux
中统称为普通文件)。d
:目录(文件夹)。l
:软链接(类似Windows
的快捷方式)文件。b
:块设备文件(例如硬盘、光驱等)。p
:管道文件。c
:字符设备文件(例如屏幕等串口设备)。s
:套接字文件。
然后文件的访问权限也可以分为:可读®、可写(w)和可执行(x)。
如果仔细观察就可以发现,其一共有十个字符,除开第一个代表文件的类型外,后九个每三个为一组,分别代表拥有者,所属组,其他用户的可读,可写,可执行的权限。
字符表示法 | 说明 |
---|---|
r - - | 仅可读 |
- w - | 仅可写 |
- - x | 仅可执行 |
r w - | 可读可写 |
r - x | 可读可执行 |
- w x | 可写可执行 |
r w x | 可读可写可执行 |
- - - | 无权限 |
其实除了这种表示方法之外还有一种表示方法那就是**八进制表示法,**如下图:
字符表示法 | 二进制 | 八进制数值表示法 | 说明 |
---|---|---|---|
r - - | 100 | 4 | 仅可读 |
- w - | 010 | 2 | 仅可写 |
- - x | 001 | 1 | 仅可执行 |
r w - | 110 | 6 | 可读可写 |
r - x | 101 | 5 | 可读可执行 |
- w x | 011 | 3 | 可写可执行 |
r w x | 111 | 7 | 可读可写可执行 |
- - - | 000 | 0 | 无权限 |
2.3 权限的设置
在了解权限的分类之后,我们接下来学习如何更改文件的访问权限:
- 语法:
chmod 选项 权限 文件名或目录名
。- 功能: 设置文件的访问权限。
- 常用选项:
-R
递归修改目录文件的权限。
- 方法一: 用户符号 +/-/= 权限字符
<font style="color:rgb(77, 77, 77);">+</font>
:向权限范围增加权限代号所表示的权限。<font style="color:rgb(77, 77, 77);">-</font>
:向权限范围取消权限代号所表示的权限。<font style="color:rgb(77, 77, 77);">=</font>
:向权限范围赋予权限代号所表示的权限。
- **用户符号:**u:拥有者。g:所属组。o:other。a:所有用户。
值得注意的是:如果相同时改变不同种类用户的访问权限,中间需要用逗号隔开。
- 方法二: 八进制数字
接下来我们来讨论如何更改文件的拥有者。
- 语法:
chown 选项 用户名 文件名或目录名
。- 功能: 修改文件的拥有者。
- 常用选项:
-R
递归修改目录文件的拥有者。
然我们也可以通过以下命令改变文件所属组。
- 语法:
chgrp 选项 用户名 文件名或目录名
。- 功能: 修改文件的所属组。
- 常用选项:
-R
递归修改目录文件的所属组。
其实我们可以使用chown
指令同时改变拥有者与所属组,中间用冒号隔开即可。
当然以上指令都需要在root
用户下执行。
2.4 文件掩码
实际上,新建文件的默认权限为0666(rw- rw- rw-),新建目录的默认权限为0777(rwx rwx rwx),其中第一位与特殊权限相关,这里我们不需要深究。但是实际上新建文件与目录的默认权限并不如上所说,这是怎么回事呢?
其实这种情况就与我们的文件掩码umask
有关,我们设默认权限为mask
,实际创建出的文件或目录权限为mask&umask
。
我们可以通过这个指令umask 八进制数
来修改默认的掩码umask
:
其中需要注意的是:root
用户的默认掩码为0022
,而普通用户为0002
。
2.5 权限的作用
对于普通文件来说,可读,可写,可执行这种字面含义就能帮助我们理解其权限的作用,但是对于目录来说,就有所区别了。
- 可读权限: 如果用户没有该目录的可读权限,则无法通过
ls
指令查看目录中的文件内容。- 可写权限: 如果用户没有该目录的可写权限,则无法通过一系列指令在目录中创建文件或删除文件。
- 可执行权限: 如果用户没有该目录的可执行权限,则无法通过
cd
指令进入到目录当中。
但是这种情况就会导致一个非常严重的问题,那就是:拥有可读权限的人可以删除文件,这是不可取的,因为这个文件不一定是你创建的,你不可能去删除别人的文件。
所以了为了解决这个问题就引入了粘滞位的概念。
2.6. 粘滞位
为目录添加粘滞位特别简单只需要输入指令chmod+t 目录名
。
在为目录添加了粘滞位之后,该目录文件就只能由:root
用户删除,该目录或文件的拥有者删除。