Linux(3)—— 权限操作

用户

在Linux中可以创建多个用户;起始默认为root用户。root用户类似于在windows中我们将应用以管理员身份运行。Linux的用户设计到操作系统的权限管理,所以这部分还是很重要的。

创建新用户

创建新用户需要下面的指令:

bash 复制代码
adduser [username]

使用adduser,在后面加上该用户的名称即可创建。注意这里我们使用的是root用户进行的创建。

如图我们就创建了一个名为Alex的用户。

设置密码

创建完用户之后我们需要设置一个登录密码。这时需要用到passwd命令:

bash 复制代码
passwd [username]

结合上面的例子,我们为用户Alex设置密码:(passwd = 123456)

需要注意:

1、输入密码时是不能查看(回显)的,输入完后直接敲回车即可。

2、密码如果输入的过于简单,则会出现提示

所以我们输入密码123456之后会出现提示,少于8个字符,密码过于简单。不过还是可以使用。

建议大家还是设置复杂一点的密码。

密码重置

如果密码忘记了或者想要修改密码,普通用户就只能让具有root权限的用户来进行修改重置。在上面的例子中,如果Alex用户需要重置密码,则需要root用户使用passwd命令重置。

删除用户

删除用户需要用到下面的指令:

bash 复制代码
userdel -r [username]

这样我们就删除了对应用户。该操作只能由root权限的用户实现。

Linux权限

1、用户的分类

简单来讲,用户可以分为超级用户和普通用户。

最开始我们登录的root账户就是超级用户;超级用户基本不受权限的约束,而普通用户是受权限约束的。

而后面我们新建立的就是普通用户。

Linux中的所有用户都要有密码。

用户之间的切换

在上一篇文章中我们展示了普通用户切换到root(超级)用户的操作。即用su命令输入密码来切换

bash 复制代码
su

但是使用su命令是直接进行身份的切换。此时我们pwd一下可以看到当前目录是没有进行切换的。如果想要重新登录,则需要使用 **su -**命令。

bash 复制代码
su -

切换为root后想要退回,直接Ctrl + D即可。

上面是普通用户到超级用户的转换。那么root(超级)用户如何转换到普通用户呢?

还是使用su命令:

bash 复制代码
su [普通用户名]

这样我们就能直接转换其他用户了。我们可以发现如果使用的是root账户,不用输入密码就能直接转换为其他用户。而普通用户转换成其他用户需要输入密码。

从上面的例子我们可以看出root有很高的权限,不受权限的限制。

命令提权

有些命令必须使用root权限才能使用。如果普通用户想实现这些权限的操作,需要使用sudo命令来实现提权:

bash 复制代码
sudo [命令]

sudo后面加上的命令就会被提权;被提权的指令会以root的身份去执行。但是普通用户是没有办法使用sudo命令的。因为系统对普通用户是默认不信任的;如果想要使用需要将该普通用户添加到系统的默认白名单中。这部分内容我们后面再说明。

权限

权限是什么?和日常生活中我们谈及的权限差不多,权限认证一个人(用户)的身份,和事物的"属性"有关。

文件属性

文件的属性有 可读 、可写 、可执行。

我们可以使用下面的指令来查看文件属性。

bash 复制代码
ls -l

例如:

以第一个文件为例:

文件类型

在windows中,文件类型用文件的后缀来进行区分。例如.txt等。在Linux中,文件的后缀没有直接的意义,更多用文件的属性区分。

  • :普通文件(文本,可执行程序,库等基本都属于普通文件)

d :目录文件

b :块设备文件(如磁盘文件)

c :字符设备文件(键盘,显示器文件等)

p :管道文件(用于进行通信)

除了上面的五种类型外还有其他类型。不过我们了解-和d就可以了。

可读可写可执行

r :可读

w :可写

x :可执行

  • :对应的权限位置没有权限(如 rwx 表示可读可写可执行;而--x表示不可读不可写可执行)

这部分在文件属性中对应9个字符;三三为一组,分别对应 拥有者权限 、所属组权限 、其他人权限

权限身份

Linux中用户权限有三个身份:拥有者、所属组、其他人

拥有者就是文件的创建者。

所属组是对一些用户划分一个组群。

其他人就是除了拥有者和所属组的其他用户。

而普通用户和root用户与这三种权限身份的关系如下图:

用户与权限身份互相补充,是独立的两套体系。我们可以设置文件对拥有者、所属组和其他人的权限,来应对不同的情况。

权限的修改

对于不同的身份角色,我们对文件的权限设置有不同的处理。所以权限的修改经常会使用。关于权限的表示方法可以划分为两种:字符或数字。

1、字符表示

每个身份的文件的权限都是以rwx的顺序字符表示,没有对应权限则用 - 表示。总结如下:

|---------|---------|---------|-------|
| Linux表示 | 说明 | Linux表示 | 说明 |
| r-- | 只读 | -w- | 仅可写 |
| --x | 仅可执行 | rw- | 可读可写 |
| -wx | 可写和可执行 | r-x | 可读可执行 |
| rwx | 可读可写可执行 | --- | 无权限 |

2、数字表示

除了上述的字符表示,还可以使用进制来表示。一共有三个字符的位置,---表示无权限,若没有权限则表示为000;以此类推,rwx表示111;三位数字用二进制和八进制来表示可以得到下面的表示方法:

|------|-----|-----|
| 权限符号 | 八进制 | 二进制 |
| r-- | 4 | 100 |
| -w- | 2 | 010 |
| --x | 1 | 001 |
| rw- | 6 | 110 |
| r-x | 5 | 101 |
| -wx | 3 | 011 |
| rwx | 7 | 111 |
| --- | 0 | 000 |

3、修改当前权限

修改权限需要用到指令 chmod:
说明:只有文件的拥有者和root才能改变文件的权限

bash 复制代码
chmod [参数] 权限 文件名

具体情形我们举例说明。

加减

这行命令表示为test.txt文件的拥有者加上w(可写)权限。

所以如果我们想要加上某个权限,则使用 + 号;如果要去掉某个权限,则使用 - 号。

合并加减

我们也可以合并加减多个权限。例如下面这行指令:

表示为test.txt文件的user用户(拥有者)加上读写执行权限。

身份

不同的身份用不同的字母表示:

|-----|-----|-----|
| 拥有者 | 所属组 | 其他人 |
| u | g | o |

多个权限

我们也可以一行命令wield多个身份的用户修改权限。例如:

如上图的例子,为拥有者删去读写执行权限;为所属组加上读写执行权限;为其他人加上读写权限。不同身份之间使用逗号相连。这样我们就实现了一行命令修改多个身份用户的权限。

数字的修改

如果是想使用八进制来进行修改,只需要对照上面的表格将rwx的部分换成数字即可。

如上图的例子;三个数字分别对应三个身份:拥有者(u)、所属组(g)、其他人(o)的权限表示。7表示u有rwx权限;6表示g有rw-权限;0表示o有---权限(无权限)。

4、权限身份的修改

除了不同身份的权限可以修改以外,角色的身份也可以进行修改。

(1)修改拥有者

修改拥有者需要用到指令:

bash 复制代码
chown [用户名] [文件名]

该操作会将当前文件的拥有者改为对应用户名的用户。

注意:使用该指令需要权限。

(2)修改所属组

指令:

bash 复制代码
chgrp [组名] [文件名]

注意:同样需要权限

相关推荐
oMcLin3 分钟前
如何在Ubuntu 20.04上配置并调优Kubernetes集群,确保在多租户环境下的高可用性与资源分配?
linux·ubuntu·kubernetes
石头53018 分钟前
Service 详解
linux
小鸡脚来咯18 分钟前
Linux 服务器问题排查指南(面试标准回答)
linux·服务器·面试
末日汐22 分钟前
磁盘与文件系统
linux·运维·数据库
水天需01028 分钟前
Linux PS4 环境变量详解
linux
小新ya38 分钟前
vscode增删改查文件,一直等待中...
linux·vscode
济6171 小时前
linux(第十四期)--官方 SDK 移植实验-- Ubuntu20.04
linux·运维·服务器
云qq1 小时前
x86操作系统23——进程相关系统调用
linux·c语言·汇编·ubuntu
小猪佩奇TONY1 小时前
Linux 内核学习(16) --- linux x86-64 虚拟地址空间和区域
linux·运维·学习
L1624761 小时前
Docker 安装部署全流程使用指南(Linux 通用版)
linux·docker·容器