当前位置:  操作系统/服务器>linux
本页文章导读:
    ▪RHCE学习笔记-RHEL5.4权限委派      本文介绍linux下有关权限委派的相关内容,供大家学习参考。 权限委派介绍 在linux系统中,管理员的权限非常的大,但是普通用户并没有什么权限,所以很有必要将权限分发给不同的普通用.........
    ▪RHCE学习笔记-RHEL5.4软件包的管理      本文介绍linux下如何管理软件包的相关内容,供大家学习参考。 在linux系统中管理软件包有两种方法,第一种就是利用yum的方式来管理软件包。第二种就是利用rpm的方法来管理软件包。Yum与rpm.........
    ▪RHCE学习笔记-RHEL5.4文件系统管理(1)          本文介绍linux下如何进行文件系统的管理,供大家学习参考。     这是第一部分内容,第二部分内容在这里:http://www./LINUXjishu/2760.html。     硬盘的零磁道的第一个扇区叫做MBR(512B).........

[1]RHCE学习笔记-RHEL5.4权限委派
    来源: 互联网  发布时间: 2013-12-24

本文介绍linux下有关权限委派的相关内容,供大家学习参考。

权限委派介绍
在linux系统中,管理员的权限非常的大,但是普通用户并没有什么权限,所以很有必要将权限分发给不同的普通用户,而且在linux下,权限的委派功能非常的强大,它可以基于命令集的权限委派。

所有的权限委派都在/etc/sudoers这个文件中定义。
/etc/sudoers这个文件也默认定义了很多权限委派。
我们可以参考这个文件来进行权限的委派
## User Aliases
## These aren't often necessary, as you can use regular groups
## (ie, from files, LDAP, NIS, etc) in this file - just use %groupname
## rather than USERALIAS
# User_Alias ADMINS = jsmith, mikem
这个是用户的别名,可以参考这模板来定义用户。
User_Alias ADMINS  =  user3,user4

在这里我们就定义了ADMINS等于user3 user4 这个两个普通用户。

下面我们就定义命令的别名

代码如下:
## Command Aliases
## These are groups of related commands...

## Networking
Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net,
/sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool

## Installation and management of software
Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum

## Services
Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig

## Updating the locate database
Cmnd_Alias LOCATE = /usr/bin/updatedb

## Storage
Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe,
/bin/mount, /bin/umount

## Delegating permissions
Cmnd_Alias DELEGATING = /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp

## Processes
Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall

## Drivers
Cmnd_Alias DRIVERS = /sbin/modprobe
这个就是系统中命令的别名,可以参考这个来定义命令的别名。

## USERS
Cmnd_Alias USERS = /usr/sbin/useradd, /usr/sbin/userdel, /usr/sbin/usermod

在这里我们就定义了命令的别名。
下面就开始引用。

代码如下:
##      user    MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere
root     ALL=(ALL)       ALL
ADMINS   ALL=(ALL)       USERS

在系统中,默认就有了root可以做任何事情,其实就是在这里定义的。
下面就是我们自己定义引用的,代表在ADMINS里面定义的用户可以做在USERS里面定义的命令。

下面我们来测试一下。
默认情况下,我们的普通用户是不可以添加用户的。

代码如下:
[root@localhost ~]#
[root@localhost ~]# su - user3
[user3@localhost ~]$
[user3@localhost ~]$ /usr/sbin/useradd user8
-bash: /usr/sbin/useradd: Permission denied
[user3@localhost ~]$

现在我们还是不可以添加用户,因为在user3的环境变量里什么没有这个命令的。我们必须用sudo的方式来执行命令,这个也就是sudo用法。
[user3@localhost ~]$
[user3@localhost ~]$ sudo /usr/sbin/useradd user8
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
  #1) Respect the privacy of others.
  #2) Think before you type.
  #3) With great power comes great responsibility.

Password:
[user3@localhost ~]$
[user3@localhost ~]$ id user8
uid=504(user8) gid=504(user8) groups=504(user8)
[user3@localhost ~]$
可以看到,这里它要我们输入一个密码,这个密码是自己的密码。
也是系统出于安全的考虑。
这样user8就添加成功了。
注意,在使用普通用户通过权限委派去执行命令的时候,一定要使用sudo去执行,还有执行的命令一定要是命令的绝对路径。

至此,有关linux下权限委派的基本配置就介绍完了,希望对大家有所帮助。


    
[2]RHCE学习笔记-RHEL5.4软件包的管理
    来源: 互联网  发布时间: 2013-12-24

本文介绍linux下如何管理软件包的相关内容,供大家学习参考。

在linux系统中管理软件包有两种方法,第一种就是利用yum的方式来管理软件包。第二种就是利用rpm的方法来管理软件包。Yum与rpm的区别在于rpm在安装软件包的时候解决不了软件包依赖性关系,而yum在安装软件包的时候很好的解决了软件包的依赖性关系,很强大。

首先,我们来学习利用yum来管理软件包。

Yum全称为 Yellow dog Updater, Modified(软件包管理器)

主要功能是更方便的添加/删除/更新RPM包, yum很好的解决了linux下面安装软件包的依赖性关系。很强大哦! 他能便于管理大量系统的更新问题  ,能同时设置多个资源库(Repository),而且使用起来十分的方便。

如果想使用yum的方式来安装软件包,那么必须配置yum仓库。

关于yum仓库的配置方法可以参考:http://www./LINUXjishu/2765.html

1.利用yum的方式来安装软件包
#yum  -y  install   vsftpd
-y   不用交互式
Install  安装
Vsftpd  需要安装软件包(这个是软件包,而不是软件包的rpm文件名)
[root@localhost ~]#
[root@localhost ~]# yum -y install vsftpd
Loaded plugins: rhnplugin, security
This system is not registered with RHN.
RHN support will be disabled.
Cluster                                                  | 1.3 kB     00:00   
Cluster/primary                                          | 6.5 kB     00:00   
Cluster                                                                   32/32
ClusterStorage                                           | 1.3 kB     00:00   
ClusterStorage/primary                              | 8.8 kB     00:00   
ClusterStorage                                                            39/39
Server                                                 | 1.3 kB     00:00   
Server/primary                                          | 732 kB     00:00   
Server                                                                2292/2292
VT                                                      | 1.3 kB     00:00   
VT/primary                                               | 9.0 kB     00:00   
VT                                                    36/36
Setting up Install Process
Resolving Dependencies

--> Running transaction check
---> Package vsftpd.i386 0:2.0.5-16.el5 set to be updated
Cluster/filelists                                          | 110 kB     00:00   
ClusterStorage/filelists                              |  11 kB     00:00   
Server/filelists                                          | 2.3 MB     00:00   
VT/filelists                                               |  26 kB     00:00   
--> Finished Dependency Resolution
 
Dependencies Resolved
================================================================================

 Package          Arch           Version                 Repository        Size

================================================================================

Installing:
 vsftpd           i386           2.0.5-16.el5            Server           140 k

Transaction Summary

================================================================================
Install           1 Package(s)       
Update        0 Package(s)       
Remove       0 Package(s)       
 
Total download size: 140 k
Downloading Packages:
vsftpd-2.0.5-16.el5.i386.rpm                             | 140 kB     00:00   
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : vsftpd                   1/1

Installed:
  vsftpd.i386 0:2.0.5-16.el5                                                  

Complete!

[root@localhost ~]#
这样我们就利用yum的方式安装成功了ftp服务。

2.利用yum的方式来安装本地软件包
# yum -y install dovecot-1.0.7-7.el5.i386.rpm
[root@localhost ~]#
[root@localhost ~]# ls
anaconda-ks.cfg  dovecot-1.0.7-7.el5.i386.rpm  install.log         server.repo
Desktop          grub.conf                     install.log.syslog
[root@localhost ~]# yum -y install dovecot-1.0.7-7.el5.i386.rpm
Loaded plugins: rhnplugin, security
This system is not registered with RHN.
RHN support will be disabled.
Setting up Install Process
Examining dovecot-1.0.7-7.el5.i386.rpm: dovecot-1.0.7-7.el5.i386
Marking dovecot-1.0.7-7.el5.i386.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package dovecot.i386 0:1.0.7-7.el5 set to be updated
--> Processing Dependency: libmysqlclient.so.15 for package: dovecot
--> Processing Dependency: libmysqlclient.so.15(libmysqlclient_15) for package: dovecot
--> Processing Dependency: libpq.so.4 for package: dovecot
--> Running transaction check
---> Package mysql.i386 0:5.0.77-3.el5 set to be updated
--> Processing Dependency: perl(DBI) for package: mysql
---> Package postgresql-libs.i386 0:8.1.11-1.el5_1.1 set to be updated
--> Running transaction check
---> Package perl-DBI.i386 0:1.52-2.el5 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================

 Package           Arch   Version             Repository                   Size

================================================================================
Installing:
 dovecot                i386   1.0.7-7.el5         /dovecot-1.0.7-7.el5.i386   3.6 M

Installing for dependencies:
 mysql                    i386    5.0.77-3.el5         Server         4.8 M
 perl-DBI               i386    1.52-2.el5            Server          605 k
 postgresql-libs       i386   8.1.11-1.el5_1.1   Server               196 k

Transaction Summary
================================================================================
Install            4 Package(s)       
Update         0 Package(s)       
Remove        0 Package(s)       
 
Total size: 9.1 M
Total download size: 5.5 M
Downloading Packages:
(1/3): mysql-5.0.77-3.el5.i386.rpm                           | 4.8 MB     00:00   
(2/3): postgresql-libs-8.1.11-1.el5_1.1.i386.rpm             | 196 kB     00:00   
(3/3): perl-DBI-1.52-2.el5.i386.rpm                          | 605 kB     00:00   
--------------------------------------------------------------------------------
Total                                                        7.3 MB/s | 5.5 MB     00:00   
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : perl-DBI           1/4
  Installing     : mysql              2/4
  Installing     : postgresql-libs    3/4
  Installing     : dovecot            4/4
 
Installed:
  dovecot.i386 0:1.0.7-7.el5                                                   
 
Dependency Installed:
  mysql.i386 0:5.0.77-3.el5                perl-DBI.i386 0:1.52-2.el5    
  postgresql-libs.i386 0:8.1.11-1.el5_1.1    

Complete!
[root@localhost ~]#

安装本地软件包的意义在于如果我们从互联网上面下载了一个rpm软件包,这个软件包用rpm方式安装可能会提示有依赖性关系,这个时候可以使用本地安装的方式来安装,因为我们的yum仓库有可能会解决这个包的依赖性关系。

但是这个后面接的是一个软件包rpm文件名,而不是软件包。

3.利用yum使用组的方式来安装软件包
我们如何去查询那些组是可以安装的呢,
使用下面这条命令
#yum  grouplist
[root@localhost ~]#
[root@localhost ~]# yum grouplist
Loaded plugins: rhnplugin, security
This system is not registered with RHN.
RHN support will be disabled.
Setting up Group Process
Cluster/group                                            | 101 kB     00:00   
ClusterStorage/group                                     | 105 kB     00:00   
Server/group                                             | 1.0 MB     00:00   
VT/group                                                 | 103 kB     00:00   
Installed Groups:
   Administration Tools
   Editors
   FTP Server
   GNOME Desktop Environment
   Graphical Internet
   Graphics
   Legacy Network Server
   Mail Server
   MySQL Database
   Network Servers
   Office/Productivity
   Printing Support
   Server Configuration Tools
   Sound and Video
   System Tools
   Text-based Internet
   X Window System
Available Groups:
   Authoring and Publishing
   Cluster Storage
   Clustering
   DNS Name Server
   Development Libraries
   Development Tools
   Engineering and Scientific
   GNOME Software Development
   Games and Entertainment
   Java Development
   KDE (K Desktop Environment)
   KDE Software Development
   Legacy Software Development
   Legacy Software Support
   News Server
   OpenFabrics Enterprise Distribution
   PostgreSQL Database
   Virtualization
   Web Server
   Windows File Server
   X Software Development
Done
[root@localhost ~]#
在这个命令里面显示的软件包都是可以使用组的方式来安装的。

下面我们利用组的方式来安装。
# yum -y groupinstall "DNS Name Server"
[root@localhost ~]#
[root@localhost ~]# yum -y groupinstall "DNS Name Server"
Loaded plugins: rhnplugin, security
This system is not registered with RHN.
RHN support will be disabled.
Setting up Group Process
Resolving Dependencies
--> Running transaction check
---> Package bind.i386 30:9.3.6-4.P1.el5 set to be updated
---> Package bind-chroot.i386 30:9.3.6-4.P1.el5 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================

 Package            Arch        Version                     Repository     Size

================================================================================
Installing:
 bind              i386        30:9.3.6-4.P1.el5           Server        978 k
 bind-chroot        i386        30:9.3.6-4.P1.el5           Server        44 k

Transaction Summary

================================================================================
Install           2 Package(s)       
Update        0 Package(s)       
Remove       0 Package(s)       

Total download size: 1.0 M
Downloading Packages:
(1/2): bind-9.3.6-4.P1.el5.i386.rpm                          | 978 kB     00:00    
(2/2): bind-chroot-9.3.6-4.P1.el5.i386.rpm               |  44 kB      00:00   
--------------------------------------------------------------------------------
Total                                                         2.9 MB/s | 1.0 MB     00:00   
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : bind                       1/2
  Installing     : bind-chroot                2/2
 
Installed:
  bind.i386 30:9.3.6-4.P1.el5         bind-chroot.i386 30:9.3.6-4.P1.el5      

Complete!
[root@localhost ~]#

我们知道安装DNS服务需要安装三个包,而我们利用组的方式来安装软件包,系统会自动的安装所有DNS服务需要的软件包,很方便。

4.利用yum的方式来卸载软件包
#yum  -y  remove  vsftpd
[root@localhost ~]#
[root@localhost ~]# yum -y remove vsftpd
Loaded plugins: rhnplugin, security
This system is not registered with RHN.
RHN support will be disabled.
Setting up Remove Process
Resolving Dependencies
--> Running transaction check
---> Package vsftpd.i386 0:2.0.5-16.el5 set to be erased
--> Finished Dependency Resolution
 
Dependencies Resolved

================================================================================

 Package         Arch       Version        Repository      Size

================================================================================
Removing:
 vsftpd            i386       2.0.5-16.el5     installed      285 k
 
Transaction Summary
================================================================================
Install           0 Package(s)       
Update        0 Package(s)       
Remove       1 Package(s)       

Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Erasing        : vsftpd      1/1
 
Removed:
  vsftpd.i386 0:2.0.5-16.el5                                                  

Complete!
[root@localhost ~]#
卸载的时候也是接软件包,而不是软件包的rpm文件名。

5.利用yum的方式来更新软件包
#yum  update
[root@localhost ~]#
[root@localhost ~]# yum update
Loaded plugins: rhnplugin, security
This system is not registered with RHN.
RHN support will be disabled.
Skipping security plugin, no data
Setting up Update Process
No Packages marked for Update
[root@localhost ~]#

这个是更新全部的软件包
#yum  update  vsftpd
[root@localhost ~]#
[root@localhost ~]# yum update vsftpd
Loaded plugins: rhnplugin, security
This system is not registered with RHN.
RHN support will be disabled.
Skipping security plugin, no data
Setting up Update Process
No Packages marked for Update
[root@localhost ~]#
这个更新指定的软件包(也是接软件包)
#yum  check-update
[root@localhost ~]#
[root@localhost ~]# yum check-update
Loaded plugins: rhnplugin, security
This system is not registered with RHN.
RHN support will be disabled.
Skipping security plugin, no data
[root@localhost ~]#
这个检查可更新的软件包。

6.利用yum来查询软件包
#yum  search  vsftpd
[root@localhost ~]#
[root@localhost ~]# yum search vsftpd
Loaded plugins: rhnplugin, security
This system is not registered with RHN.
RHN support will be disabled.
=============================== Matched: vsftpd ================================
vsftpd.i386 : vsftpd - Very Secure Ftp Daemon
[root@localhost ~]#
这个是查询指定的软件包

#yum  list  all
列出系统中所有的软件,包括安装的和未安装的。

#yum  list  all  | grep vsftpd
[root@localhost ~]#
[root@localhost ~]# yum list all |grep vsftpd
This system is not registered with RHN.
RHN support will be disabled.
vsftpd.i386                             2.0.5-16.el5              installed   
[root@localhost ~]#
通过查询,可以看到,vsftpd已经安装了。这个命令也很好用。

#yum list available
查询系统中没有安装的软件包

#yum list installed
查询系统中安装的软件包
#yum info vsftpd
[root@localhost ~]#
[root@localhost ~]# yum info vsftpd
Loaded plugins: rhnplugin, security
This system is not registered with RHN.
RHN support will be disabled.
Installed Packages
Name          : vsftpd
Arch            : i386
Version        : 2.0.5
Release       : 16.el5
Size             : 285 k
Repo          : installed
Summary    : vsftpd - Very Secure Ftp Daemon
URL           : http://vsftpd.beasts.org/
License       : GPL
Description: vsftpd is a Very Secure FTP daemon. It was written completely from
                 : scratch.
[root@localhost ~]#

查询软件包的详细信息。
#yum whatprovides /etc/inittab
[root@localhost ~]#
[root@localhost ~]# yum whatprovides /etc/inittab
Loaded plugins: rhnplugin, security
This system is not registered with RHN.
RHN support will be disabled.
initscripts-8.45.30-2.el5.i386 : The inittab file and the /etc/init.d scripts.
Repo        : Server
Matched from:
Filename    : /etc/inittab
initscripts-8.45.30-2.el5.i386 : The inittab file and the /etc/init.d scripts.
Repo        : installed
Matched from:
Other       : Provides-match: /etc/inittab
[root@localhost ~]#
这个是查询某个文件是属于那个包的。
#yum clean all
清除缓存信息
Yum的使用方法到这里就基本完成了。
 
下面首先讲解利用rpm来管理软件包。

Rpm介绍
Rpm的全称为RedHat package manager(红帽软件包管理器),虽然rpm的方式并不可以解决软件包的依赖性关系,但是rpm的查询方式也是非常的强大的。

1.利用rpm的方式来安装软件包
#rpm -ivh vsftpd-2.0.5-16.el5.i386.rpm
[root@localhost ~]#
[root@localhost ~]# ls | grep vsftpd-2.0.5-16.el5.i386.rpm
vsftpd-2.0.5-16.el5.i386.rpm
[root@localhost ~]# rpm -ivh vsftpd-2.0.5-16.el5.i386.rpm
Preparing...  ########################################### [100%]
1:vsftpd       ########################################### [100%]
[root@localhost ~]#
-v  h    输出选项
利用rpm安装软件包一定是接软件包的rpm文件名。
# rpm -Fvh vsftpd-2.0.5-16.el5.i386.rpm
# rpm -Uvh vsftpd-2.0.5-16.el5.i386.rpm
这两条命令的区别在于
-Fvh    原来安装了软件包就更新,没有安装就不管。只更新。
-Uvh   原来安装了软件包就更新,没有安装就自动安装。

2.利用rpm的方法来卸载软件包
#rpm  -evh  vsftpd
[root@localhost ~]#
[root@localhost ~]# rpm -e vsftpd
[root@localhost ~]#
用rpm卸载软件包的时候要注意后面只可以接软件包。

3.利用rpm重新安装软件包
# rpm -ivh vsftpd-2.0.5-16.el5.i386.rpm -- replacepkgs
[root@localhost ~]#
[root@localhost ~]# rpm -ivh vsftpd-2.0.5-16.el5.i386.rpm --replacepkgs
Preparing...  ########################################### [100%]
1:vsftpd       ########################################### [100%]
[root@localhost ~]#
# rpm -ivh vsftpd-2.0.5-16.el5.i386.rpm -- force
这两条命令的作用都是一样的,都是重新安装软件包,它们的区别在于—replacepkgs在系统正常运行的时候可以使用这个,但是在修复模式下面只可以使用—force。

在利用rpm安装软件包的时候,可以使用url的方式来安装软件包。
#rpm –ivh ftp://192.168.0.254/pub/Server/vsftpd-2.0.5-16.el5.i386.rpm

4.利用rpm来查询软件包
#rpm  -qa

查询系统中所有已经安装的软件包
#rpm  -qa  | grep  vsftpd
[root@localhost ~]#
[root@localhost ~]# rpm -qa | grep vsftpd
vsftpd-2.0.5-16.el5
[root@localhost ~]#

查询vsftpd这个软件包有没有安装
#rpm  -q  vsftpd

查询vsftpd这个软件包有没有安装,和上面一样。
#rpm  -qf  /etc/inittab
[root@localhost ~]#
[root@localhost ~]# rpm -qf /etc/inittab
initscripts-8.45.30-2.el5
[root@localhost ~]#

查询文件是属于那个软件包的。
# rpm –qpi  dovecot-1.0.7-7.el5.i386.rpm
[root@localhost ~]#
[root@localhost ~]# rpm -qpi dovecot-1.0.7-7.el5.i386.rpm
Name        : dovecot                       Relocations: (not relocatable)
Version     : 1.0.7                            Vendor: Red Hat, Inc.
Release     : 7.el5                            Build Date: Tue 25 Nov 2008 12:47:16 AM CST
Install Date: (not installed)               Build Host: hs20-bc1-2.build.redhat.com
Group       : System Environment/Daemons    Source RPM: dovecot-1.0.7-7.el5.src.rpm
Size           : 3730313                     License: LGPL
Signature   : DSA/SHA1, Wed 10 Dec 2008 08:42:34 PM CST, Key ID 5326810137017186
Packager   : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
URL         : http://www.dovecot.org/
Summary  : Dovecot Secure imap server
Description :
Dovecot is an IMAP server for Linux/UNIX-like systems, written with security
primarily in mind.  It also contains a small POP3 server.  It supports mail
in either of maildir or mbox formats.
[root@localhost ~]#
查询一个没有安装软件包的信息。

#rpm  -ql  vsftpd
查询vsftpd这个服务产生了那些文件。

#rpm -ivh --nodeps dovecot-1.0.7-7.el5.i386.rpm
去掉软件包的依赖性关系,但是前提是你已经知道了去掉依赖性关系后的软件包,你的服务也没有问题。

5.rpm的校验
#rpm  -V  vsftpd
校验rpm软件包是否有问题。

#rpm  -Vp vsftpd-2.0.5-16.el5.i386.rpm
和上面一样,也是校验rpm软件包是否有问题。

#rpm  -Va
校验所有的rpm软件包。

# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
利用rpm第一次安装软件包的时候必须导入这个gpg-key。

6.利用rpm来升级内核
# rpm -ivh kernel-PAE-2.6.18-164.el5.i686.rpm
[root@localhost ~]#
[root@localhost ~]# ls | grep kernel
kernel-PAE-2.6.18-164.el5.i686.rpm

[root@localhost ~]# rpm -ivh kernel-PAE-2.6.18-164.el5.i686.rpm
Preparing...      ########################################## [100%]
1:kernel-PAE ########################################### [100%]
[root@localhost ~]#
这样我们的内核就安装成功了。
安装成功内核以后,我们可以去/boot/grub/grub.conf文件中定义从新内核启动。
 
到些,linux下软件包管理的有关内容就介绍完了,希望对大家有所帮助。


    
[3]RHCE学习笔记-RHEL5.4文件系统管理(1)
    来源: 互联网  发布时间: 2013-12-24

    本文介绍linux下如何进行文件系统的管理,供大家学习参考。
    这是第一部分内容,第二部分内容在这里:http://www./LINUXjishu/2760.html。

    硬盘的零磁道的第一个扇区叫做MBR(512B),分区表就存放在MBR里面,由于的分区表只有64B,一个分区占用16B,所以在系统中只可以分四个主分区,而逻辑驱动器的分区表存放在每个分区的第一个扇区(super block)里面,所以一块硬盘上要想分超过四个分区,就必须分三个主分区和一个扩展分区,然后在扩展分区里面分逻辑驱动器

    在linux系统下面,系统并不识别分区有多少,而是通过分区的起始柱面数,分区的结束柱面数来识别一个分区的大小。
    一个柱面数大概为7.8M,
    一个扇区为512B。

在linux内核支持的最大分区数量
IDE      63
SCSI    15
如果想要分更多的分区,就必须用逻辑驱动器。

在linux下面如何管理分区呢?
可以使用fdisk  -l 这条命令来查看分区的信息

代码如下:
[root@localhost ~]# fdisk -l
Disk /dev/sda: 16.1 GB, 16106127360 bytes
255 heads, 63 sectors/track, 1958 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
   Device Boot      Start         End      Blocks     Id     System
/dev/sda1   *           1           13        104391     83    Linux
/dev/sda2               14          535      4192965   83    Linux
/dev/sda3               536       1057     4192965   83    Linux
/dev/sda4              1058      1958     7237282+  5     Extended
/dev/sda5              1058      1188     1052226   82    Linux swap / Solaris
/dev/sda6              1189      1253     522081     83    Linux
[root@localhost ~]#

通过fdisk  -l这条命令显示的信息,磁盘的总大小为16.1G,每个分区的起始柱面数和结局柱面数。每个分区的id号是多少,system的类型。
看到/dev/sda1后”*”代表该分区时引导分区,blocks后面多了一个“+”,是代表给分区跨越了两个柱面。

如何进行磁盘分区

可以使用fdisk工具来进行磁盘分区

代码如下:
#Fdisk  /dev/sda
[root@localhost ~]# fdisk /dev/sda
The number of cylinders for this disk is set to 1958.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)
Command (m for help):

进入了这个界面,就代表进入了fdisk的管理模式
在这个时候,可以按“m”来获得帮助

可Command (m for help): m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

Command (m for help):以安装上面的提示来进行磁盘分区,
按“l”可以列出以知的文件类型,
按“n”来添加分区,
按“d”来删除分区,
按“t”来改变分区的类型,
按“q”退出,
按“w”保存。
等等,还有很多。

下面就来添加一块新的分区
Command (m for help): n
First cylinder (1254-1958, default 1254):
Using default value 1254
Last cylinder or +size or +sizeM or +sizeK (1254-1958, default 1958): +500M
按“n”来添加,下面问从哪个柱面数开始,直接回车,选默认的。最后问这个分区分多大,我们分了500M
还可以做很多事情,还可以按“t”来改变分区的类型,
这个时候按“p”来查看刚刚的操作,
Command (m for help): p
Disk /dev/sda: 16.1 GB, 16106127360 bytes
255 heads, 63 sectors/track, 1958 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
   Device Boot      Start         End      Blocks     Id     System
/dev/sda1   *        1               13       104391     83     Linux
/dev/sda2             14            535      4192965   83     Linux
/dev/sda3             536         1057     4192965   83     Linux
/dev/sda4            1058        1958     7237282+  5     Extended
/dev/sda5            1058        1188     1052226   82     Linux swap / Solaris
/dev/sda6            1189        1253      522081    83     Linux
/dev/sda7            1254        1315      497983+  83     Linux

Command (m for help):
可以看到已经分了一个/dev/sda7这个新的分区。
Command (m for help): wq
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
[root@localhost ~]#
这个时候,已经保存并退出了,但是它给了一个警告:说设备忙,必须要下次重启才行。可以执行一条命令来更新分区(很重要的一条命令)
[root@localhost ~]# partprobe /dev/sda
[root@localhost ~]#
到目前为止,分区已经完成了,但分区并不能够正常使用,所以还要格式化分区。

格式化分区

代码如下:

#mkfs.ext3  /dev/sda7
[root@localhost ~]# mkfs.ext3 /dev/sda7
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
124928 inodes, 497980 blocks
24899 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67633152
61 block groups
8192 blocks per group, 8192 fragments per group
2048 inodes per group
Superblock backups stored on blocks:
        8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409
 
Writing inode tables: done                          
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 36 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@localhost ~]#
 

还可以在格式化的时候指定分区的block size 的大小
[root@localhost ~]# mkfs.ext3 -b 4096 /dev/sda7
这个时候这个分区就可以使用了,但是必须挂载。

挂载分区

代码如下:
#Mount  /dev/sda7  /mnt
[root@localhost ~]#
[root@localhost ~]# mount /dev/sda7 /mnt/
[root@localhost ~]#
[root@localhost ~]# df -h
Filesystem            Size     Used      Avail      Use%   Mounted on
/dev/sda3              3.9G     2.5G    1.3G       68%       /
/dev/sda6              494M   11M    458M      3%        /home
/dev/sda2              3.9G     1.8G    2.0G       47%      /var
/dev/sda1              99M     14M    81M       15%       /boot
tmpfs                    188M     0        188M     0%        /dev/shm
/dev/sda7              471M   11M    437M     3%        /mnt
[root@localhost ~]# cd /mnt/
[root@localhost mnt]# ls
lost+found

文件系统的卷标

卷标是另外一个识别设备的方法
可以使用命令来查看分区的卷标

代码如下:
#e2label  /deb/sda7
[root@localhost ~]# e2label /dev/sda7
[root@localhost ~]#

下面来给/dev/sda7添加一个卷标

代码如下:
[root@localhost ~]# e2label /dev/sda7 /disk
[root@localhost ~]# e2label /dev/sda7
/disk
[root@localhost ~]#

当然,也可以使用卷标的方法挂载分区

代码如下:
[root@localhost ~]# umount /dev/sda7
[root@localhost ~]# mount LABEL=/disk /mnt/
[root@localhost ~]# df
Filesystem           1K-blocks      Used      Available     Use%     Mounted on
/dev/sda3              4061572   2589456   1262468      68%         /
/dev/sda6              505604     10545       468955        3%          /home
/dev/sda2              4061572   1799208   2052716      47%        /var
/dev/sda1              101086     13588       82279          15%        /boot
tmpfs                    192132         0           192132         0%         /dev/shm
/dev/sda7              482214     10544       446771        3%          /mnt
[root@localhost ~]# cd /mnt/
[root@localhost mnt]# ls
lost+found
[root@localhost mnt]#

还可以使用mount命令不加任何参数来查询系统中所有的设备,

代码如下:
#mount
[root@localhost ~]# mount
/dev/sda3 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda6 on /home type ext3 (rw)
/dev/sda2 on /var type ext3 (rw)
/dev/sda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
none on /proc/fs/vmblock/mountPoint type vmblock (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
nfsd on /proc/fs/nfsd type nfsd (rw)
/dev/sda7 on /mnt type ext3 (rw)
[root@localhost ~]#

但是,mount命令只能够查询到系统中挂载的分区,没有挂载的分区查询不到
还可以用blkid来查询系统中所有的分区,没有挂载的分区也可以查到。
还有一条命令,也就是用来查询的。

代码如下:
#blkid
[root@localhost ~]# blkid
/dev/sda6: LABEL="/home" UUID="7f75811c-8844-4d6d-a065-f4a1d75602dc" TYPE="ext3"
/dev/sda5: LABEL="SWAP-sda5" TYPE="swap"
/dev/sda3: LABEL="/" UUID="7c54f96f-7d2b-4da9-a4bf-3b474e0e460d" TYPE="ext3"
/dev/sda1: LABEL="/boot" UUID="6663d1de-50d9-4cdf-a4f5-085cab5fa789" TYPE="ext3"
/dev/sda2: LABEL="/var" UUID="b5306518-306a-4fcb-bdd5-dd4063bca9fe" TYPE="ext3"
/dev/hdc: LABEL="RHEL/5.4 i386 DVD" TYPE="iso9660"
/dev/sda7: LABEL="/disk" UUID="3d68e924-8974-420d-81a9-aec7b9e95079" TYPE="ext3"
[root@localhost ~]#

一个tune2fs这个工具(很强大)

Tun2fs这个工具主要是用来查询文件系统的参数
可以使用tun2fs  –l  /dev/sda7来查询/dev/sda7这个分区的详细信息

代码如下:
#tune2fs  -l  /dev/sda7
[root@localhost ~]# tune2fs  -l  /dev/sda7
tune2fs 1.39 (29-May-2006)
Filesystem volume name:   /disk
Last mounted on:              <not available>
Filesystem UUID:             3d68e924-8974-420d-81a9-aec7b9e95079
Filesystem magic number:  0xEF53
Filesystem revision #:        1 (dynamic)
Filesystem features:           has_journal resize_inode dir_index filetype needs_recovery sparse_super
Default mount options:      (none)
Filesystem state:               clean
Errors behavior:               Continue
Filesystem OS type:         Linux
Inode count:                    124928
Block count:                    497980
Reserved block count:     24899
Free blocks:                    471670
Free inodes:                    124917
First block:                       1
Block size:                      1024
Fragment size:                 1024
Reserved GDT blocks:     256
Blocks per group:            8192
Fragments per group:       8192
Inodes per group:            2048
Inode blocks per group:   256
Filesystem created:         Fri Feb 19 21:30:36 2010
Last mount time:             Fri Feb 19 23:01:52 2010
Last write time:               Fri Feb 19 23:01:52 2010
Mount count:                   4
Maximum mount count:   36
Last checked:                Fri Feb 19 21:30:36 2010
Check interval:              15552000 (6 months)
Next check after:           Wed Aug 18 21:30:36 2010
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:                     11
Inode size:                      128
Journal inode:                  8
Default directory hash:     tea
Directory Hash Seed:      d49cd094-7bac-466f-bce7-f36e70b277b0
Journal backup:               inode blocks
[root@localhost ~]#

在这个里面,可以看到很多信息,可以看到工具的版本1.39版本,可以看到文件系统的卷标,最后一次挂载在哪里,文件系统的UUID是多少,还可以看到文件系统的状态,文件系统的类型,还有Inode count 和block count。

还有空余的inode 和空闲的block .还可以看到block size。还可以看到文件系统是什么时候创建的,最后一次挂载在哪里等等很多信息。

下面学习如何用tune2fs这个工具来将ext2文件系统来转成ext3的文件系统
这个过程是在线,是不会丢失数据的,但是不能够从ext3装成ext2.的文件系统这样会丢失数据的。

代码如下:
[root@localhost ~]# mount | grep /dev/sda7
/dev/sda7 on /mnt type ext2 (rw)
[root@localhost ~]#

可以看到,现在/dev/sda7是ext2的文件系统类型。
将/boot下面的数据复制到/mnt,方便等下实验

代码如下:
[root@localhost ~]# cp /boot/* /mnt/
cp: omitting directory `/boot/grub'
cp: omitting directory `/boot/lost+found'
[root@localhost ~]# cd /mnt/
[root@localhost mnt]# ls
config-2.6.18-164.el5      initrd-2.6.18-164.el5kdump.img  System.map-2.6.18-164.el5
initrd-2.6.18-164.el5.img  symvers-2.6.18-164.el5.gz       vmlinuz-2.6.18-164.el5
[root@localhost mnt]#

我们已经添加了一些文件到/dev/sda7里面,现在就开始将ext2的文件系统转换成ext3的文件系统。

转换命令:

代码如下:
#tune2fs  -j  /dev/sda7
[root@localhost ~]# tune2fs  -j  /dev/sda7
tune2fs 1.39 (29-May-2006)
Creating journal inode: done
This filesystem will be automatically checked every 38 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override
 

在使用blkid这个命令来查看一下转换是否成功,

代码如下:
[root@localhost ~]# blkid
/dev/sda6: LABEL="/home" UUID="7f75811c-8844-4d6d-a065-f4a1d75602dc" TYPE="ext3"
/dev/sda5: LABEL="SWAP-sda5" TYPE="swap"
/dev/sda3: LABEL="/" UUID="7c54f96f-7d2b-4da9-a4bf-3b474e0e460d" TYPE="ext3"
/dev/sda1: LABEL="/boot" UUID="6663d1de-50d9-4cdf-a4f5-085cab5fa789" TYPE="ext3"
/dev/sda2: LABEL="/var" UUID="b5306518-306a-4fcb-bdd5-dd4063bca9fe" TYPE="ext3"
/dev/hdc: LABEL="RHEL/5.4 i386 DVD" TYPE="iso9660"
/dev/sda7: UUID="2254c9c7-6d9f-41ea-9c40-ddef8ab15959" SEC_TYPE="ext2" TYPE="ext3"
[root@localhost ~]#

可以看到/dev/sda7原来是ext2,后来变成了ext3的文件系统

代码如下:
[root@localhost ~]# cd /mnt/
[root@localhost mnt]# ls
config-2.6.18-164.el5      initrd-2.6.18-164.el5kdump.img  System.map-2.6.18-164.el5
initrd-2.6.18-164.el5.img  symvers-2.6.18-164.el5.gz       vmlinuz-2.6.18-164.el5
[root@localhost mnt]#

看到了,原先的数据都没有丢失,

其实ext2与ext3文件系统不同的是ext3只是多了一个日志功能。运用tune2fs工具为ext2文件系统增加了一个日志区,所以就变成了ext3的文件系统

下面我再运用tune2fs来调整分区的预留的block count
首先来查询一下/dev/sda7的预留block count

代码如下:
[root@localhost ~]# tune2fs -l /dev/sda7 | grep "Block count"
Block count:              497980

可以看到分区默认的预留block count 是%5,预留block count 就是保存分区大小的%5将是不可以进入数据的,只有其他的%95才是可以写入数据的,预留block count 的意义在于防止这个分区被你写爆了,从而造成服务起不来,当然也可以用tune2fs工具来改变预留block count

现在就开始调整分区的block count

代码如下:
#tune2fs   -m  10  /dev/sda7
[root@localhost ~]# tune2fs -m 10 /dev/sda7
tune2fs 1.39 (29-May-2006)
Setting reserved blocks percentage to 10% (49798 blocks)
[root@localhost ~]#

已经将block count 调整成%10了

在来使用tune2fs  -l  /dev/sda7来查看block count

代码如下:
[root@localhost ~]# tune2fs -l /dev/sda7 | grep "Block count"
Block count:              49798
[root@localhost ~]#

下面再运用tune2fs工具来给分区添加一个默认的挂载项

首先来查看一下/dev/sda7有没有默认的挂载选项

代码如下:
[root@localhost ~]# tune2fs -l /dev/sda7 |grep acl
[root@localhost ~]#

可以看到/dev/sda7这个分区的默认挂载选项是空的
在去看看其他的分区有没有这儿选项

代码如下:
[root@localhost ~]# tune2fs -l /dev/sda3 |grep acl
Default mount options:    user_xattr acl
[root@localhost ~]#

可以看到/dev/sda3分区有挂载一个挂载选项
这个挂载选项就是acl选项
文件系统的acl属性是为了文件的acl功能,只有分区有acl属性,所以文件才会有acl的功能
默认情况下,在系统安装的系统创建的分区就已经有了acl的属性,而在后面的分区将要手动添加

下面给/dev/sda7添加一个acl属性
添加命令

代码如下:
#tune2fs  -o  acl  /dev/sda7
[root@localhost ~]# tune2fs  -o  acl  /dev/sda7
tune2fs 1.39 (29-May-2006)
[root@localhost ~]#

在使用tune2fs  -l  /dev/sda7来查看一下acl属性是否添加上去了。

代码如下:
[root@localhost ~]# tune2fs -l /dev/sda7 |grep acl
Default mount options:    acl
[root@localhost ~]#

可以看到的文件系统就已经有了一个acl属性

让acl属性立即生效,可以用这条命令

代码如下:
[root@localhost ~]# mount -o remount,acl /dev/sda7
[root@localhost ~]# mount | grep /dev/sda7
/dev/sda7 on /mnt type ext2 (rw,acl)
[root@localhost ~]#

可以看到文件系统的acl属性就立即生效了。

关于文件系统的检查功能(fscek)
首先来讨论一下为什么要关闭文件系统的fscek的功能,

代码如下:
[root@localhost ~]# tune2fs -l /dev/sda7 | grep "mount count"
Maximum mount count:      38

先来看一下,这个参数的作用。最大的挂载次数。如果挂载次数达到38次的时候,计算机就会认为我们对这个文件系统进行频繁的操作,从而进行fscek的功能,当然这个功能我要也可以不要。

文件系统的检查功能默认是打开的,有需要的时候也可以将它关闭。

如何用tune2fs工具来关闭文件系统的检查功能

使用命令,

代码如下:
# tune2fs -c0 -i0 /dev/sda7
[root@localhost ~]# tune2fs -c0 -i0 /dev/sda7
tune2fs 1.39 (29-May-2006)
Setting maximal mount count to -1
Setting interval between checks to 0 seconds
[root@localhost ~]#

已经关闭了文件系统的检查功能

在使用tune2fs –l /dev/sda7来查看,

代码如下:
[root@localhost ~]# tune2fs -l /dev/sda7 |grep Check
Check interval:           0 (<none>)
[root@localhost ~]#

可以看到,文件系统的fscek的功能就已经关闭了。


    
最新技术文章:
▪linux系统中的列出敏感用户的脚本代码
▪a10 config backup for aXAPI
▪一键备份gitolite服务器的Shell脚本
▪nagios 分发文件实现代码
▪阿里云云服务器Linux系统更新yum源Shell脚本
▪一个监控LINUX目录和文件变化的Shell脚本分享
▪Linux下实现SSH免密码登录和实现秘钥的管理、...
▪Shell正则表达式之grep、sed、awk实操笔记
▪3个备份系统文件并邮件发送的Shell脚本分享
▪CentOS 6.3下给PHP添加mssql扩展模块教程
▪监控网站是否可以正常打开的Shell脚本分享
▪shell脚本编程之if语句学习笔记
▪shell脚本编程之循环语句学习笔记
▪shell脚本编程之case语句学习笔记
▪Shell脚本实现的阳历转农历代码分享
▪Shell脚本实现复制文件到多台服务器的代码分...
▪Shell脚本实现批量下载网络图片代码分享
▪Shell脚本实现检测文件是否被修改过代码分享
▪Shell脚本数组用法小结
▪Shell脚本批量重命名文件后缀的3种实现
▪C语言实现的ls命令源码分享
▪Linux下查找后门程序 CentOS 查后门程序的shell脚...
▪Shell 函数参数
▪linux shell 自定义函数方法(定义、返回值、变...
▪C语言实现的ls命令源码分享 iis7站长之家
▪Shell脚本break和continue命令简明教程
▪Shell脚本函数定义和函数参数
▪让代码整洁、过程清晰的BASH Shell编程技巧
▪shell常用重定向实例讲解
▪awk中RS、ORS、FS、OFS的区别和联系小结
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3