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 [组名] [文件名]

注意:同样需要权限

相关推荐
奔跑吧邓邓子2 小时前
【C语言实战(75)】C语言内存探秘:泄漏检测与分析实战
linux·c语言·windows·内存·开发实战·泄露检测
HIT_Weston3 小时前
16、【Ubuntu】【VSCode】VSCode 断联问题分析:问题解决
linux·vscode·ubuntu
被遗忘的旋律.3 小时前
Linux驱动开发笔记(十九)——IIC(AP3216C驱动+MPU6050驱动)
linux·驱动开发·笔记
Dreamboat-L4 小时前
使用VMware安装centos的详细流程(保姆级教程)
linux·运维·centos
蓦然回首的风度4 小时前
【运维记录】Centos 7 基础命令缺失
linux·运维·centos
kblj55554 小时前
学习Linux——网络基础管理
linux·网络·学习
小王C语言5 小时前
Linux基础开发工具----yum、vim和gcc/g++
linux·运维·服务器
_w_z_j_5 小时前
Linux----文件系统
linux·运维·服务器
努力努力再努力wz6 小时前
【Linux进阶系列】:线程(上)
java·linux·运维·服务器·数据结构·c++·redis