能力说明:
掌握计算机基础知识,初步了解Linux系统特性、安装步骤以及基本命令和操作;具备计算机基础网络知识与数据通信基础知识。
关注微信公众号【开源Linux】,后台回复『学习』,送你一套学习IT系列书籍,期待与你相遇。
既然我们已经知道文件权限对于一个系统的重要性,也知道每个文件都设定了针对不同用户的访问权限,那么,是否可以手动修改文件的访问权限呢?
通过前面的学习,我们知道了给文件设定权限的重要性,也知道了如何给文件设定权限。那么,读(r)、写(w)、执行(x)权限到底指的是什么呢?
Linux 系统,最常见的文件权限有 3 种,即对文件的读(用 r 表示)、写(用 w 表示)和执行(用 x 表示,针对可执行文件或目录)权限。在 Linux 系统中,每个文件都明确规定了不同身份用户的访问权限,通过 ls 命令即可看到。
chown 命令,可以认为是 “change owner” 的缩写,主要用于修改文件(或目录)的所有者,除此之外,这个命令也可以修改文件(或目录)的所属组。
为了方便初学者记忆,可以将 chgrp 理解为是 “change group” 的缩写。
作为本章的第一节,首先要搞清楚一个问题,Linux 系统中为什么需要设定不同的权限,所有用户都直接使用管理员(root)身份不好吗?
我们知道,每个用户可以属于一个初始组(用户是这个组的初始用户),也可以属于多个附加组(用户是这个组的附加用户)。既然用户可以属于这么多用户组,那么用户在创建文件后,默认生效的组身份是哪个呢?
为了避免系统管理员(root)太忙碌,无法及时管理群组,我们可以使用 gpasswd 命令给群组设置一个群组管理员,代替 root 完成将用户加入或移出群组的操作。
groupdel 命令用于删除用户组(群组),此命令基本格式为:
groupmod 命令用于修改用户组的相关信息,命令格式如下:
添加用户组的命令是 groupadd,命令格式如下:
whoami 命令和 who am i 命令是不同的 2 个命令,前者用来打印当前执行操作的用户名,后者则用来打印登陆当前 Linux 系统的用户名。
su 是最简单的用户切换命令,通过该命令可以实现任何身份的切换,包括从普通用户切换为 root 用户、从 root 用户切换为普通用户以及普通用户之间的切换。
id 命令可以查询用户的UID、GID 和附加组的信息。命令比较简单,格式如下:
userdel 命令功能很简单,就是删除用户的相关数据。此命令只有 root 用户才能使用。
除了 passwd -S 命令可以查看用户的密码信息外,还可以利用 chage 命令,它可以显示更加详细的用户密码信息,并且和 passwd 命令一样,提供了修改用户密码信息的功能。
前面章节介绍了如何利用 useradd 命令添加用户,但如果不小心添错用户信息,后期如何修改呢?
学习 useradd 命令我们知道,使用此命令创建新用户时,并没有设定用户密码,因此还无法用来登陆系统,本节就来学习 passwd 密码配置命令 。
Linux 系统中,可以使用 useradd 命令新建用户,此命令的基本格式如下:
/etc/login.defs 文件用于在创建用户时,对用户的一些基本属性做默认设置,例如指定用户 UID 和 GID 的范围,用户的过期时间,密码的最大长度,等等。
通过学习用户和群组我们知道,群组可以让多个用户具有相同的权限,同时也可以这样理解,一个用户可以所属多个群组,并同时拥有这些群组的权限,这就引出了初始组(有时也称主组)和附加组。
前面讲过,/etc/passwd 文件存储用户基本信息,同时考虑到账户的安全性,将用户的密码信息存放另一个文件 /etc/shadow 中。本节要将的 /etc/gshadow 文件也是如此,组用户信息存储在 /etc/group 文件中,而将组用户的密码信息存储在 /etc/gshadow 文件中。
/ect/group 文件是用户组配置文件,即用户组的所有信息都存放在此文件中。
/etc/shadow 文件,用于存储 Linux 系统中用户的密码信息,又称为“影子文件”。
Linux 系统中的 /etc/passwd 文件,是系统用户配置文件,存储了系统中所有用户的基本信息,并且所有用户都可以对此文件执行读操作。
登陆 Linux 系统时,虽然输入的是自己的用户名和密码,但其实 Linux 并不认识你的用户名称,它只认识用户名对应的 ID 号(也就是一串数字)。Linux 系统将所有用户的名称与 ID 的对应关系都存储在 /etc/passwd 文件中。
Linux 是多用户多任务操作系统,换句话说,Linux 系统支持多个用户在同一时间内登陆,不同用户可以执行不同的任务,并且互不影响。
脚本程序并不多见,所以在软件包分类中并没有把它列为一类。它更加类似于 Windows 下的程序安装,有一个可执行的安装程序,只要运行安装程序,然后进行简单的功能定制选择(比如指定安装目录等),就可以安装成功,只不过是在字符界面完成的。
Linux 系统中存在大量的函数库。简单来讲,函数库就是一些函数的集合,每个函数都具有独立的功能且能被外界调用。我们在编写代码时,有些功能根本不需要自己实现,直接调用函数库中的函数即可。
通过前面的学习我们知道,使用 RPM 包(或 SRPM 包)和源码包都可以实现软件的安装和升级。那么,如果要对软件进行升级,又或是安装新的软件,应该选择哪种安装方式呢?
Linux 系统中更新用源码包安装的软件,除了卸载重装这种简单粗暴的方法外,还可以下载补丁文件更新源码包,用新的源码包重新编译安装软件。比较两种方式,后者更新软件的速度更快。
由于 Linux 操作系统开放源代码,因此在其上安装的软件大部分也都是开源软件,例如 Apache、Tomcat 和 PHP 等。开源软件基本都提供源码下载,可采用源码安装的方式安装软件。
在安装 Linux 系统时,我们可以根据需要自定义安装软件包,如图 1 所示:
在《yum及其源配置》一节的基础上,本节学习如何使用 yum 命令实现查询、安装、升级和卸载 RPM 包。
前面分别介绍了使用 SRPM 源码包和 RPM 二进制包安装软件,这两种方法都比较繁琐,需要手动解决包之间具有依赖性的问题,尤其是库文件依赖,需要自行去 http://www.rpmfind.net 网站上查找相关的 RPM 包。本节介绍一种可自动安装软件包(自动解决包之间依赖关系)的安装方式。
RPM 软件包(包含 SRPM 包)的依赖性主要体现在 RPM 包安装与卸载的过程中。
我们知道,RPM 包是很多 Linux 发行版(Fefora、RedHat、SuSE 等)采用的软件包管理方式,安装到系统中的各 RPM 包,其必要信息都会保存到 RPM 数据库中,以便用户使用 rpm 命令对软件包执行查询、安装和卸载等操作。
前面章节我们介绍了如何使用 RPM 包安装软件,本节学习使用另一种 RPM 包,即 SRPM 源码包安装软件。
在讲解如何从 RPM 包中提取文件之前,先来系统学习一下 cpio 命令。
执行 rpm -qa 命令可以看到,Linux 系统中装有大量的 RPM 包,且每个包都含有大量的安装文件。因此,为了能够及时发现文件误删、误修改文件数据、恶意篡改文件内容等问题,Linux 提供了以下两种监控(检测)方式:
《rpm 命令安装、升级和卸载 RPM 包》一节介绍了使用 rpm 命令安装、升级和卸载 RPM 软件包,rpm 命令还可用来对 RPM 软件包做查询操作,具体包括:
本节讲解如何使用 rpm 命令对 RPM 二进制包进行安装、卸载和升级操作。
RPM 二进制包的命名需遵守统一的命名规则,用户通过名称就可以直接获取这类包的版本、适用平台等信息。
Linux下的软件包众多,且几乎都是经 GPL 授权、免费开源(无偿公开源代码)的。这意味着如果你具备修改软件源代码的能力,只要你愿意,可以随意修改。
前面一节已经介绍了 awk 的基本用法,其实在 awk 脚本程序中,还支持使用一些编程语言,比如变量、数组、分支结构(if-then-else)、循环结构(while)、函数等,下面一一给大家介绍。
除了使用 sed 命令,Linux 系统中还有一个功能更加强大的文本数据处理工具,就是 awk。它诞生于 20 世纪 70 年代末期,这也许是它影响了众多 Linux 用户的原因之一。
《Linux sed用法详解》一节给大家介绍了如何用 sed 命令的基本功能处理文本中的数据,所涵盖的知识点,可以满足日常大多数文本编辑需求。本节将介绍 sed 提供的一些高级功能,这些功能虽不常用,但知道这些功能的存在以及用法也是有必要的。
sed 会根据脚本命令来处理文本文件中的数据,这些命令要么从命令行中输入,要么存储在一个文本文件中,此命令执行数据的顺序如下:
很多时候,我们并不需要列出文件的全部内容,而是从文件中找到包含指定信息的那些行,要实现这个目的,可以使用 grep 命令。
我们知道,Linux 中标准的输入设备默认指的是键盘,标准的输出设备默认指的是显示器。而本节所要介绍的输入、输出重定向,完全可以从字面意思去理解,也就是: