linux中安装程序及账户管理
程序安装及管理
1. Linux 应用程序基础
Linux命令与应用程序的关系
1):文件位置
系统命令:一般在/bin和/sbin目录中,或为Shell内部指令
应用程序:通常在/usr/bin和/usr/sbin目录中
2):主要用途
系统命令:完成对系统的基本管理工作,例如IP配置工具
应用程序:完成相对独立的其他辅助任务,例如网页浏览器
3):适用环境
系统命令:一般只在字符操作界面中运行
应用程序:根据实际需要,有些程序可在图形界面中运行
4):运行格式
系统命令:一般包括命令字、命令选项和命令参数
应用程序:通常没有固定的执行格式
典型应用程序的目录结构
文件类型 |
保存目录 |
普通执行程序文件 |
/usr/bin |
服务器执行程序文件和管理程序文件 |
/usr/sbin |
应用程序配置文件 |
/etc |
日志文件 |
/var/log |
应用程序文档文件 |
/usr/share/doc |
应用程序手册页文件 |
/usr/share/man |
2. 常见的软件包封装类型
封装类型 |
说明 |
rpm软件包 |
扩展名为“.rpm” |
deb软件包 |
扩展名为“.deb” |
源代码软件包 |
一般为“.tar.gz”、“.tar.bz2”等格式的压缩包包含程序的原始代码 |
附带安装程序的软件包 |
在压缩包内提供install.sh、setup等安装程序或以“.bin”格式的单个执行文件提供 |
绿色免安装的软件包 |
在压缩包内提供已编译好的执行程序文件解开压缩包后的文件即可直接使用 |
软件包封装类型包括rpm包. Deb包. 源代码包. 带安装程序的包。
源代码:程序员写好的初始代码,无法被计算机读取,需要被编译成二进制计算机语言,Linux中的C语言编译器为gcc。
3.RPM 包管理工具
RPM Package Manager
由Red Hat 公司提出,被众多Linux 发行版所采用
建立统一的数据库文件,详细记录软件包安装、卸载等变化信息,能够自动分析软件包依赖关系
RPM包含RPM数据库,RPM软件包文件和RPM命令三个部分
RPM软件包
软件素材参考:http://rpmfind.net / www.rpw.org
一般命名格式:软件名-软件版本-发布次数.操作系统类型.硬件架构类型.rpm
注意:执行“man rpm”命令可获得关于 rpm 命令的详细帮助信息
4.查询 RPM 软件包信息
1):查询已安装的rpm软件信息
语法:rpm -q[子选项] [软件名]
用法:结合不同的子选项完成不同查询
-qa:查看系统中已安装的所有RPM软件包列表
-qi:查看指定软件的详细信息(--info)
-ql:查询指定软件包所安装的目录、文件列表(--list)
-qc:仅显示指定软件包安装的配置文件
-qd:仅显示指定软件包安装的文档文件
-qf:查看指定文件或目录由那个软件包所安装(--file)
2):查询文件或目录属于哪个RPM 软件
语法:rpm - qf文件或目录名
3):查询未安装的RPM 包文件
语法:rpm - qp[子选项] RPM包文件
用法:结合不同的子选项完成不同查询
-qpi:通过.rpm包文件查看该软件的详细信息
-qpl:查看.rpm安装包内所包含的目录、文件列表
-qpc:查看.rpm安装包内包含的配置文件列表
-qpd:查看.rpm安装包内包含的文档文件列表
注意:使用r pm 命令只能查询通过 RPM方式安装的软件包信息用其他途径安装到系统中的软件包,rpm 命令将无法获取相关信息
3. 安装、升级、卸载 RPM 软件包
安装或升级RPM软件
语法:rpm [选项] RPM包文件...
用法:不同选项适用于不同情况
-i:安装一个新的rpm 软件包
-U:升级某个rpm 软件,若原本未装,则进行安装
-F:更新某个rpm 软件,若原本未装,则放弃安装
-h:以“#”号显示安装的进度
-v:显示安装过程中的详细信息
卸载指定的RPM软件
语法:rpm -e 软件名
--nodeps:删除软件包,即使有依赖关系的软件包任然安装在系统上
--test:不执行任何动作,只打印输出
5. 维护RPM数据库
linux中保留了当前安装软件的数据库,该数据库位于/var/lin/rpm/目录中。使用file /var/lib/rpm/*命令查看目录内容,可以看到都是二进制形式的散列数据库文件。
查看数字签名
6.解决软件包依赖关系
安装有依赖关系的多个软件时:被依赖的软件包需要先安装;可同时指定多个.rpm 包文件进行安装
卸载有依赖关系的多个软件时:依赖其他程序的软件包需要先卸载;可同时指定多个软件名进行卸载
忽略依赖关系:结合“--nodeps”选项,但可能导致软件异常
举个栗子:演示vim-common和vim-enhanced软件包的卸载、安装过程,参考步骤如下:
1)首先正常卸载vim-common,应提示被vim-enhanced所依赖而失败
2)因此正常卸载顺序:先卸载vim-enhanced,然后再卸载vim-common
3)然后从光盘中重新安装这两个软件包,首先安装vim-enhanced,应提示需要先安装vim-common
4)因此正常安装顺序:先安装vim-common,然后再安装vim-enhanced,演示时也可以在一条rpm命令中同时指定这两个文件
—— 提醒注意:如果需要同时安装相互依赖的数十个.rpm软件包,可以结合Shell通配符“*”同时指定这些文件作为参数
执行rpm命令可以完成对rpm软件包的查询. 安装. 升级. 卸载等管理操作。
扩展:RPM相关注意事项
RPM软件包的先决条件可以运用命令行选项—requires和—provides直接查看
安装vsftpd的先决条件:命令rpm -q -requires vsftpd
显示软件包显性提供内容:命令rpm -q -provides vsftpd
显示vsftpd的安装脚本:命令rpm -q --scripts vsftpd
按时间顺序显示系统上安装的RPM包:命令rpm -qa –last
解决RPM的些常见问题(访问数据库)
Killall-9 rpm 命令杀死所有当前挂起的rpm进程
将RPM数据库目录(/var/lib/rpm/)中所有以 _db. 开头的文件删除
7.源代码编译概述
1):优点
获得最新的软件版本,及时修复bug;根据用户需要,灵活定制软件功能
2):应用场合举例
安装较新版本的应用程序时;自由软件的最新版本大都以源码的形式最先发布
当前安装的程序无法满足需要时;编译安装可由用户自行修改、定制功能
需要为应用程序添加新的功能时;用户可以重新配置、自由修改源代码,加入新的功能
8.编译安装源代码包
Tarball封包:.tar.gz 和.tar.bz2 格式居多;软件素材参考:http://sourceforge.net
完整性校验
md5sum校验工具;计算MD5校验和,并与官方提供的值相比较,判断是否一致
[root@localhost ~]# md5sum axel-1.0a.tar.gz
2d94c0b36b374834567f1fcec5f89119 (MD5校验和) axel-1.0a.tar.gz
对于下载回来的软件包文件,如果MD5校验和与官方提供的不一致,则说明该软件包在网络传输过程中可能被非法改动过
对于校验和不一致的软件包,应尽量不要使用,以免带来病毒、木马等不安全因素
编译安装的基本过程
环境:需安装支持C/C++程序语言的编译器,如:gcc-4.4.7-4.el6、gcc-c++-4.4.7-4.el6 ;make-3.81-20.el6.……
过程:
步骤1. 解包:习惯上将软件包释放到/usr/src/ 目录;解包后的源代码文件位置: /usr/src/软件名-版本号/
步骤2. 配置:使用源码目录中的configure 脚本;执行“./configure --help” 可以查看帮助;典型的配置选项: --prefix=软件安装目录
在linux系统中通过源代码方式安装软件时,也可以将所有程序文件安装到同一个文件夹,如:(/configure—prefix=/usr/local/apache)中。
步骤3. 编译:执行make 命令
步骤4. 安装:执行make install 命令
在linux中编译源代码需要使用gcc. Make编译环境;从源代码安装应用程序的基本过程包括解包. 配置. 编译. 安装这四个步骤。
账号和权限管理
1.用户账号和组账号概述
用户帐号:
超级用户,即root用户:类似于Windows系统中的Administrator用户,非执行管理任务时不建议使用root用户登录系统
普通用户:帐号一般只在用户自己的宿主目录中有完全权限
程序用户:用于维持系统或某个程序的正常运行,一般不允许登录到系统。例如:bin、daemon、ftp、mail等
组帐号:
基本组(私有组):每一个账号至少属于一个组。
附加组(公共组):一个账号属于一个基本组后,再加入了另一个组。
UID和GID
UID(User IDentity,用户标识号)
GID(Group IDentify,组标识号)
注意:root用户的UID的固定值为0、root组帐号的GID号为固定值0 ;1~499的UID、GID默认保留给程序用户使用,普通用户/组使用的UID、GID号在500~60000之间
2.用户账号文件 /etc/passwd
保存用户名称、宿主目录、登录Shell等基本信息;每一行对应一个用户的帐号记录;所有用户都可以访问passwd文件中的内容,但只有root用户才能更改
Password文件配置七个字段的含义:账户名称;用户密码或密码占位符;用户账号的uid号;基本组账号的gid号;用户说明;宿主目录;登陆shell。
3.用户账号文件 /etc/shadow
保存用户的密码、账号有效期等信息;每一行对应一个用户的密码记录;文件的每一行内容包含九个用冒号“:”分隔的配置字段
shadow文件配置九个字段的含义:账户名称;md5值. 若为“*/!!” 表明此用户不能登陆,若为空则不需要密码;上次修改密码时间;密码最短有效天数,默认为0;密码最长有效天数,默认为99999;提前多少天警告用户口令即将过期,默认为7;密码过期多少天后禁用该账户;账号失效时间,默认为空,表示永久使用;保留字段。
1):useradd命令:添加用户账号
在rhel 6 中,使用useradd命令主要完成在/etc/passwd和/etc/shadow文件末尾添加该用户的账号记录;若未指定用户宿主目录,则在/home目录下创建与账号同名的宿主目录;若未指定用户所属的组,则自动创建与用户账号同名的基本组,保存在/etc/group. /etc/gshadow中。
语法:useradd [选项]... 用户名
常用命令选项
-u:指定UID 标记号
-d:指定宿主目录,缺省为/home/用户名
-e:指定帐号失效时间
-g:指定用户的基本组名(或UID号)
-G:指定用户的附加组名(或GID号)
-M:不为用户建立并初始化宿主目录
-s:指定用户的登录Shell
2):用户账号的初始配置文件
文件来源:新建用户帐号时,从/etc/skel目录中复制而来
主要的用户初始配置文件
~/.bash_profile:用户每次登录时执行
~/.bashrc:每次进入新的Bash环境时执行
~/.bash_logout:用户每次退出登录时执行
3):passwd命令:为用户账号设置密码
语法:passwd [选项]... 用户名
常用命令选项:-d:清空用户的密码,使之无需密码即可登录;-l:锁定用户帐号;-S:查看用户帐号的状态(是否被锁定);-u:解锁用户帐号
注意:通过password命令锁定的用户账号,将无法在登录系统(shadow文件中的对应密码字符串前将添加“!!”字符),只能由管理员来解除锁定。
4):usermod命令:修改用户账户属性
语法:usermod [选项]... 用户名
常用命令选项
-l:更改用户帐号的登录名称
-L:锁定用户账户
-U:解锁用户账户
以下选项与useradd命令中的含义相同(把指定改为修改即可): -u、-d、-e、-g、-G、-s
5):userdel命令:删除用户账号
语法:userdel [-r] 用户名
添加-r 选项时,表示连用户的宿主目录一并删除
4. 组账号文件
/etc/group:保存组帐号基本信息;/etc/gshadow:保存组帐号的密码信息
1):groupadd命令:添加组账号
语法:groupadd [-g GID] 组账号名
2):gpasswd命令:添加. 设置. 删除组成员
语法:gpasswd [选项]... 组帐号名
常用命令选项:-a:向组内添加一个用户;-d:从组内删除一个用户成员;-M:定义组成员列表,以逗号分隔
3):groupdel命令:删除组账号
语法:groupdel组帐号名 (删除组帐号后,从/etc/group文件中将查不到相应的记录)
5.查询账号信息
id命令:用途:查询用户身份标识;语法:id [用户名]
groups命令:用途:查询用户所属的组;语法:groups [用户名]
finger命令:用途:查询用户帐号的详细信息;语法:finger [用户名]
users、w、who命令:用途:查询已登录到主机的用户信息
6.文件/目录的权限和归属
访问权限
读取r:允许查看文件内容、显示目录列表
写入w:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录
可执行x:允许运行程序、切换目录
归属(所有权)
属主:拥有该文件或目录的用户帐号
属组:拥有该文件或目录的组帐号
7.设置目录和文件的权限chmod
语法1:chmod [ugoa] [+-=] [rwx] 文件或目录...(+、-、= 分别表示增加、去除、设置权限)(u、g、o、a 分别表示属主、属组、其他用户、所有用户(ugo的总和))(r,w,x权限字符可分别表示为8进制字符4,2,1,表示一个权限组合时需要将数字进行累加;如rwx=7,rw-r-r=644)
语法22:chmod nnn 文件或目录...(3位八进制数)
常用命令选项:-R:递归修改指定目录下所有子项的权限
8.设置目录和文件的归属chown
语法:chown 属主 文件或目录
Chown :属组 文件或目录
Chown 属主:属组 文件或目录
常用命令选项:-R:递归修改指定目录下所有文件、子目录的归属