六、RPM包管理命令

主要功能

  1. 查询RPM软件、包文件的相关信息
  2. 安装、升级、卸载RPM软件包
  3. 维护RPM数据库信息

查询RPM软件信息

查询已安装的RPM软件信息

格式:rpm -q[子选项] [软件名]

用法:结合不同的子选项 完成不同查询

-qa:查看系统中已安装的所有RPM软件包列表

-qi:查看指定软件的详细信息

-ql:查询指定软件包所安装的目录、文件列表

-qc:仅显示指定软件包安装的配置文件

-qd:仅显示指定软件包安装的文档文件

查询文件/目录属于哪个RPM软件

格式:rpm -qf 文件或目录名

查询未安装的RPM包文件

格式:rpm -qp[子选项] RPM包文件

用法:结合不同的子选项 完成不同查询

-qpi:通过.rpm包文件查看该软件的详细信息

-qpl:查看.rpm安装包内所包含的目录、文件列表

-qpc:查看.rpm安装包内包含的配置文件列表

-qpd:查看.rpm安装包内包含的文档文件列表

安装、升级、卸载RPM软件包

安装或升级RPM软件

格式:rpm [选项] RPM包文件...

用法:不同选项适用于不同情况

-i:安装一个新的rpm软件包

-U:升级某个rpm软件,若原本未装,则进行安装

-F:更新某个rpm软件,若原本未装,则放弃安装

-i 用于安装新软件包,-U 用于升级现有软件包(若未装则安装),-F 也用于升级现有软件包(若未装则不装)

卸载指定的RPM软件

格式:rpm -e 软件名

卸载软件时只需要指定软件名即可,无需指定版本号

辅助选项

--force:强制安装所指定的rpm软件包

--nodeps:安装、升级或卸载软件时,忽略依赖关系

-h:以“#”号显示安装的进度

-v:显示安装过程中的详细信息

--force 辅助选项主要应用于以下两种情况:

1)缺失某个软件包的文件时,需要进行覆盖安装以找回丢失文件

2)安装一个比现有软件版本陈旧的软件包(多为测试用途)

当安装、卸载软件包时,提示缺少依赖包无法进行时,如果仍要继续执行,应结合 --nodeps 选项而不是 --force 选项

在安装新的软件包时,通常使用”-ivh”组合选项来获得更加友好的屏幕提示信息

“warning:……NOKEY……”的警告信息是由于没有导入RedHat提供的公钥所致,但并不影响安装效果,可以忽略,如果需要导入公钥文件,可以参考如下步骤(以后从RHEL5光盘中安装软件时,就不会再出现警告提示了):

[root@localhost ~]# cd /media/cdrom

[root@localhost cdrom]# rpm --import RPM-GPG-KEY-redhat-release

解决软件包依赖关系

安装有依赖关系的多个软件时

1、被依赖的软件包需要先安装

2、同时指定多个.rpm包文件进行安装

卸载有依赖关系的多个软件时

1、依赖其他程序的软件包需要先卸载

2、同时指定多个软件名进行卸载

忽略依赖关系

结合“--nodeps”选项,但可能导致软件异常

查询util-linux软件包安装的文件:rpm -ql util-linux

查询mkdir命令是由哪个RPM软件包安装的:rpm -qf mkdir

强制卸载被其他程序依赖的软件:rpm -e softname --nodeps

当安装、卸载软件包时,提示缺少依赖包无法进行时,如果仍要继续执行,应结合 --nodeps 选项而不是 --force 选项

维护RPM数据库

当RPM数据库损坏时,需要进行数据库重建

格式:rpm --rebuilddb

rpm --initdb

当RPM数据库发生损坏,Linux系统无法自动完成修复时,可能将导致无法正常安装、卸载rpm软件包

在图形界面中管理RPM包

图形界面中的“添加/删除软件”

依赖于YUM(Yellow dog Updater,Modified)机制

调用yum命令工具进行软件更新

使用“添加/删除软件”工具的条件

能够访问互联网中的YUM源服务器

若使用默认源,需有合法的安装序列号和服务订阅号

在局域网内构建本地的YUM源服务器

参考《Linux实用技术阅读手册》第一章

YUM(Yellow dog Updater,Modified,修订版的黄狗升级器)

使用RHEL5系统光盘中的软件包可以构建自己的YUM源服务器,具体请参阅《Linux实用技术阅读手册》

讲师可在备课过程中预先构建好本地yum服务器,如果时间允许,这里可以演示“添加/删除软件”工具的操作,也可以适当扩展,对yum更新工具命令进行讲解

源代码编译概述

使用源代码安装软件的优点

获得最新的软件版本,及时修复bug

根据用户需要,灵活定制软件功能

应用场合举例

安装较新版本的应用程序时

自由软件的最新版本大都以源码的形式最先发布

当前安装的程序无法满足需要时

编译安装可由用户自行修改、定制功能

需要为应用程序添加新的功能时

用户可以重新配置、自由修改源代码,加入新的功能

Tarball 封包:

.tar.gz 和 .tar.bz2 格式居多

软件素材参考:http://sourceforge.net

完整性校验

md5sum校验工具

计算MD5校验和,并与官方提供的值相比较,判断是否一致

对于下载回来的软件包文件,如果MD5校验和与官方提供的不一致,则说明该软件包在网络传输过程中可能被非法改动过

对于校验和不一致的软件包,应尽量不要使用,以免带来病毒、木马等不安全因素

确认源代码编译环境

需安装支持 C/C++程序语言的 编译器

gcc-4.1.1-52.el5、gcc-c++-4.1.1-52.el5

make-3.81-1.1.i386 ……

源码编译安装的基本过程

解包 —— tar

解包、释放出源代码文件

配置 —— ./configure

针对当前系统、软件环境,配置好安装参数

编译 —— make

将源代码文件变为二进制的可执行程序

安装 —— make install

将编译好的程序文件复制到系统中

configure 一般是位于软件包目录中的可执行脚本文件

  1. 解包

    习惯上将软件包释放到 /usr/src/ 目录

    解包后的源代码文件位置:/usr/src/软件名-版本号/

软件包释放至哪个目录并无硬性限制,例如用户也可以释放至 /usr/local/src/ 目录或者其他目录下,编译安装结束后,源码包目录可以选择删除

释放出的软件源代码目录中,configure脚本文件将用于下一步的配置工作

  1. 配置

    需将工作目录切换到软件源码所在目录

    使用源码目录中的 configure 脚本

    执行“./configure --help” 可以查看帮助

    典型的配置选项:

    --prefix=软件安装目录

不同的应用程序其配置参数会存在区别,因此使用“./configure --help”非常重要(“./”表示当前目录)

用户应用程序习惯上安装到“/usr/local/软件名”文件夹中

编译过程中如果出现错误,通常是由于缺少依赖软件包所致

根据软件大小不同,配置过程可能会需要不同的时间

  1. 编译

    执行 make 命令

  2. 安装

    执行 make install 命令

这两个步骤可以合写为一行:

make && make install

编译过程(make)通常是源码包编译过程中耗时最长的环节,对于小软件可能感觉不到

安装的过程(make install)也会消耗一些时间

“make && make inistall”操作中,“&&”符号表示只有当前一条命令执行成功以后,才会执行后边的命令

验证已编译安装完成的程序:查看安装后的软件目录、了解软件程序的使用方法

七、管理用户和文件权限

用户和组帐号概述

Linux基于用户身份对资源访问进行控制

用户帐号:

超级用户root

普通用户

程序用户

组帐号:

基本组(私有组)

附加组(公共组)

UID和GID:

UID(User Identity,用户标识号)

GID(Group Identify,组标识号)

超级用户,即root用户,类似于Windows系统中的Administrator用户,非执行管理任务时不建议使用root用户登录系统

普通用户帐号一般只在用户自己的宿主目录中有完全权限

程序用户:用于维持系统或某个程序的正常运行,一般不允许登录到系统。例如:bin、daemon、ftp、mail等

root用户的UID的固定值为0、root组帐号的GID号为固定值0

1~499的UID、GID默认保留给程序用户使用,普通用户/组使用的UID、GID号在500~60000之间

用户帐号文件 —— passwd

用于保存用户的帐号基本信息

文件位置:/etc/passwd

每一行对应一个用户的帐号记录

字段1:用户帐号的名称

字段2:用户密码字串或者密码占位符“x”

字段3:用户帐号的UID号

字段4:所属基本组帐号的GID号

字段5:用户全名

字段6:宿主目录

字段7:登录Shell信息

基于系统运行和管理需要,所有用户都可以访问passwd文件中的内容,但是只有root用户才能进行更改

在早期的UNIX操作系统中,用户帐号的密码信息是保存在passwd文件中的,不法用户可以很容易的获取密码字串并进行暴力破解,因此存在一定的安全隐患

后来经改进后,将密码转存入专门的shadow文件中(见下页)并严格控制全新,而passwd文件中仅保留密码占位符“x”

用户帐号文件 —— shadow

用于保存密码字串、密码有效期等信息

文件位置:/etc/shadow

每一行对应一个用户的密码记录

字段1:用户帐号的名称

字段2:加密的密码字串信息

字段3:上次修改密码的时间

字段4:密码的最短有效天数,默认值为0

字段5:密码的最长有效天数,默认值为99999

字段6:提前多少天警告用户口令将过期,默认值为7

字段7:在密码过期之后多少天禁用此用户

字段8:帐号失效时间,默认值为空

字段9:保留字段(未使用)

默认只有root用户能够读取文件中的内容,并且不允许root直接编辑该文件中的内容

上次修改密码的时间,表示从1970年01月01日(可理解为Unix系统的诞生日)算起到最近一次修改密码时间隔的天数

添加用户帐号

useradd命令

格式:useradd [选项]... 用户名

常用命令选项

-u:指定 UID 标记号

-d:指定宿主目录,缺省为 /home/用户名

-e:指定帐号失效时间

-g:指定用户的基本组名(或UID号)

-G:指定用户的附加组名(或GID号)

-M:不为用户建立并初始化宿主目录

-s:指定用户的登录Shell

最简单的用法是,不添加任何选项,只使用用户名作为useradd命令的参数,按系统默认配置建立指定的用户帐号

演示添加用户的操作,重点演示 -d、-e、-g、-G、-s 等几个选项的用法,例如:

——创建名为st02的用户帐号,并将其UID号指定为504

[root@localhost ~]# useradd -u 504 st02

[root@localhost ~]# tail -1 /etc/passwd

st02504:504::/home/st02:/bin/bash

——创建一个考试测试用的帐号exam01,指定属于users组,该帐号于2009-07-30失效

[root@localhost ~]# useradd -g users -e 2009-07-30 exam01

展示/etc/passwd、/etc/shadow文件中的变化

说明:使用adduser命令也可以添加用户帐号,在RHEL5系统中adduser命令实际上是useradd命令的符号链接

用户帐号的初始配置文件

文件来源

新建用户帐号时,从 /etc/skel 目录中复制而来

主要的用户初始配置文件

~/.bash_profile:用户每次登录时执行

~/.bashrc:每次进入新的Bash环境时执行

~/.bash_logout:用户每次退出登录时执行

设置/更改用户口令

passwd命令

格式:passwd [选项]... 用户名

常用命令选项

-d:清空用户的密码,使之无需密码即可登录

-l:锁定用户帐号

-S:查看用户帐号的状态(是否被锁定)

-u:解锁用户帐号

“未设置密码”的用户帐号尚未完成初始化,处于不可登录状态,这与“空密码”的情况(已经为用户设置密码,但密码字串为空)是不同的

—— “未设置密码”的用户将被禁止登录系统,而拥有“空密码”的用户是可以在本地终端登录的

普通用户也可以使用passwd命令,但只能更改自己的密码,密码要求有一定的复杂性(如不要直接使用英文单词,长度保持在6位以上),否则系统可能拒绝进行设置

被锁定的帐号也将无法登录系统

修改用户帐号的属性

usermod命令

格式:usermod [选项]... 用户名

常用命令选项

-l:更改用户帐号的登录名称

-L:锁定用户账户

-U:解锁用户账户

以下选项与useradd命令中的含义相同

-u、-d、-e、-g、-G、-s

删除用户帐号

userdel命令

格式:userdel [-r] 用户名

添加 -r 选项时,表示连用户的宿主目录一并删除

当系统中的某个用户帐号已经不再需要使用时(如该员工已经从公司离职等情况),可以使用userdel命令将该用户帐号删除

使用userdel命令需要指定帐号名称作为参数,添加“-r”选项时可以将该用户的宿主目录一并删除。

组帐号文件 —— group、gshadow

与用户帐号文件相类似

/etc/group:保存组帐号基本信息

/etc/gshadow:保存组帐号的密码信息

与组帐号相关的配置文件也有2个,分别是/etc/group、/etc/gshadow

/etc/gshadow文件的应用极少,仅作简单介绍即可

group文件内的最后一个字段中列出属于该组的用户成员(一般不包括基本组对应的用户帐号),多个成员之间以逗号“,”分隔

添加组帐号

groupadd命令

格式:groupadd [-g GID] 组帐号名

使用groupadd命令可以添加一个组帐号,需要指定GID号时,可以使用“-g”选项

添加、删除组成员

gpasswd命令

用途:设置组帐号密码(极少用)、添加/删除组成员

格式:gpasswd [选项]... 组帐号名

常用命令选项

-a:向组内添加一个用户

-d:从组内删除一个用户成员

-M:定义组成员列表,以逗号分隔

删除组帐号

groupdel命令

格式:groupdel 组帐号名

用户和组帐号查询

id命令

用途:查询用户身份标识

格式:id [用户名]

groups命令

用途:查询用户所属的组

格式:groups [用户名]

finger命令

用途:查询用户帐号的详细信息

格式:finger [-l] [用户名]

users、w 、who命令

用途:查询已登录到主机的用户信息

主要有哪两个用户帐号文件,各有什么作用?

如何锁定、解锁用户帐号?

在添加用户帐号时,如何设置其失效时间?

用户初始配置文件包括哪些,各有什么作用?

如何设置一个组的多个用户成员?

【1】/etc/passwd、/etc/shadow

【2】锁定帐号:usermod -L 用户名、passwd -l 用户名 ; 解锁帐号: usermod -U 用户名、passwd -u 用户名

【3】useradd -e YYYY-mm-dd 用户名 或者 usermod -e YYYY-mm-dd 用户名

【4】/.bash_profile、/.bashrc、~/.bash_logout

【5】gpasswd -M 用户1,用户2,用户3 组名

文件/目录的权限和归属

访问权限

读取:允许查看文件内容、显示目录列表

写入:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录

可执行:允许运行程序、切换目录

归属(所有权)

属主:拥有该文件或目录的用户帐号

属组:拥有该文件或目录的组帐号

设置文件/目录的权限

chmod命令

格式1:chmod [ugoa] [+-=] [rwx] 文件或目录...

格式2:chmod nnn 文件或目录...

常用命令选项

-R:递归修改指定目录下所有文件、子目录的权限

chown命令

格式:chown 属主 文件或目录

chown :属组 文件或目录

chown 属主:属组 文件或目录

常用命令选项

-R:递归修改指定目录下所有文件、子目录的归属

需要设置文件或者目录的归属时,可以通过chown、chgrp命令进行

chown命令既可以修改属主,也可以修改属组,而chgrp命令只用于修改属组信息(因此并不常用)

使用附加权限

SET位权限

主要用途:

为可执行(有 x 权限的)文件设置,权限字符为“s”

其他用户执行该文件时,将拥有属主或属组用户的权限

SET位权限类型:

SUID:表示对属主用户增加SET位权限

SGID:表示对属组内的用户增加SET位权限

普通用户并没有权限修改“/etc/shadow”文件,那为什么可以修改自己的登录密码呢?

—— 这是因为:passwd命令程序被设置了SUID权限,普通用户在执行该命令时临时获得相当于属主用户(root)的权限

注意:不要轻易为可执行文件设置SET位权限,特别是对于那些属主、属组是root的执行程序,使用SET位权限时更应该慎重。例如,若为vim编辑器程序设置SUID权限,将导致普通用户也可以使用vim编辑器修改系统中的任何配置文件

粘滞位权限(Sticky)

主要用途:

为公共目录(例如,权限为777的)设置,权限字符为“t”

用户不能删除该目录中其他用户的文件

应用示例:/tmp、/var/tmp

设置SET位、粘滞位权限

使用权限字符

chmod ug±s 可执行文件...

chmod o±t 目录名...

使用权限数字:

chmod mnnn 可执行文件...

m为4时,对应SUID,2对应SGID,1对应粘滞位,可叠加

进程管理命令

1、kill(结束进程)

这个命令用于发送信号来结束进程。如果一个进程没有响应杀死命令,这也许就需要强制杀死,使用-9参数来执行。

注意,使用强制杀死的时候一定要小心,因为进程没有时机清理现场,也许写入文件没有完成。

如果我们不知道进程PID或者打算用名字杀死进程时候,killall就能派上用场。

格式:

kill 杀死线程

kill -9 强制杀死线程

killall -9 - 强制杀死所有拥有同样名字的进程

如果你使用kill,你需要知道进程ID号。pkill是类似的命令,但使用模式匹配,如进程名,进程拥有者等。
pkill <进程名>

2、ps(查看静态进程运行情况)

ps 是 Linux 中最基础的浏览系统中的进程的命令。

能列出系统中运行的进程,包括进程号、命令、CPU使用量、内存使用量等

格式:
ps -a - 列出所有运行中/激活进程
ps -e 列出程序时,显示每个程序所使用的环境变量。
ps -f 用ASCII字符显示树状结构,表达程序间的相互关系
ps -ef | grep - 列出需要进程
ps -aux - 显示进程信息,包括无终端的(x)和针对用户(u)的进程:如USER, PID, %CPU, %MEM等

3、top(查看动态进程运行情况)

top 是一个更加有用的命令,可以监视系统中不同的进程所使用的资源。它提供实时的系统状态信息。

显示进程的数据包括 PID、进程属主、优先级、%CPU、%memory等。可以使用这些显示指示出资源使用量。

查看资源使用情况命令

1、uptime 查看cpu负载情况

2、free -m 查看内存使用情况

3、df -hl 查看磁盘使用情况

查看网络状态命令

netstat -ntlp | grep 端口 (查看某个端口是否占用)

netstat -anp (查看网络连接情况)

-a (all)显示所有选项

-n 拒绝显示别名,能显示数字的全部转化成数字。

-p 显示建立相关链接的程序名

-r 显示路由信息,路由表

-e 显示扩展信息,例如uid等

-l 或–listening,显示监控中的服务器的Socket

-t 或–tcp 显示TCP 传输协议的连线状况

查找Linux系统的IP命令

/sbin/ifconfig

重启

shutdown -r now

shutdown -r +15 “警告:系统将于15分钟后重启”

reboot

区别:

Reboot重启不会给其他用户提示重启信息;

Shutdown 会给出重启提示信息,在多用户登录系统操作时,相对安全。

关机

shutdown -h now

halt

halt -p

su 用户名

切换用户

lsb_release -a 查看Linux系统版本

|:管道:将前面命令的屏幕输出结果作为后面命令的处理对象(输入)

:重定向输出,将前面命令的屏幕输出结果保存到">"后面的指定文件中

echo :屏幕输出内容

col:col命令用于过滤文本中的一些特殊控制字符

service sshd status

service sshd start

service sshd stop

service network restart

查看是否已安装SSH

rmp -qa|prep "ssh"

查看SSH服务是否启动

Service sshd status

Windows查看特定端口;netstat –aon|findstr 8080

Windows查看所有端口;netstat –aon

Windows查看PID对应的进程名;tasklist |findstr 8080

隐藏文件:MV 原文件 .原文件

防火墙永久

开启: chkconfig iptables on

关闭: chkconfig iptables off

即刻生效:

开启: service iptables start

关闭: service iptables stop

RedHat操作指令第2篇的更多相关文章

  1. RedHat操作指令第3篇

    系统信息 arch 显示机器的处理器架构 uname -m 显示机器的处理器架构 uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI) ...

  2. RedHat操作指令第4篇

    top(查看动态进程运行情况) top 是一个更加有用的命令,可以监视系统中不同的进程所使用的资源.它提供实时的系统状态信息. 显示进程的数据包括 PID.进程属主.优先级.%CPU.%memory等 ...

  3. RedHat-Linux操作指令第1篇

    不同的linux系统切换方式会稍有一点差别 从图形界面切换到字符界面:Alt+F(1-8) 或者 Alt+Ctrl+Shift+F(1-8) 从字符界面切换回图形界面:Alt+F7 字符界面启动到图形 ...

  4. 第23篇-虚拟机对象操作指令之getstatic

    Java虚拟机规范中定义的对象操作相关的字节码指令如下表所示. 0xb2 getstatic 获取指定类的静态域,并将其值压入栈顶 0xb3 putstatic 为指定的类的静态域赋值 0xb4 ge ...

  5. 第24篇-虚拟机对象操作指令之getfield

    getfield指令表示获取指定类的实例域,并将其值压入栈顶.其格式如下: getstatic indexbyte1 indexbyte2 无符号数indexbyte1和indexbyte2构建为(i ...

  6. 第25篇-虚拟机对象操作指令之putstatic

    之前已经介绍了getstatic与getfield指令的汇编代码执行逻辑,这一篇介绍putstatic指令的执行逻辑,putfield将不再介绍,大家可以自己去研究,相信大家有这个实力. putsta ...

  7. linux常用操作指令

    Linux常用操作指令: 常用指令 ls        显示文件或目录 -l           列出文件详细信息l(list) -a          列出当前目录下所有文件及目录,包括隐藏的a(a ...

  8. Redis数据类型:Sorted Sets操作指令

    Redis数据类型:Sorted Sets操作指令 Sorted Sets常用操作指令 Sorted Sets,本质是一个有序的Sets,其实在原来的Sets集合中对每一个元素新增了一个属性Score ...

  9. linux指令大全(完整篇)(转)

       http://blog.chinaunix.net/uid-9681606-id-1998590.html  linux指令大全(完整篇)(转) 2009-03-17 01:21:46 分类:  ...

随机推荐

  1. 微信三方平台开发上传base64格式图片至临时素材

    1 public string UploadImgByB64(string b64) 2 { 3 //access_token 需要自己获取 4 string access_token = getTo ...

  2. Flink SQL Client综合实战

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  3. ngx accept_mutex

    尝试获取锁,如果获取了锁,那么还要将当前监听端口全部注册到当前worker进程的epoll当中去  获取失败就需要确保此时ls-fd 没有被 epoll 监听 ngx_int_t ngx_tryloc ...

  4. 都知道的copy_from_user

    Q:一直知道内核和用户态的数据交互前都需要 校验地址的合法性,一般都用copy_from/to_user完成数据拷贝,那么为什么要这样呢?? A:看了一些blog以及Stack Overflow 主要 ...

  5. golang的bytes.buffer

    参考原文:go语言的bytes.buffer 一.创建缓冲期 bytes.buffer是一个缓冲byte类型的缓冲器 1.使用bytes.NewBuffer创建:参数是[]byte的话,缓冲器里就是这 ...

  6. Spring源码之FactoryBean的实现

    https://zhuanlan.zhihu.com/p/97005407 https://blog.csdn.net/qq_35634181/article/details/104507465 总结 ...

  7. Ceph S3 基于NGINX的集群复制方案

    前言 ceph的s3数据的同步可以通过radosgw-agent进行同步,同region可以同步data和metadata,不同region只能同步metadata,这个地方可以参考下秦牧羊梳理的 c ...

  8. CSS属性(字体与文本属性)

    1.字体属性 (1)font-family 把要对这个网站要设置的字体都写上,如果这个浏览器支持第一个字体,则会用,如果不支持则会尝试第二个,如果设置的字体系统都不支持则会使用系统默认的字体作为网站的 ...

  9. 洛谷 P2101 命运石之门的选择 (分治)

    P2101 命运石之门的选择 (分治) 介绍 El Psy Congroo 题目链接 没错,作为石头门厨,怎么能不做石头门的题呢?(在搜石头门的时 候搜到了本题) 本题作为一道分治基础练习题还是不错的 ...

  10. 设置Centos7中vim与vi编辑器显示行号

    设置Centos7中vim与vi编辑器的行号 步骤一: 输入命令设置: 1.vim ~/.vimrc 或者:(vi ~/.vimrc) 步骤二: 输入命令保存: 1.在其中输入 "set n ...