第七章 系统管理和维护

第七章 系统管理和维护

​ 当我们要登录系统或访问系统的某个资源时,通常都要求输入用户名和密码,从系统的角度看,用户就是一种进行认证或授权的标识。只有通过认证的用户才能访问相应的资源,而对于同一个资源,不同的用户又有不同的访问权限。比如要在公司网络中配置一台网络服务器,只允许本公司的员工才能从服务器上浏览和下载文件,而且只允许行政部员工对文件的内容进行修改。这些都是在系统运维中经常遇到的问题。而解决这些问题我们都要用到用户和组。

1.用户和组的基本概念

  1. 用户账号的类型

    在Linux系统中,根据系统管理的需要将用户账户分为三种类型:超级用户、普通用户、系统用户。

    • 超级用户:root是系统的超级用户,使用该账号,管理员可以突破一切限制,方便系统的维护。由于root权限太大,所以不建议用root直接登录,而是采用普通用户登录,需要进行权限维护时才切换至root登录。
    • 普通用户:该账户需要由root或其他管理员创建,一般只在用户的家目录拥有全部权限。
    • 系统用户:这类用户最大的特点是不能登录系统。而主要是让后台进程以非管理员的身份运行。它们大都是在安装系统是自动添加的。
  2. 用户组的类型

    在Linux系统中,每个用户账号至少属于一个组,这个组称为该用户的基本组。与Windows不同的是,**在Linux中创建一个用户账号,就会自动创建一个与该账号同名的组。**比如我们创建了一个student用户,就会自动创建一个student的用户组。

    ​ 在Linux系统中,每一个用户可以同时加入多个组,这些用户又另外加入的组叫附加组。

  3. UID和GID

    ​ UID(User Identifier,用户标识符),是系统中每一个用户的唯一标识符,对于系统核心来说,UID是区分用户的基本依据,root用户的UID固定为0,系统用户的账号为1-999之间,1000-60000的账号被划分给普通用户。

    ​ 每一个组也有一个数字形式的标识符-GID(Group Identifier,组标识符)。它们的分组标号和UID一样。

    ​ 需要注意的是,Linux系统也只是识别UID和GID来区分用户的组,至于用户名和组账号是方便人们记忆而已。

  4. 利用id查看用户信息

id ztr								# 查看ztr用户的基本信息
gpasswd -a ztr root					# 将ztr加入到root组

5.用户账号文件:/etc/passwd

该文件的组成:

用户:密码占位符:UID:GID:描述信息:家目录:用户所使用的shell命令

第七章 系统管理和维护_第1张图片

6.用户密码文件:/etc/shadow:由于/etc/passwd是所有用户可读的,这样就导致了用户和密码容易被泄露,因此Linux将用户的密码信息从/etc/passwd中分离出来,单独放在了/etc/shadow文件中。该文件又被称为影子文件,只有root用户拥有权限,从而保证用户密码的安全性。

第七章 系统管理和维护_第2张图片

​ 我们可以通过useradd命令添加的用户student和teacher,设置密码,我们可以通过如下命令来设置密码:

useradd student
useradd teacher
passwd student

第七章 系统管理和维护_第3张图片

​ 我们可以从该文件看到,密码都是通过加密处理的。我们常用的加密方式有两种:MD5和SHA。在Linux系统中使用SHA的加密方式加密。

echo -n '123' | md5sum							# 将123采用md5的方式加密
echo -n '123' | sha1sum							# 将123采用sha的方式加密
# 这两种就加密方式的区别是MD5加密成128位的字符-32个字符,SHA加密成160位的字符-40位

​ /etc/shadow文件中包括9个配置字段,其中第一个字段表示用户名,第2个字段表示使用HASH加密的密码。密码由"$"分成3部分:

  • 第一部分"$6":表示所采用的加密方式,Linux所提供的加密方式由md5,sha1,sha224,sha256,sha512等,"$6"对应的是sha512的加密方式;

  • 第二部分:是在密码中加入随机数salt,它的作用是防止用户使用相同的密码,而导致加密后的密码串也相同;

  • 第三部分:密码加密后的密码串,但是这些密码串都是通过重新编译后再存放的。

    后面的数字表示密码最后一次更改距计算机元年的天数

    echo $[18952/365]
    

2.用户和组的操作

2.1.创建用户

我们可以使用命令useradd来添加命令,格式如下:

useradd 用户									# 新增用户
# 通过创建用户,设计到更改的目录有/etc/passwd  /etc/shadow  /etc/group  /etc/gshadow
  /home   /home/用户

useradd命令常用选项:

  • -u选项:给用户指定一个UID,要求该UID未被其他用户占用。
useradd -u 1004 user2						  # 创建user2的用户并指定UID位1004
tail -1 /etc/passwd
# user2:x:1004:1004::/home/user2:/bin/bash

  • **-d选项:指定用户的家目录:**普通用户的家目录都是指定在/home目录下,我们可以通过-d选项指定到某一目录下。
useradd -d /admin admin						# 创建一个admin用户到/admin目录 
  • -g选项:指定创建用户的基本组
useradd -g admin user3						# 创建user3用户并指定admin的用户基本组-不会创建user3组
tail /etc/group								# 查看组文件并没有user3用户基本组
  • -G选项:指定创建用户附加组
useradd -G admin user4						# 创建user4并指定附加组admin
id user4									# 创建了user4的基本组,并归于admin的附加组
  • -e选项:指定用户账号的失效时间,可使用yyyy-mm-dd的日期格式
useradd -g users -e 2021-11-11	temp01		# 创建一个2021-11-11失效的的用户temp01并指定users用户组

2.2.修改密码

​ 在Linux系统中我们需要定期的修改密码来确保账户的安全性,修改密码的命令是passwd,其语法格式为:

passwd 用户名

​ 注意:只有root用户才能修改所有用户的密码,只有本用户才能修改自己的密码。

  • -d选项:清除密码
passwd -d user1										# 清除密码

​ 用户的密码被清除后,无需使用密码就可以实现本地登录,但远程登录始终是需要密码的。

  • -u选项:解锁用户
passwd -u user2										# 将用户user2解锁
  • –stdin选项:从文件或管道读取密码:由于在用passwd密令设置或修改密码时,需要用户反复进行确认,而这很难复合自动化运维的需要,因而在实际操作中,需要使用–stdin选项与管道配合,从而自动化完成密码设置。-该种方式只能在centos上使用,不适用ubuntu。
echo '123' | passwd --stdin user1							# 无需确认,直接为user1设置密码

echo user1:'123' | chpasswd								# ubuntu系统使用方式

2.3.切换用户命令

​ 切换用户身份可以使用su(switch user)命令来实现,基本格式为:

su [-] [用户名]

​ 如果不加"-“,工作目录还在原来的目录,如果加了”-"就变成了切换后用户的家目录

第七章 系统管理和维护_第4张图片

需要注意的是,从管理员切换到普通用户不需要输入密码,从普通用户切换到管理员需要输入密码。

2.4.切换用户的属性

​ 对于系统已经存在的用户账号,如果要修改其属性信息可以直接编辑/etc/passwd文件中的相关数值,也可以使用usermod(user modify)命令重新设置。

​ usermode和useradd命令的选项基本一致。

  • -m,-d选项:修改用户的家目录
usermod -m -d /home/admin admin				# 将admin的家目录移动到/home/admin下
  • -l选项:更改用户的账号名称:
usermod -l master admin						# 将admin用户的账号改为master
grep master /etc/passwd
  • -g选项:更改用户的基本组:
usermod -g ftp master						# 将master的基本组改为ftp
id master
  • -G,-a选项:更改用户的附加组:
usermod -G root master						# 将master用户附加组改为root

用这个选项修改附加组会将之前的附加组清空并重新设置。如果需要保留之前用户的附加组,那么就需要结合-a选项。

gpasswd -a student root						# 将student加入到root组
usermod -a -G ztr student					# 将student加入到ztr附加组,并且不覆盖之前的
id student

3.用户组的管理

3.1.用户组的配置文件

​ 与组账号相关的配置文件有两个:/etc/group/etc/gshadow。前者保存组账号名称、GID、组成员等基本信息,后者用于保存组账号的加密密码字符串等信息。

grep "^root" /etc/group							# 查看root组的信息	
# root:x:0:student

  • 第一个字段:组名
  • 第二个字段:组密码占位符x
  • 第三个字段:GID
  • 第四个字段:以改组为附加组的用户列表,注意,以该组为基本组的账号不会显示。

3.2.创建用户组

​ 创建用户组使用命令groupadd

groupadd class3									# 创建class3的用户组
tail -1 /etc/group
  • -g选项:指定GID号
groupadd -g 2000 class2						# 创建用户组,并指定GID为2000
tail -1 /etc/group

3.3.添加、删除组成员

gpasswd命令本来是设置组账号的密码,但是该功能极少使用,实际上该命令更多的是添加、删除组成员,对应的选项为-a、-d。

gpassswd [选项] 用户名 组名

注意:gpasswd命令改变的是用户的附加组,将用户加入到某个组之后,该组将称为一个用户的附加组。

gpasswd -a student teacher						# 将student用户加入到teacher组
id student										# 基本组不变

---------------------
gpasswd -d student teacher						# 将student从teacher组删除

3.4.删除用户组

​ 如果要删除的组是某些用户的基本组,那么就得先删除这些用户,才能删除用户基本组。使用命令groupdel便可以完成这些操作:

gpasswd -a super class1							# 将class1设为super的附加组
groupdel class1									# 删除class1用户组
-------------------------
usermod -g class2 super							# 将class2设为super的基本组
groupdel class2									# 此时无法删除
usermod -g admin super							# 将admin设为super的基本组
groupdel class2									# 此时才能删除

4.软件包管理

4.1.软件包简介

​ 软件包是Ubuntu系统中软件及其文档的提供形式。一般而言,软件包中包括源程序软件包和二进制软件包。源程序软件包主要提供源代码以及二进制软件包的制作方法;二进制软件包是经过封装的可执行程序及其相关文档和配置文件等,它通常是压缩文档,其中包含软件信息、程序文件、配置文件、帮助文档、启动脚本和控制信息等内容。用户可以方便地通过二进制软件包安装、升级和删除软件。

​ Ubuntu软件包地格式不同于其他Linux系统,其主要格式是DEB格式。这种格式最早是Debian Linux使用地,Ubuntu本质上是从Debian发展而来地,因此也沿用了DEB格式。Linux操作系统中的DEB包类似于Windows上的软件包,不需要复杂的编译即可通过鼠标单击安装使用。Ubuntu软件仓库中提供的软件包均采用了这种封装,apt-get、aptitude、synaptic等软件管理工具均支持DEB包。DEB包存在依赖关系,常见的依赖关系有Depends、Recommends和Conflicts等。假设有两个DEB包—A和B,若软件包A和B之间存在Depends关系,即A依赖B,则意味着安装软件包A时也要安装软件包B;Recommends关系意味着开发者推荐用户在安装软件包A时系统必须已经安装了软件包B;Conflicts则意味着软件包A和B不能同时存在,相互冲突。

​ Ubuntu还支持Redhat格式的软件包,即RPM格式,Redhat的派生系统(Fedora、CentOS等)也支持此格式的软件包。此外Ubuntu还支持Tarball格式的软件包,这是一种将大量文件(包括其目录结构)组合成单个文件的大型文件集合。Tarball使用tar命令组合多个文件,生成一个文件,以便于系统中常用的ZIP或RAR压缩文件。Tarball文件的扩展名一般为.tar.gztar.bz2等,可用于装配源代码或二进制代码文件。Tarball常常用于开源社区分发源代码,对于tar.gz文件,在终端中执行tar xvf filename命令将想要的文件解压,再执行其中包含软件的安装命令即可。

4.2.高级软件包管理工具APT

​ APT(Advance Packaging Tool,高级打包工具)是Ubuntu软件包管理系统的高级界面。Ubuntu基于Debian,APT由几个名字以"apt-"打头的程序组成,包括apt-get、apt-cache和apt-cdrom等,这些都是处理软件包的命令行工具。

​ APT是一个客户/服务器系统,再服务器上先复制所有DEB包,然后用APT的分析工具(genbasedir)根据每个DEB包的包头(header)信息对所有的DEB包进行分析,并将该分析结果记录在一个文件中,这个文件称为DEB索引清单,APT服务器的DEB索引清单置于base文件夹内。一旦APT服务器内的DEB包有所变动,就必须使用genbasedir分析工具产生新的DEB索引清单。客户端在进行安装或升级时先要查询DEB索引清单,从而可以获知所有具有依赖关系的软件包,并一同下载到客户端,以便安装。

​ 当客户端需要安装、升级或删除某个软件包时,客户端计算机取得DEB索引清单压缩文件后,会将其解压并放于/var/state/apt/lists目录下,而客户端执行apt-get installapt-get upgrade命令的时候,就会将这个目录下的数据或客户端计算机内的DEB数据库比对,从而知道哪些DEB已安装、未安装或可以升级。

apt-get提供了一个用于下载和安装软件包的建议命令行界面,在其中可以执行很多命令,最常用的是updateinstall。命令解释如下:

  • update:取回更新的软件包列表信息
  • upgrade:进行一次升级
  • install:安装新的软件包(注意,报名时libc6而非libc6.deb)
  • remove:卸载软件包
  • autoremove:卸载所有自动安装且不再使用的软件包
  • purge:卸载并清除软件包的配置
  • source:下载源码包文件
  • build-dep:为源码包配置编译依赖关系
  • dist-upgrade:发布版升级
  • dselect-upgrade:根据dselect的选择进行升级
  • clean:删除所有以下载的包文件
  • autoclean:删除老版本的已下载的包文件
  • check:核对已确认系统的依赖关系的完整性
  • changelog:下载和显示包文件的修改日志
  • download:下载二进制包文件到当前目录

命令的选项如下:

  • -h:本帮助文档
  • -q:让输出可作为日志,不显示进度
  • -qq:除了错误以外,不输出其他信息
  • -d:仅下载,不安装或解开包文件
  • -s:不进行实际操作,只依次模拟执行命令
  • -y:对所有询问都回答yes
  • -f:当出现破损的依赖关系时,程序将尝试修正系统
  • -m:当有包文件无法找到时,程序仍尝试继续执行
  • -u:显示已升级的软件包列表
  • -b:在下载完源码包后,编译生成相应的软件包
  • -V:显示详尽的版本号
  • -c file:读取指定的配置文件file
  • -o option:设置任意配置选项,例如-o dir:cache=/tmp

apt-get命令的使用举例:

1.安装openssh-server:

apt-get install openssh-server

2.完成后,查看ssh进程是否安装和启动:

ps -e | grep ssh

第七章 系统管理和维护_第5张图片

3.利用ifconfig命令,查看SSH服务器的IP地址:

ifconfig

如果没有ens33的网卡,可以参考:https://www.cnblogs.com/Gregg/p/17187459.html

4.使用Mobaxterm进行远程连接:

第七章 系统管理和维护_第6张图片

​ Ubuntu图形界面的软件安装可以通过应用中心的软件管理工具管理软件的安装、卸载、更新:

第七章 系统管理和维护_第7张图片

你可能感兴趣的:(Linux,运维,Linux,运维,Ubuntu)