# 第四阶段：软件、用户、权限与进程

## Linux 中的软件发布

二进制包

rmp

deb

源码包

tar

rar

### RPM 包

·红帽包管理工具 (Red hat Package Manager)  
·安装

rpm -ivh /home/user01/zsh-5.0.2- 31. e17. x86_64. rpm   
·RPM安装常用选项：

-i:安装（Install）软件。  
-U：升级（Upgrade）旧版本的软件。  
-e:移除/删除 (Erase）软件。  
- v：显示详细的处理信息。  
-h：显示安装进度。卸载不能用

如何查看安装的shell:   
#cat /etc/shells   
/bin/sh   
/bin/bash   
/usr/bin/sh   
/usr/bin/bash   
/bin/zsh

·rpm-q 查询

rpm -q zsh

·常与下面参数组合使用

![](02935e6da91fd2430156cca09e174fb52de43a966b64123620258b5da6976839.jpg)

-a 查询所有已经安装的软件包

-f查询文件所属哪个软件包，反向查询

-i显示已经安装的rpm软件包信息，后面直接跟包名

-|查询软件包中，文件安装的位置

-p 查询未安装软件包的相关信息,后面要跟软件的命名  
-R查询软件包的依赖性

rpm -qa」grep vi#不需要后缀

rpm -qf /usr/sbin/ifconfig #查询ifconfig属于哪个安装包（配合 which)   
·卸载包

rpm -e

dhcp

#卸载包 (包名)

### DEB 包简介

·Debian-based系统的安装包(.exe)   
·一般是软件源repository中安装  
·有时需要下载deb包手动安装

![](446ab45bba3405b4aea38f4da2662685aaa7b1cec87e36c6bf7c6963c4bda1f9.jpg)

### DEB 包

#### dpkg 工具安装

```batch
安装：sudo dpkg -i deb文件名 sudo dpkg --install deb文件名  
do dpkg -i /home/user01/teamviewer_14.5.1691_amd64.def
```

```txt
- 查看安装的应用：sudo dpkg -1 
```

```txt
- 卸载：sudo dpkg -r 软件包 sudo dpkg -p 软件包
```

#### apt/apt-get 工具安装

```txt
- 安装：sudo apt install 软件名 sudo apt --fix-broken install
```

软件名

```txt
GUI下可以直接双击deb文件开始安装
```

```txt
- 卸载：sudo apt autoremove #卸载无用的依赖 sudo apt remove 软件名 #软件包
```

#### 配置 yum 软件源

```txt
- yum (yellowdog updater modified) 
```

```txt
- vim /etc/yum repos.d/Local(repo #新建源 
```

```txt
·yum clean all #清理缓存 
```

```txt
- yum -y install dhclient 
```

### 源码安装

·./configure #也可能是其他  
· make #编译   
·make install #安装  
· make clean #清理

## 用户管理

查看用户

请打开终端，输入命令：

$\$ 1$ who am i

### 软件安装方式与 sudo 说明

说明：在不同的 Linux 发行版中，在线安装方式会有一些差异，包括使用的命令及它们的包管理工具。本实验的环境是基于 Ubuntu 的，所以这里涉及的在线安装方式仅只适用于Ubuntu 发行版，或其它基于 Ubuntu 的发行版如我国的 ubuntukylin(优麒麟)。Ubuntu又是基于 Debian 的衍生发行版，使用的也是 Debian 的包管理工具dpkg，所以一些操作也适用与 Debian。对于其他发行版，由于使用的包管理器不同，相应的命令和选项也会有一些差异，例如 RHEL、CentOS、openEuler 等使用 yum 或者 dnf。请查阅资料学习相应的命令。

通常 Linux 上的软件安装主要有四种方式：

. 在线安装  
. 从磁盘安装deb 软件包  
从二进制软件包安装  
. 从源代码编译安装

这几种安装方式各有优劣，而大多数软件包会采用多种方式发布软件，所以我们常常需要全部掌握这几种软件安装方式，以便适应各种环境。下面将介绍前三种安装方式，从源码编译安装你将在 Linux 程序设计中学习到。

在 Linux 系统里， root 账户拥有整个系统至高无上的权利，比如 新建/添加 用户。

root 权 限 ， 系 统 权 限 的 一 种 ， 与 SYSTEM 权 限 可 以 理 解 成 一 个 概 念 ， 但 高 于Administrator 权限，root 是 Linux 和 UNIX 系统中的超级管理员用户帐户，该帐户拥有整个系统至高无上的权力，所有对象他都可以操作，所以很多黑客在入侵系统的时候，都要把权限提升到 root 权限，这个操作等同于在 Windows 下就是将新建的非法帐户添加到Administrators 用户组。更比如安卓操作系统中（基于 Linux 内核）获得 root 权限之后就意味着已经获得了手机的最高权限，这时候你可以对手机中的任何文件（包括系统文件）执行所有增、删、改、查的操作。

大部分 Linux 系统在安装时都会建议用户新建一个用户而不是直接使用 root用户进行登录，当然也有直接使用root 登录的，例如Kali（基于 Debian 的 Linux 发行版，集成大量工具软件，主要用于数字取证的操作系统）。一般我们登录系统时都是以普通账户的身份登录的，要创建用户需要 root 权限，这里就要用到 sudo 这个命令了。不过使用这个命令有两个前提：

要知道当前登录用户的密码  
当前用户必须在 sudo 用户组。

说明：shiyanlou 用户也属于 sudo 用户组。

账户实质上就是一个用户在系统上的标识

系统依据账户来区分每个用户的文件、进程、任务，给每个用户提供特定的工作环境

Linux系统下的用户账户有两种

普通用户账户

超级用户账户（管理员账户）

超级用户 yud $\mathtt { = 0 }$ ，gid $\mathtt { = 0 }$

普通用户 u ${ \mathsf { d } } { \mathsf { s } } { = } 1 0 0 0$

系统用户： $0 <$

用户名和 uid 被保存在/etc/passwd 文件

当用户登录时，它们被分配了一个主目录和一个运行的程序（shell）

组时用户的集合。

每个组都被分配了一个唯一的组 ID 号（GID）

标准组

可以容纳多个用户

私有组

只有用户自己

当创建一个新用户时，若没有指定他所属于的组，RHEL就会建立一个和该用户同名的私

有组，且用户被分配到这个私有组中

一个用户可以属于多个组，这些组可以是私有组，也可以是标准组。

默认启用 shadow oasswird 功能

一般不设置组口令

尽量使用私有组来提高系统安全性

不建议管理员直接编辑

账户验证信息文件

口令文件

文件权限

/etc/passwd

每一个用户一条记录，每条记录用分号杰哥的七个字段组成。

影子口令文件

组账号文件

组口令文件 每一组一i奥记录

用户默认配置文件‘新用户基本信息

添加用户账号 useradd

编辑账户验证信息文件

创建主目录

设置用户口令

Passw的【用户名】

修改用户账号

Usermod 选项与 useradd 命令基本相同

Userdel 删除账号

Groupadd 添加组账号

Groupmod 修改组账号

Groupdel 删除的组账号

Gpasswd 修改组账号

批量用户管理工具

Newusers chpasswd

批量生成安全的口令

Pwgen

口令维护—— 禁用、删除和维护和口令时效

设置已存在用户的口令时效

用户切换命令

Su

直接切换为冲击用户

Sudo执行系统管理命令，无需知道超级用户的口令，使用普通用户自己的口令即可。

Id groups whoami w/who

## 文件权限管理

权限管理

Linux允许多个用户同时在系统上个登录和工作

同归 uid、gid 来却分每个用户

每个进程都是用一个 uid 和一个或多个 gid 来运行

读权限 r 对文件的含义和对目录的含义

写权限 w

执行权限 x

目录上只有执行权限，不能列出目录列表也不能删除改目录

分配三种权限

文件和目录的使用者

属主、同组人、其他人

权限分配

属主的权限：用于限制文件或目录的创建者

属组的权限：用于限制

查看权限

D 文件类型 文件权限 硬链接数或目录包含的文件数 文件所有者 文件所有者所在的用户组文件长度 文件上次修改时间和日期 文件名

3套权限控制

文件类型所有者的权限 同组用户权限 其他用户的访问权限

可以用八进制数值表示

Chmod 改变文件或目录权限

Chown 改变文件或目录的属主

Chgrp 改变

Chmod 命令有两种设置方法，一个文件字模是一个八进制。-R表示对目录中的所有文件或子目录进行递归操作

chown 改变文件的所有者

chmod 改变文件的权限

chmod $\uplus \dag \mathsf { r w }$ file1

chmod $\mathsf { U } ^ { + } \mathsf { X } , \mathsf { g } ^ { - } \mathsf { X }$ file2

chmod g-x file1

chmod 610 file1 #r-4/w-2/x-1

chgrp 改变文件的组

U user

G 同组用户

R4w2x1-0

使用三个数字模式来表示，分别代表用户n1、同组用户n2、其他用户n3

每个数字模式由不同权限缩影的数字相加得到一个访问

改变文件/目录属主或组

Root用户改变文件的所有者

Root 用户或所有者才能改变文件的所属组

默认的访问权限，由 unmask 去决定

默认生成掩码告诉系统当创建一个文件或目录时不应该赋予其哪些权限

系统不允许用户在创建

设置umask值的方法

使用 unmask 命令临时设置

在~/.bashrc 实现

### 三种特殊权限

Suid 使用命令所属用户的权限来运行，而不是命令执行者的权限

Sgid 使用命令的组权限来运行

Suid 和 sgid 都用 s 表示

Sticky-bit 用 t 表示

Suid 时占用属主的 x 位置来表示、sgid 占用组的 x 位置来表示、

使用一个单独 的数字模式（n0）由不同权限所对应的数字相加得到一个表示特殊权限

Ext2/3/4 的文件扩展说下

A atime 告诉系统不要修改

S sync 写操作写到错

A append oly

I immutable

Lsattr

Chattr

并不适用于所有点目录，注意如下目录的扩展属性

Posix文件访问控制列表

ALC 标准

FACL 时 file access control lists 的缩写

Acl

通过文件系统的挂装选项实现 ACL 支持

查看ext4文件的默认选项

存取 ACL

对指定文件或目录的存取控制列表

默认 ACL

ACL 工具

Gerfacl、serfacl

### 进程概念补充

程序

进程

职业/任务

长须知识一个金泰的指令级和

进程时资源申请。调度、和独立运行的单位，因此，它使用系统中的运行资源；而程序不能申请系统资源

Linux时多用户多任务系统

每个用户均可同时运行多个程序。为了区分每一个，进程号pid 是唯一地

Linux采用分时技术来处理

西东启动后第一个进程是 init systemd

Init 是唯一系统内核

它的 pid 是 1

出了init之外每个进程都由父进程

Ruid。Rgideuid、egid

交互进程 由 shell 启动进程 批处理进程 守护进程 daemon

前台进程 后台进程

运行后台进程的方法是在命令行最后加上&

一个中断只能同时存在一个前台任务，但是可以由多个后台任务

查看系统中的进程使用 ps 命令查看进程状态信息

输出项包括：识别号 pid 中断
