1. Linux下的用户
在 Linux 操作系统中,有两种主要类型的用户账户,分别是普通用户账户和超级用户账户(也称为 root 用户账户)。
普通用户账户(user)是在 Linux 系统上创建的普通账户,可以用于日常使用,但不能执行某些需要超级用户权限才能执行的操作。普通用户账户可以使用 sudo 命令获取临时超级用户权限执行需要的操作。通常情况下,普通用户账户是更安全的,因为它们不具备足够的权限来更改系统配置或执行危险操作。
超级用户账户(root 账户)是拥有系统上所有权限的账户,可以执行任何操作,包括更改系统配置、安装软件包等。因此,超级用户账户需要谨慎使用,以免意外地更改系统设置或删除关键文件,从而破坏系统的稳定性。通常情况下,应该尽可能避免以 root 用户身份登录,而是使用普通用户账户,并在必要时使用 sudo 命令来获取临时超级用户权限。
如果需要切换用户可以使用 su+对应用户名 与cd命令类似,也可以使用 su - 来进行不同用户间的快速切换 而退出身份时我们可以使用 ctrl+d或exit 命令来退出。
2. 什么是权限
在操作系统中,权限是指用户或进程能够执行的特定操作的范围。
权限决定了一件事情能否被做。而在权限进行判断时
首先认证的是身份,而Linux中身份又分为拥有者,所属组和其他人,这些身份与用户(root用户和普通用户)互相交叉,即root用户与普通用户都可能是这三个身份中的一个。
在之后,查看文件的属性,在使用 ll 指令后,我们可以看到
可以发现,最前方由10个字符组成,在这之中的第一列,即
表示的是文件的类型(因此在Linux中文件名后缀无直接意义),具体如下
d :文件夹- :普通文件l :软链接(类似 Windows 的快捷方式)b :块设备文件(例如硬盘、光驱等)p :管道文件c :字符设备文件(例如屏幕等串口设备)s :套接口文件
而在第一列之后的九个字符分别表示了拥有者,所属组,其他人的权限,即
而在每一个身份中,各有r(可读)、w(可写)与x(可修改)的权限,如果对应位置是 - 则表明没有对应的权限
这之后的数字表示了该文件的硬链接数,在这之后第一个 tr 表示的是该文件的拥有者,第二个 tr 表示的是该文件的所属组,如果不在这两个之中,则表明是其他人。然后依次是文件大小、最后的修改日期、文件名。
3. 没有权限会有什么情况
对于这样一个txt文件
不同的身份查看它时有不同的结果
在拥有者查看文件内容时,有没有问题;
而在其他人查看文件时,有显示Permission denied;
但是在root用户查看时,有可以正常查看。
4. 如何修改权限
修改文件权限的指令为 chmod
在使用chmod之前,我们知道权限分为为rwx,而因为这些权限的位置是固定的,因此有该权限就可以用1表示,没有该权限可以用0表示
举几个例子
如-wxr--r-x可以表示为011100101根据三个身份可将其分为011 100 101,我们可以将其转化为二进制码,即345;再多举几个例子 rw-r-x-wx —— 110 101 011 —— 653;r-xr-xrw- —— 101 101 110 —— 556;rwxrwxrwx —— 111 111 111 —— 777;--------- —— 000 000 000 —— 000;
而在使用chmod时,可以使用符号表示法与数字表示法
chmod语法:
chmod [选项]... 模式[,模式]... 文件...
符号表示法:
所使用的符号如下
u
:文件所有者(user)的权限。g
:文件所属组(group)的权限。o
:其他用户(others)的权限。a
:所有用户(all)的权限,等同于ugo
的组合。这些符号可以与以下操作符组合使用:
+
:增加权限。-
:删除权限。=
:设置权限,覆盖之前的权限设置。
比如对上述txt文件地属性进行修改
数字表示法:
在知道了上述的数字的含义后,也可以使用数字表示法,如
5. 关于权限的几个问题
1. 文件的起始权限
我们创建一个普通文件,发现权限为rw-rw-r--即664,但是实际上创建一个文件时赋予的初始权限为666
我们再创建一个目录文件,发现权限为rwxrwxr-x即775,但是实际上创建一个文件时赋予的初始权限为777
为什么会出现上述情况呢?
这与Linux中的权限掩码有关
权限掩码:凡是在umask中出现的权限,不会在最终的文件权限中出现
我们输入umask可以发现
转化为二进制即 000 000 010,由此便可以解释上述情况出现的原因,且有如下的关系
最终权限 = 初始权限 &(~umask)
2. 目录权限
对于home目录下的任何一个用户来说,其目录的所有者和所属组都是自己
而其他用户想进入就不行
但是我们将权限其他人的权限修改为r--时,我们发现此时文件可以查看此目录下的文件但是无法对目录执行任何指令
类似的将权限改为r-x时,可以进入并查看文件
而加上x权限后,我们可以发现能够在该目录下修改或创建文件
因此,我们可以有以下结论
在目录权限下:
r: 如果目录没有可执行权限 , 则无法 cd 到目录中w : 如果目录没有可读权限 , 则无法用 ls 等命令查看目录中的文件内容 .x: 写权限 : 如果目录没有可写权限 , 则无法在目录中创建文件 , 也无法在目录中删除文件 .
3. 粘滞位
在有些时候,我们需要共享数据,而在home目录下创建的文件只属于文件个人,因此我们在根目录下创建一个共享文件share
在这个目录下所有人都能在里面书写/创建文件,但问题却又随之浮现,因为,换句话来讲, 就是只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限.
粘滞位(Stickybit),又称粘着位,是Unix文件系统权限的一个旗标。最常见的用法在目录上设置粘滞位,也只能针对⽬录设置,对于⽂件⽆效。则设置了粘滞位后,只有目录内文件的所有者或者root才可以删除或移动该文件。
如
1. 超级管理员删除2. 该目录的所有者删除3. 该文件的所有者删除