用户

在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 [组名] [文件名]
注意:同样需要权限