############
suse版本说明
############
最新的版本,SUSE Linux 10.1分别有零售版本及自由、开放源码的版本,叫作SUSE Linux OSS。在软件收录方面,两者几乎一模一样。它们最大的分别是,零售版含有一些专属软件如Macromedia Flash Player。此版本的售价为$59.95美元,包括一本手册以及有限度的技术支援。SUSE Lunux OSS则可以于它的网站上免费下载。零售版及可于网络上免费取得试用版有1片DVD及5片CD,SUSE Linux OSS则只提供5片CD,但DVD所包含的就是那5片CD的软件,它只是为用户提供一个更方便的安装媒介。
SUSE Linux也提供了一个企业服务器版本,名为SUSE Linux Enterprise Server。它可以免费取得,但如果不付款,它只提供30天的更新服务。
SUSE Linux Enterprise SERVER 10
SUSE Linux Enterprise Desktop 10
OPENSUSE
她们 不太一样。
前两个是 企业服务器版 和 企业桌面版 。不用办公软件,用 sles-10 就可以了。
后面的是社区版本,软件更新快。不如 企业 版稳定。正式版应该好一些。openSUSE 适合尝鲜。
#########################################################
yum
#########################################################
yum,是Yellow dog Updater, Modified的简称。yum的宗旨是自动化地升级,安装/移除rpm包,收集rpm包的相关信息,检查依赖性并自动提示用户解决。yum的关键之处是要有可靠的repository,顾名思义,这是软件的仓库,它可以是http或ftp站点,也可以是本地软件池,但必须包含rpm的header,header包括了rpm包的各种信息,包括描述,功能,提供的文件,依?*逋还叵档龋瑈um正是收集了这些header并加以分析,才能自动化地完成余下的任务。yum的一切配置信息都储存在一个叫yum.conf的配置文件中,通常位于/etc目录下,这是整个yum系统的重中之重,所以有必要详细介绍。下面是一个从网上找来的yum.con文件,让我们以此为例,进行说明。
代码:
[main]第一部分[main] ,这是yum的全局性设置。默认一般不必改动。
cachedir=/var/cache/yum cachedir:yum缓存的目录,yum在此存储下载的rpm包和数据库,一般是/var/cache/yum。
debuglevel=2 debuglevel:除错级别,0──10,默认是2
logfile=/var/log/yum.log logfile:yum的日志文件,默认是/var/log/yum.log。
pkgpolicy=newest pkgpolicy:包的策略。一共有两个选项,newest和last,这个作用是如果你设置了多个repository,而同一软件在不同的repository中同时存在,yum应该安装哪一个,如果是newest,则yum会安装最新的那个版本。如果是last,则yum会将服务器id以字母表排序,并选择最后的那个服务器上的软件安装。一般都是选newest。
distroverpkg=redhat-release distroverpkg:指定一个软件包,yum会根据这个包判断你的发行版本,默认是redhat-release,也可以是安装的任何针对自己发行版的rpm包。
tolerant=1 tolerent,也有1和0两个选项,表示yum是否容忍命令行发生与软件包有关的错误,比如你要安装1,2,3三个包,而其中3此前已经安装了,如果你设为1,则yum不会出现错误信息。默认是0。
exactarch=1 exactarch,有两个选项1和0,代表是否只升级和你安装软件包cpu体系一致的包,如果设为1,则如你安装了一个i386的rpm,则yum不会用1686的包来升级。
retries=1 retries,网络连接发生错误后的重试次数,如果设为0,则会无限重试。
除了上述之外,还有一些可以添加的选项,如
exclude=,排除某些软件在升级名单之外,可以用通配符,列表中各个项目要用空格隔开,这个对于安装了诸如美化包,中文补丁的朋友特别有用。
gpgchkeck= 有1和0两个选择,分别代表是否是否进行gpg校验,如果没有这一项,默认好像也是检查的。
#yum.conf 参数详解
#查yum的版本
rpm -qa|grep yum
#下载
对yum.conf设定完成,我们就可以好好体验yum带来的方便了。
对了,万事具备,只欠东风。还有一件事没有做。那就是导入每个reposity的GPG key,前面说过,yum可以使用gpg对包进行校验,确保下载包的完整性,所以我们先要到各个repository站点找到gpg key,一般都会放在首页的醒目位置,一些名字诸如 RPM-GPG-KEY.txt之类的纯文本文件,把它们下载,然后用rpm --import xxx.txt命令将它们导入,最好把发行版自带GPG-KEY也导入,rpm --import /usr/share/doc/redhat-release-*/RPM-GPG-KEY 官方软件升级用的上。至此一切准备工作都已完毕。
Linux软件的安装和卸载一直是困扰许多新用户的难题。在Windows中,我们可以使用软件自带的安装卸载程序或在控制面板中的“添加/删除程序”来实现。与其相类似,在Linux下有一个功能强大的软件安装卸载工具,名为RPM。它可以用来建立、安装、查询、更新、卸载软件。该工具是在命令行下使用的。在Shell的提示符后输入rpm,就可获得该命令的帮助信息。
Linux下软件的安装主要有三种不同的形式。第一种安装文件名为 xxx.tar.gz;第二种安装文件名为xxx.i386.rpm,还有一种是xxx.src.rpm。以第一种方式发行的软件多为以源码形式发送的;第二种方式则是直接以二进制形式发送的;第三种是rpm格式发布的源码。
对于第一种[xxx.tar.gz],安装方法如下:
1 .首先,将安装文件拷贝至你的目录中。例如,如果你是以root身份登录上的,就将软件拷贝至/root中。
#cp xxx.tar.gz /root
2 .由于该文件是被压缩并打包的,应对其解压缩。命令为:
#tar xvzf filename.tar.gz
3. 执行该命令后,安装文件按路径,解压缩在当前目录下。用ls命令可以看到解压缩后的文件。通常在解压缩后产生的文件中,有“Install”的文件。该文件为纯文本文件,详细讲述了该软件包的安装方法。
4.执行解压缩后产生的一个名为configure的可执行脚本程序。它是用于检查系统是否有编译时所需的库,以及库的版本是否满足编译的需要等安装所需要的系统信息。为随后的编译工作做准备。命令为: #./configure
5.检查通过后,将生成用于编译的MakeFile文件。此时,可以开始进行编译了。编译的过程视软件的规模和计算机性能的不同,所耗费的时间也不同。命令为: #make。
6.成功编译后,键入如下的命令开始安装:
#make install
7.安装完毕,应清除编译过程中产生的临时文件和配置过程中产生的文件。键入如下命令:
#make clean
#make distclean
至此,软件的安装结束。
对于第二种[xxx.i386.rpm],其安装方法要简单得多。
同第一种方式一样,将安装文件拷贝至你的目录中。然后使用rpm来安装该文件。命令如下:
#rpm -i filename.i386.rpm
rpm将自动将安装文件解包,并将软件安装到缺省的目录下。并将软件的安装信息注册到rpm的数据库中。参数i的作用是使rpm进入安装模式。
软件的卸载
1.软件的卸载主要是使用rpm来进行的。卸载软件首先要知道软件包在系统中注册的名称。键入命令:
#rpm -q -a
即可查询到当前系统中安装的所有的软件包。
2. 确定了要卸载的软件的名称,就可以开始实际卸载该软件了。键入命令:
#rpm -e [package name]
即可卸载软件。参数e的作用是使rpm进入卸载模式。对名为[package name]的软件包进行卸载。由于系统中各个软件包之间相互有依赖关系。如果因存在依赖关系而不能卸载,rpm将给予提示并停止卸载。你可以使用如下的命令来忽略依赖关系,直接开始卸载:
#rpm -e [package name] -nodeps
忽略依赖关系的卸载可能会导致系统中其它的一些软件无法使用
对于第三种[xxx.src.rpm],安装也很简单
拷贝到目标目录,然后执行
#rpmbuild --rebuild xxx.src.rpm 编译文件
然后进入#cd /usr/src/redhat(or other)/RPMS/i386/
执行 #rpm -ivh xxxxx.rpm 安装
上面的方法是对Redhat 8.0以及Mandrake9.0来说的,如果是低于这个版本。应该用
#rpm --rebuild *.src.rpm
使用Yum
使用Yum要做的第一件事情是更新其RPM header(文件头)列表。每一个RPM都有一个header,其中包含了完整的文件列表、软件包描述、实现的功能和提供的库、所需要的东西以及有什么冲突。Yum正是使用这些信息来决定如何升级和安装软件包的。
下面就来解决这个问题,输入以下命令:
yum check-update
运行这个命令,Yum将从yum.conf文件中指定的软件包服务器上下载当前的完整header文件列表。这个过程通常需要花费一定的时间,并且会有如下的一些显示信息:
Gathering header information file(s) from server(s)
Server: Fedora Core 1 - i386 - Base
Server: Fedora Core 1 - i386 - Released Updates
Finding updated packages
Downloading needed
headers
getting /var/cache/yum/updates-released
/headers/pango-0-1.2.5-4.i386.hdr
pango-0-1.2.5-4.i386.hdr
100% |=======| 6.5 kB 00:02
......
当上述的步骤完成之后,说明Yum已经下载完了所有的header文件。如果想让现在系统上安装的所有软件都处于最新的状态,只需使用以下命令:
yum update
Yum会将现在系统上安装的所有软件和目前的软件仓库服务器上的软件进行比较,比较完成后,它会给出一个有关细节的信息列表让用户确认,列表的内容如下所示:
Gathering header information file(s) from server(s)
Server: Fedora Core 1 - i386 - Base
Server: Fedora Core 1 - i386 - Released Updates
Finding updated packages
Downloading needed headers
Resolving dependencies
Dependencies resolved
I will do the following:
[install: kernel 2.4.22-1.2188.nptl.i686]
[update: pango 1.2.5-4.i386]
......
[update: XFree86-font-utils 4.3.0-55.i386]
Is this ok [y/N]:y
在本例中,Yum告诉我有76个可用更新(因为我进行测试的系统在安装完Fedora以后还从来没有更新过)。要安装所有这些更新,所要做的只是输入“y”即可。如果想更新的只是某一个特定的软件,可以将上述命令稍做修改:
yum update nmap
会看到如下所述的内容:
Gathering header information file(s) from server(s)
Server: Fedora Core 1 - i386 - Base
Server: Fedora Core 1 - i386 - Released Updates
Finding updated packages
Downloading needed headers
No Packages Available for Update
No actions to take
在上述的例子中,Yum告诉我,我的系统上的nmap已经是最新版本了,因此无需进行任何升级。下面我们来看一看如何安装一个机器上没有的软件包,比如要安装的是XChat IRC客户端,只需要输入以下命令即可:
yum install xchat
可能会看到如下信息:
Gathering header information file(s) from server(s)
Server: Fedora Core 1 - i386 - Base
Server: Fedora Core 1 - i386 - Released Updates
Finding updated packages
Downloading needed headers
Resolving dependencies
Dependencies resolved
I will do the following:
[install: xchat 1:2.0.7-1.FC1.0.i386]
Is this ok [y/N]:
按“y”就可以进行软件的安装,会出现下列内容提示安装成功:
Getting xchat-2.0.7-1.FC1.0.i386.rpm
xchat-2.0.7-1.FC1.0.i386.
100% |==========| 1.1 MB 01:51
Running test transaction:
Test transaction complete, Success!
xchat 100 % done 1/1
Installed: xchat 1:2.0.7-1.FC1.0.i386
Transaction(s) Complete
虽然我的机器上的namp已经不需要再进行升级,不过我还想为其安装一个GUI界面,但又不知道需要什么软件包,这时只需要输入以下命令:
yum search nmap gui
可能看到的内容如下:
Gathering header information file(s) from server(s)
Server: Fedora Core 1 - i386 - Base
Server: Fedora Core 1 - i386 - Released Updates
Finding updated packages
Downloading needed headers
Looking in available packages for a providing package
Available package: redhat-config-printer-gui.i386
0:0.6.79.5-1 from updates-released matches with
redhat-config-printer-gui
Available package: nmap.i386 2:3.48-1
from base matches with nmap
Available package: nmap-frontend.i386
2:3.48-1 from base matches with
Available package: nmap-frontend.i386
2:3.48-1 from base matches with nmap-frontend
......
2 results returned
如果现在需要一个并不是独立软件包的库文件,比如libc6.1-1.so.2,可以通过以下命令获取:
yum provides libc6.1-1.so.2
该命令会显示以下信息:
Gathering header information file(s)
from server(s)
Server: Fedora Core 1 - i386 - Base
Server: Fedora Core 1 - i386 - Released Updates
Finding updated packages
Downloading needed headers
Looking in available packages for a providing package
Available package: compat-libstdc++.i386
0:7.3-2.96.118 from base matches with
libstdc++-libc6.1-1.so.2
Available package: compat-libstdc++.i386
0:7.3-2.96.118 from base matches with
libstdc++-libc6.1-1.so.2(GCC.INTERNAL)
2 results returned
Looking in installed packages for a providing package
No packages found
Yum告知所查询的库位于compat-libstdc++的软件包中,并且现在还没有安装到本地系统上,所以只需要输入命令“yum install compat-libstdc++”即可完成该库的安装。如果要删除系统中的某软件,只需要输入以下命令:
yum remove nmap
该命令将会删除该软件包以及所有与之相关联的软件包。
在Yum升级或者安装软件时,它并不会自动清除磁盘缓冲区,所以要手动来完成这个过程。所幸的是这个过程非常简单,只需要输入以下命令即可:
yum clean all
该命令会删除所有缓冲区中的软件包以及所有不再需要的RPM header。如果要查看某一软件在本系统上的安装情况,可以使用以下命令:
yum info xchat
将会出现如下提示:
Gathering header information file(s)
from server(s)
Server: Fedora Core 1 - i386 - Base
Server: Fedora Core 1 - i386 - Released Updates
Finding updated packages
Downloading needed headers
Looking in Available Packages:
Looking in Installed Packages:
Name : xchat
Arch : i386
Version: 2.0.7
Release: 1.FC1.0
Size : 2.77 MB
Group : 应用程序/互联网
Repo : Locally Installed
Summary: GTK+ IRC (聊天) 客户。
Description:
X-Chat 是一个 X 窗口系统和 GTK+ 的 IRC 客户。
X-Chat 使用简便并包括一个好看的界面。
小结
从上面的讨论可以看出,Yum是一个非常方便实用的升级工具,它可以很轻松地让用户的系统时刻处于最新的状态。事实上,Yum可以实现的功能还远不止本文讨论的内容。我们还可以用它来升级内核(升级至新版本的内核,而不是打补丁)。
本文以Fedora Core 1为例,如果机器上安装的是以前的Red Hat版本,也可以使用Yum来进行软件的更新和安装管理。方法是从以下位置下载相应的版本安装,即可如本文所述的方法一样对系统进行更新(甚至可以直接将老的Red Hat系统升级至Fedora):
/download/2.0/yum-2.0.6-1.noarch.rpm
Red Hat Linux 8.0:
/download/1.0/yum-1.0.3-1_80.noarch.rpm
Red Hat Linux 7.3:
/download/1.0/yum-1.0.3-1_73.noarch.rpm
几个亚洲的软件仓库服务器镜像站点:
rsync://ftp.sfc.wide.ad.jp/fedora/
rsync://ftp.kddilabs.jp/fedora/
rsync://ftp.kreonet.re.kr/fedora/core/
标题: Yum入门资料大全
使用redhat,fedora的linuxer肯定都为rpm著名的dependency hell而头疼(这也是所有基于rpm发行版都有的问题)。 foo is needed by bar,bar is needed by foo。要装卸个软件,还得辛辛苦苦地梳理清楚所有依赖性问题,rpm的几个搜索站点成了时常光顾的场所,如果不幸碰到循环依赖,那就只有干瞪眼的分了。有时加个--nodeps参数,倒是眼不见,心不烦,但这样装上的软件,你能保证正常使用吗,这样卸载软件,你能保证不影响其它软件工作吗,恐怕谁也不能给出肯定的答案。每到这时,帽子们只有看着debian的apt暗自羡慕了。好在,这些都已经成为过去时了。基于rpm的发行版现在也有了像apt那样自动解决依赖关系的包管理工具了。其中一个著名的就是apt4rpm,相信在fox-eagle2003斑竹的不断宣传下,大家对此都比较熟悉了。这基本上是debian系统apt的在rpm发行版的移植。但是使用Redhat 和Fedora的linuxer你们知道吗,还有一个与apt功能类似的rpm包管理系统,那就是yum。Fedora系统已经自带,Redhat也有相应的rpm下载。与apt相比,yum的功能一点也不弱,甚至还有许多胜过apt之处。比如说,yum是Fedora系统自带的,因此它能使用 fedora官方的软件源,完成各种官方发布的各种升级。对于第三方软件源的支持,yum也不差,大多数支持apt的repository,也能支持 yum,比如说freshrpms,fedora.us,livna等等。此外yum有一个比较详细的log,可以查看何时升级安装了什么软件包等。 yum的代码较apt更为精简等。
下面就对yum作个大致的介绍:
yum,是Yellow dog Updater, Modified的简称,起初是由yellow dog这一发行版的开发者Terra Soft研发,用python写成,那时还叫做yup(yellow dog updater),后经杜克大学的开发团队进行改进,遂有此名。 yum的宗旨是自动化地升级,安装/移除rpm包,收集rpm包的相关信息,检查依赖性并自动提示用户解决。yum的关键之处是要有可靠的 repository,顾名思义,这是软件的仓库,它可以是http或ftp站点,也可以是本地软件池,但必须包含rpm的header,header包括了rpm包的各种信息,包括描述,功能,提供的文件,依赖冲突关系等,yum正是收集了这些header并加以分析,才能自动化地完成余下的任务。 yum的一切配置信息都储存在一个叫yum.conf的配置文件中,通常位于/etc目录下,这是整个yum系统的重中之重,所以有必要详细介绍。下面是一个从网上找来的yum.con文件,让我们以此为例,进行说明。
代码:
[main]
cachedir=/var/cache/yum
debuglevel=2
logfile=/var/log/yum.log
pkgpolicy=newest
distroverpkg=redhat-release
tolerant=1
exactarch=1
retries=1
[base]
name=Fedora Core $releasever - $basearch - Base
baseurl=
[updates-released]
name=Fedora Core $releasever - $basearch - Released Updates
baseurl=
[Fedora.us]
name=Fedora.us - $basearch - Extras
baseurl=
[Dag Wieers]
name=Dag RPM Repository for Fedora Core
baseurl=
[Livna]
Name=Livna RPM, Fedora Core $releasever - $basearch
baseurl=
[freshrpms]
name=FreshRPMs
baseurl=
###############################################
关键一步:
[root@rac1 VT]# cp /media/RHEL_5.5\ i386\ DVD/VT/repodata/comps-rhel5-vt.xml /tmp/repodata
[root@rac1 VT]# cp /media/RHEL_5.5\ i386\ DVD/Server/repodata/comps-rhel5-server-core.xml /tmp/repodata
[root@rac1 VT]# cp /media/RHEL_5.5\ i386\ DVD/Cluster/repodata/comps-rhel5-cluster.xml /tmp/repodata
[root@rac1 VT]# cp /media/RHEL_5.5\ i386\ DVD/ClusterStorage/repodata/comps-rhel5-cluster-st.xml /tmp/repodata
[root@rac1 Server]# rpm - ivh createrepo-0.4.11-3.el5.noarch.rpm
第四步:生成仓库数据库:
[root@localhost ~]# createrepo -g /yum/Server/repodata.bak/comps-rhel5-server-core.xml /yum/Server/
[root@localhost ~]# createrepo -g /yum/VT/repodata.bak/comps-rhel5-vt.xml /yum/VT/
[root@localhost ~]# createrepo -g /yum/Cluster/repodata.bak/ /yum/Cluster
[root@localhost ~]# createrepo -g /yum/ClusterStorage/repodata.bak/comps-rhel5-cluster-st.xml /yum/ClusterStorage/
[root@rac1 yum]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
第五步:查看仓库数据文件:
[root@localhost ~]# ls /yum/Server/repodata/
comps-rhel5-server-core.xml //这个文件软件包组的分类。
filelists.xml.gz other.xml.gz primary.xml.gz //这三个文件为软件包列表文件。
repomd.xml //这个文件为MD5校验信息。
在/yum/VT /yum/Cluster /yum/ClusterStorage下面都有这几个文件,作用和这一样。如果想更新软件包,只需把下载完的软件包放在Server或者其他三个目录里,再使用第四步重新生成数据库文件即可。
第六步:客户端配置
第一部分[main]
这是yum的全局性设置。默认一般不必改动。
cachedir:yum缓存的目录,yum在此存储下载的rpm包和数据库,一般是/var/cache/yum。
debuglevel:除错级别,0──10,默认是2
logfile:yum的日志文件,默认是/var/log/yum.log。
pkgpolicy:包的策略。一共有两个选项,newest和last,这个作用是如果你设置了多个repository,而同一软件在不同的 repository中同时存在,yum应该安装哪一个,如果是newest,则yum会安装最新的那个版本。如果是last,则yum会将服务器id以字母表排序,并选择最后的那个服务器上的软件安装。一般都是选newest。
distroverpkg:指定一个软件包,yum会根据这个包判断你的发行版本,默认是redhat-release,也可以是安装的任何针对自己发行版的rpm包。
exactarch,有两个选项1和0,代表是否只升级和你安装软件包cpu体系一致的包,如果设为1,则如你安装了一个i386的rpm,则yum不会用1686的包来升级。
retries,网络连接发生错误后的重试次数,如果设为0,则会无限重试。
tolerent,也有1和0两个选项,表示yum是否容忍命令行发生与软件包有关的错误,比如你要安装1,2,3三个包,而其中3此前已经安装了,如果你设为1,则yum不会出现错误信息。默认是0。
除了上述之外,还有一些可以添加的选项,如
exclude=,排除某些软件在升级名单之外,可以用通配符,列表中各个项目要用空格隔开,这个对于安装了诸如美化包,中文补丁的朋友特别有用。
gpgchkeck= 有1和0两个选择,分别代表是否是否进行gpg校验,如果没有这一项,默认好像也是检查的。
全局设置完毕,就该配置repository服务器了,这是最令人激动的,有了好的repository,就如家门口开了大卖场,要什么东西稍微跑跑腿就行,对了这还是个免费的大卖场。
所有服务器设置都应该遵循如下格式:
[serverid]
name=Some name for this server
baseurl=url://path/to/repository/
其中serverid是用于区别各个不同的repository,必须有一个独一无二的名称。
name,是对repository的描述,支持像$releasever $basearch这样的变量;
baseurl是服务器设置中最重要的部分,只有设置正确,才能从上面获取软件。它的格式是:
baseurl=url://server1/path/to/repository/
其中url支持的协议有 ;,file://三种。baseurl后可以跟多个url,你可以自己改为速度比较快的镜像站,但baseurl只能有一个,也就是说不能像如下格式:
baseurl=url://server1/path/to/repository/
baseurl=url://server2/path/to/repository/
baseurl=url://server3/path/to/repository/
其中url指向的目录必须是这个repository header目录的上一级,它也支持$releasever $basearch这样的变量。
url之后可以加上多个选项,如gpgcheck、exclude、failovermethod等,比如:
代码:
[updates-released]
name=Fedora Core $releasever - $basearch - Released Updates
baseurl=
gpgcheck=1
exclude=gaim
failovermethod=priority
其中gpgcheck,exclude的含义和[main]部分相同,但只对此服务器起作用,
failovermethode有两个选项roundrobin和priority,意思分别是有多个url可供选择时,yum选择的次序, roundrobin是随机选择,如果连接失败则使用下一个,依次循环,priority则根据url的次序从第一个开始。如果不指明,默认是 roundrobin。
几个变量
$releasever,发行版的版本,从[main]部分的distroverpkg获取,如果没有,则根据redhat-release包进行判断。
$arch,cpu体系,如i686,athlon等
$basearch,cpu的基本体系组,如i686和athlon同属i386,alpha和alphaev6同属alpha。
对yum.conf设定完成,我们就可以好好体验yum带来的方便了。
对了,万事具备,只欠东风。还有一件事没有做。那就是导入每个reposity的GPG key,前面说过,yum可以使用gpg对包进行校验,确保下载包的完整性,所以我们先要到各个repository站点找到gpg key,一般都会放在首页的醒目位置,一些名字诸如 RPM-GPG- KEY.txt之类的纯文本文件,把它们下载,然后用rpm --import xxx.txt命令将它们导入,最好把发行版自带GPG-KEY也导入, rpm --import /usr/share/doc/redhat-release-*/RPM-GPG-KEY 官方软件升级用的上。至此一切准备工作都已完毕。
用yum升级
打开终端,切换到root用户,yum的操作大都须有超级用户的权限。首先,yum update,这一步是必须的,yum会从服务器的header目录下载rpm的header,放在本地的缓存中,这可能会花费一定的时间,但比起yum给我们带来方便,这些时间的花费又算的了什么呢?header下载完毕,yum会判断是否有可更新的软件包,如果有,它会询问你的意见,是否更新,还是说y吧,把系统始终up to date总是不错的,这时yum开始下载软件包并使用调用rpm安装,这可能要一定时间,取决于要更新软件的数目和网络状况,万一网络断了,也没关系,再进行一次就可以了。升级完毕,以后每天只要使用yum check-update检查一下有无跟新,如果有,就用yum update进行跟新,时刻保持系统为最新,堵住一切发现的漏洞。也可以单独用yum update packagename 对某个单独包进行升级。
yum还有一个升级指令,yum upgrade,它的初衷是更换废弃的包,但现在通常用来进行重大的升级,如把发行版整个升高一个版本,由于牵动太大,还不如安装新的系统。
用yum安装删除软件,装了系统添加删除软件是常事,yum同样可以胜任这一任务,只要软件是rpm安装的。
安装的命令是,yum install xxx,yum会查询数据库,有无这一软件包,如果有,则检查其依赖冲突关系,如果没有依赖冲突,那么最好,下载安装;如果有,则会给出提示,询问是否要同时安装依赖,或删除冲突的包,你可以自己作出判断。
删除的命令是,yum remove xxx,同安装一样,yum也会查询数据库,给出解决依赖关系的提示。
用yum查询软件信息
我们常会碰到这样的情况,想要安装一个软件,只知道它和某方面有关,但又不能确切知道它的名字。这时yum的查询功能就起作用了。你可以用 yum search keyword这样的命令来进行搜索,比如我们要则安装一个Instant Messenger,但又不知到底有哪些,这时不妨用 yum search messenger这样的指令进行搜索,yum会搜索所有可用rpm的描述,列出所有描述中和messeger有关的rpm包,于是我们可能得到gaim,kopete等等,并从中选择。
有时我们还会碰到安装了一个包,但又不知道其用途,我们可以用yum info packagename这个指令来获取信息。
清除yum缓存
yum会把下载的软件包和header存储在cache中,而不会自动删除。如果我们觉得它们占用了磁盘空间,可以使用yum clean指令进行清除,更精确的用法是yum clean headers清除header,yum clean packages清除下载的rpm包, yum clean all一股脑儿端
这些内容都是匆匆而就,加上有一段时间没用Redhat/Fedora,不免疏漏,请大家补充。此外我没怎么用过其它基于rpm的发行版,如mandrake和suse,不知道它们有什么好的包管理工具,希望使用这些发行版的fans不吝分享经验。
相关站点:
主要的Repository,大多数也提供apt支持。
;
;
;#Dag的apt/yum repository
;
;#k3b
;kde-redhat
;#ATrpms
;#Dries APT/YUM RPM Repository
;#NewRPMS
;#Redhat和Fedora遗产项目支持,Core 1也已经进入遗产了,汗。
注意多个repository共存可能带来的冲突。
#查看进程所占用的端口号
netstat -anpt
lsof -i
#vnc配置文件
/etc/sysconfig/vncservers
vncext: Listening for VNC connections on port 5901
vncext: Listening for HTTP connections on port 5801
vnc端口从5901开始
HTTP端口从5801开始
#以ORACLE用户开启VNC
$su - oracle
$vncserver
#在VNC下安装ORACLE
首先启动ORACLE的VNC,然后登录,然后DBCA即可。不需要export DISPLAY……
#修改VNC密码
vncpasswd
#重启VNC服务,2代表第2个VNC服务
vncserver -kill :2
然后VNCSERVER启动就可以了
A.为什么连接后,不能显示桌面,而只有一个Terminal窗口?
试着修改/root/.vnc/xstartup,把最后一行 twm& 改成 gnome-session& or startkde&(据说KDE在目前的VNC Viewer上的表现不太稳定)
VNC开机自启动
chkconfig --level 35 vncserver on
修改/etc/sysconfig下的vncserver目录,增加
VNCSERVERS="1:root"
如果是多个
VNCSERVERS="1:root 2:oracle"
#linux下配置xdm,运行xmanager
如果你想要你的 xdm (或者 gdm) 在计算机启动的时候运行,你应该确保在文件 /etc/inittab 中的这一行
id:3:initdefault:
为
id:5:initdefault:
/usr/X11R6/bin/xdm
[root@storage-lh bin]# rpm -qf xdm
xorg-x11-xdm-6.8.2-1.EL.13.20
首先确认XDM被安装
如果没有,rpm -Uvh xorg-x11-xdm-6.8.2-1.EL.13.20.rpm
设置xwindow可以支持如xmanager这样的工具远程登陆linux。设置如下:
#vi /etc/X11/xdm/xdm-config
在最后一行: DisplayManager.requestPort: 0 前面加!号注释掉此行。
#vi /etc/X11/xdm/Xservers
在最后一行::0 local /usr/X11R6/bin/X 前面加#号注释掉这一行。
#vi /etc/X11/xdm/Xaccess
找到#* #any host can get a login window
把这一行前面的#号去掉,变成:
* #any host can get a login window
最后运行#xdm。这样使用xmanager等工具就可以连接Linux了!!!
如果想要每次启动自动启动xdm,那么请在/etc/rc.d/rc.local文件尾部加入/usr/X11R6/bin/xdm
# PS1变量的定义
cat /etc/bashrc 默认
通常情况下,这个条目看起来应该是这个样子:
~/.bashrc: PS1="\s-\v\$ "
\s 表示 shell 的名称,-\v 表示他的版本号。 在提示符的最后面我们放置了一个 $。这样看起来也许有点乏味, 所以不妨试试下面这种模式——这种模式在大多数 Linux 的发行版本下是默认的设置:
~/.bashrc: PS1="\u@\h \w \$ "
这表示 用户@ 当前目录 $,这个是大部分 Linux 用户都熟悉的 shell 提示符。
#RPM 使用
rpm -qa 查询系统中安装的所有RPM包 rpm -qa|grep ...
rpm -q 软件包名称 查询是否已安装 rpm -q
rpm -qi 查询软件包信息
rpm -ql 查询软件包中的文件所在的位置
rpm -qf 查询文件所属的软件包
rpm -qp RPM包文件全路径名,后面跟一RPM包名称
安装
rpm -ivh …… i,安装;v verbose,显示安装信息;h hash 安装过程以#号表示安装进度
rpm -e 删除
rpm -U 升级
rpm -Uvh 如无安装则安装,如有则升级。
rpm --import 输入RPM包的公钥,光盘的根目录一般会有 RPM-GPG-KEY
rpm -qa gpg-pubkey* 查询公钥端口
rpm -K 校验RPM包的签名
#tar的使用
tar cvf 文件名 所备份的文件或目录名 c 建立TAR包;v 显示提示;f 指定TAR包名称。
tar zxvf 建立压缩的TAR包。 tar zxvf tmp.tar.gz /tmp/
tar tf 查询TAR包中的内容
tar ztf 查询压缩TAR包中的内容
tar xvf 释放TAR包 tar xvf tmp.tar 包中的文件被释放到当前目录下
tar zxvf 释放压缩TAR包
#IP地址配置
/etc/sysconfig/network-scripts 目录下。
#DNS配置
etc/resolv.conf
还可指定当前主机所在的域
domain test.com
nameserver 192.168.1.1
#名称解析顺序
/etc/nsswitch.conf文件下
hosts: files dns nis files代表hosts文件,dns代表dns服务器,nis代表nis服务器。按从左到右的顺序。
#主机名解析
/etc/hosts
#改主机名
hostname winy
#网卡设置
ifconfig 显示当前活动网卡 -a 所有网卡
#启动及停止网卡
ifconfig eth0 up|down 或者 ifup|ifdown eth0
#设置IP
ifconfig eth0 192.168.1.20
#添加删除路由信息
route add -net 网络地址 netmask 子码掩码 dev 网卡设备名
route del -net 网络地址 netmask 子码掩码
route add -net 10.0.0.0 netmask 255.0.0.0 dev eth0
route del -net 10.0.0.0 netmask 255.0.0.0
#添加删除默认网关
route add default gw 网关 dev 网卡
route add default gw 192.168.8.1 dev eth0
route del default gw 网关
#nslookup,测试DNS服务器是否工作正常
可实现域名和IP互查
#重启网络服务
service network restart
#linux字符界面下的乱码问题---改成英文显示
1.暂时性解决
#export LC_ALL=POSIX
再启动setup后,解决,但是 reboot后,还是还是显示乱码
2。永久性解决 LC_ALL=zh_CN.GB2312
编辑/etc/sysconfig/目录下的i18n文件,将LC_ALL=POSIX写入,保存文件
如果你在i18n文件中加入LC_ALL=POSIX,那么系统的LC_XXX就都会变为POSIX
另外,如果用的是CRT,终端类型要选择VT100。
中文环境-最终解决办法!
[root@winy sysconfig]# cat i18n
具体解决方法是:
1,修改远程linux机器的配置
vim /etc/sysconfig/i18n
把LANG改成支持UTF-8的字符集
如:
LANG=”en_US.UTF-8〃
2,然后再改secure crt的设置
Options–>Session Options…
然后把Terminial–>Appearance
再然后右边fonts里的Character改成”UTF-8〃
3,退出,再重新登录。发现utf8的文件都能正确读了,utf8的文件名也能正确显示了。
#分区管理
fdisk
fdisk /dev/hdb
parted 也可以,但复杂一些,功能强大一些。
#建立ext2/ext3文件系统
mke2fs 分区设备文件名
#显示或设置指定ext2/ext3分区的卷标
e2label 分区设备文件 [新的卷标名称]
#查找指定卷标的文件系统
findfs LABEL=文件系统卷标
#检测指定分区中的ext2/ext3文件系统并进行错误修复
e2fsck 分区设备文件名
注意!不能用于检测系统中已装载的文件系统,否则会造成文件系统的损害!!!
#文件系统的挂载
mount
mount 设备文件名 挂载点目录
mount /dev/hdb1 /var/ftp/
umount 设备文件名|挂载点目录
/etc/fstab 目录设置了启动时自动挂载的文件系统
#nfs配置
注意:如输出目录为ROOT:ROOT,则挂载后客户机的权限也为ROOT:ROOT。不管之前是什么权限。
可不用改输出的权限。
rpm -q nfs-utils portmap 查询所需的包是否安装
/etc/exports 文件指定了需要共享的目录
格式如下 /home/share 192.168.8.37(sync,ro)
主机地址可是IP或主机名,也可以是所有主机,如 *.test.com,*,192.168.1.0/24
下面是一些NFS共享的常用参数:
rw:可读写的权限;
ro:只读的权限;
no_root_squash:登入到NFS主机的用户如果是ROOT用户,他就拥有ROOT的权限
root_squash:在登入 NFS 主机使用目录的使用者如果是 root 时,那么这个使用者的权限将被压缩成为匿名使用者,通常他的 UID 与 GID 都会变成 nobody 那个身份;
all_squash:不管登陆NFS主机的用户是什么都会被重新设定为nobody。
anonuid:指定NFS服务器/etc/passwd文件中匿名用户的UID,nfsnobody(nobody),这个用户是NFS服务默认使用的用户,可以确保权限的设置方便。
anongid:指定NFS服务器/etc/passwd文件中匿名用户的GID
最好指定anonuid!
sync:资料同步写入存储器中。
async:资料会先暂时存放在内存中,不会直接写入硬盘。
insecure 允许从这台机器过来的非授权访问。
启动时需要启动两个服务
service portmap start
service nfs start
#查询共享目录状态
showmount
-e 显示输出目录列表 在客户端执行 showmount -e 服务器 可以查询允许本机连接相应的共享目录
-d 显示被挂载的目录
-a 显示客户机与被挂载的目录
#维护
exportfs
-rv 重新读取exports的设置并生效
-auv 停止所有目录输出
-av 输出所有目录
#客户端的挂载
mount NFS服务器地址:共享目录 本地挂载点目录
#资料-------------
NFS server可以看作是一个FILE SERVER,它可以让你的PC通过网络将远端得NFS SERVER共享出来的档案MOUNT到自己的系统中,在CLIENT看来使用NFS的远端文件就象是在使用本地文件一样。
NFS协议从诞生到现在为止,已经有多个版本,如NFS V2(rfc1094),NFS V3(rfc1813)(最新的版本是V4(rfc3010)。
二、各NFS协议版本的主要区别
V3相对V2的主要区别:
1、文件尺寸
V2最大只支持32BIT的文件大小(4G),而NFS V3新增加了支持64BIT文件大小的技术。
2、文件传输尺寸
V3没有限定传输尺寸,V2最多只能设定为8k,可以使用-rsize and -wsize 来进行设定。
3、完整的信息返回
V3增加和完善了许多错误和成功信息的返回,对于服务器的设置和管理能带来很大好处。
4、增加了对TCP传输协议的支持
V2只提供了对UDP协议的支持,在一些高要求的网络环境中有很大限制,V3增加了对TCP协议的支持
*5、异步写入特性
6、改进了SERVER的mount性能
7、有更好的I/O WRITES 性能。
9、更强网络运行效能,使得网络运作更为有效。
10、更强的灾难恢复功能。
异步写入特性(v3新增加)介绍:
NFS V3 能否使用异步写入,这是可选择的一种特性。NFS V3客户端发发送一个异步写入请求到服务器,在给客户端答复之前服务器并不是必须要将数据写入到存储器中(稳定的)。服务器能确定何时去写入数据或者将多个写入请求聚合到一起并加以处理,然后写入。客户端能保持一个数据的copy以防万一服务器不能完整的将数据写入。当客户端希望释放这个copy的时候,它会向服务器通过这个操作过程,以确保每个操作步骤的完整。异步写入能够使服务器去确定最好的同步数据的策略。使数据能尽可能的同步的提交何到达。与V2比较来看,这样的机制能更好的实现数据缓冲和更多的平行(平衡)。而NFS V2的SERVER在将数据写入存储器之前不能再相应任何的写入请求。
V4相对V3的改进:
1:改进了INTERNET上的存取和执行效能
2:在协议中增强了安全方面的特性
3:增强的跨平台特性
三、CLIENT和SERVER的具体操作和设置
在讲NFS SERVER的运作之前先来看一些与NFS SERVER有关的东西:
RPC(Remote Procedure Call)
NFS 本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,这是因为NFS使用了一些其它的传输协议。而这些传输协议勇士用到这个RPC功能的。可以说NFS本身就是使用RPC的一个程序。或者说NFS也是一个RPC SERVER.所以只要用到NFS的地方都要启动RPC服务,不论是NFS SERVER或者NFS CLIENT。这样SERVER和CLIENT才能通过RPC来实现PROGRAM PORT的对应。可以这么理解RPC和NFS的关系:NFS是一个文件系统,而RPC是负责负责信息的传输。
NFS需要启动的DAEMONS
pc.nfsd:主要复杂登陆权限检测等。
rpc.mountd:负责NFS的档案系统,当CLIENT端通过rpc.nfsd登陆SERVER后,对clinet存取server的文件进行一系列的管理
NFS SERVER在REDHAT LINUX平台下一共需要两个套件:nfs-utils和PORTMAP
nfs-utils:提供rpc.nfsd 及 rpc.mountd这两个NFS DAEMONS的套件
portmap: NFS其实可以被看作是一个RPC SERVER PROGRAM,而要启动一个RPC SERVER PROGRAM,都要做好PORT的对应工作,而且这样的任务就是由PORTMAP来完成的。通俗的说PortMap就是用来做PORT的mapping的。
一:服务器端的设定(以LINUX为例)
服务器端的设定都是在/etc/exports这个文件中进行设定的,设定格式如下:
欲分享出去的目录 主机名称1或者IP1(参数1,参数2) 主机名称2或者IP2(参数3,参数4)
上面这个格式表示,同一个目录分享给两个不同的主机,但提供给这两台主机的权限和参数是不同的,所以分别设定两个主机得到的权限。
可以设定的参数主要有以下这些:
rw:可读写的权限;
ro:只读的权限;
no_root_squash:登入到NFS主机的用户如果是ROOT用户,他就拥有ROOT的权限,此参数很不安全,建议不要使用。
root_squash:在登入 NFS 主?C使用分享之目?的使用者如果是 root ?r,那????使用者的?嘞?⒈?嚎s成?槟涿?褂谜撸?ǔK??UID ? GID 都???成 nobody 那??身份;
all_squash:不管登陆NFS主机的用户是什么都会被重新设定为nobody。
anonuid:将登入NFS主机的用户都设定成指定的user id,此ID必须存在于/etc/passwd中。
anongid:同 anonuid ,但是?成 group ID 就是了!
sync:资料同步写入存储器中。
async:资料会先暂时存放在内存中,不会直接写入硬盘。
insecure 允许从这台机器过来的非授权访问。
例如可以编辑/etc/exports为:
/tmp *(rw,no_root_squash)
/home/public 192.168.0.*(rw) *(ro)
/home/test 192.168.0.100(rw)
/home/linux *.the9.com(rw,all_squash,anonuid=40,anongid=40)
设定好后可以使用以下命令启动NFS:
/etc/rc.d/init.d/portmap start (在REDHAT中PORTMAP是默认启动的)
/etc/rc.d/init.d/nfs start
exportfs命令:
如果我们在启动了NFS之后又修改了/etc/exports,是不是还要重新启动nfs呢?这个时候我们就可以用exportfs命令来使改动立刻生效,该命令格式如下:
exportfs [-aruv]
-a :全部mount或者unmount /etc/exports中的内容
-r :重新mount /etc/exports中分享出来的目录
-u :umount 目录
-v :在 export 的?r候,将详细的信息输出到屏幕上。
具体例子:
[root @test root]# exportfs -rv <==全部重新 export 一次!
exporting 192.168.0.100:/home/test
exporting 192.168.0.*:/home/public
exporting *.the9.com:/home/linux
exporting *:/home/public
exporting *:/tmp
reexporting 192.168.0.100:/home/test to kernel
exportfs -au <==全部都卸载了。
客户段的操作:
1、showmout命令对于NFS的操作和查错有很大的帮助,所以我们先来看一下showmount的用法
showmout
-a :这个参数是一般在NFS SERVER上使用,是用来显示已经mount上本机nfs目录的cline机器。
-e :显示指定的NFS SERVER上export出来的目录。
例如:
showmount -e 192.168.0.30
Export list for localhost:
/tmp *
/home/linux *.linux.org
/home/public (everyone)
/home/test 192.168.0.100
2、mount nfs目录的方法:
mount -t nfs hostname(orIP):/directory /mount/point
具体例子:
Linux: mount -t nfs 192.168.0.1:/tmp /mnt/nfs
Solaris:mount -F nfs 192.168.0.1:/tmp /mnt/nfs
BSD: mount 192.168.0.1:/tmp /mnt/nfs
3、mount nfs的其它可选参数:
HARD mount和SOFT MOUNT:
HARD: NFS CLIENT会不断的尝试与SERVER的连接(在后台,不会给出任何提示信息,在LINUX下有的版本仍然会给出一些提示),直到MOUNT上。
SOFT:会在前台尝试与SERVER的连接,是默认的连接方式。当收到错误信息后终止mount尝试,并给出相关信息。
例如:mount -F nfs -o hard 192.168.0.10:/nfs /nfs
对于到底是使用hard还是soft的问题,这主要取决于你访问什么信息有关。例如你是想通过NFS来运行X PROGRAM的话,你绝对不会希望由于一些意外的情况(如网络速度一下子变的很慢,插拔了一下网卡插头等)而使系统输出大量的错误信息,如果此时你用的是HARD方式的话,系统就会等待,直到能够重新与NFS SERVER建立连接传输信息。另外如果是非关键数据的话也可以使用SOFT方式,如FTP数据等,这样在远程机器暂时连接不上或关闭时就不会挂起你的会话过程。
rsize和wsize:
例:mount -nfs -o bg,rsize=8192,wsize=8192 192.168.8.133:/mnt/os /mnt/iso
文件传输尺寸设定:V3没有限定传输尺寸,V2最多只能设定为8k,可以使用-rsize and -wsize 来进行设定。这两个参数的设定对于NFS的执行效能有较大的影响
bg:在执行mount时如果无法顺利mount上时,系统会将mount的操作转移到后台并继续尝试mount,直到mount成功为止。(通常在设定/etc/fstab文件时都应该使用bg,以避免可能的mount不上而影响启动速度)
fg:和bg正好相反,是默认的参数
nfsvers=n:设定要使用的NFS版本,默认是使用2,这个选项的设定还要取决于server端是否支持NFS VER 3
mountport:设定mount的端口
port:根据server端export出的端口设定,例如如果server使用5555端口输出NFS,那客户端就需要使用这个参数进行同样的设定
timeo =n:设置超时时间,当数据传输遇到问题时,会根据这个参数尝试进行重新传输。默认值是7/10妙(0.7秒)。如果网络连接不是很稳定的话就要加大这个数值,并且推荐使用HARD MOUNT方式,同时最好也加上INTR参数,这样你就可以终止任何挂起的文件访问。
intr 允许通知中断一个NFS调用。当服务器没有应答需要放弃的时候有用处。
udp:使用udp作为nfs的传输协议(NFS V2只支持UDP)
tcp:使用tcp作为nfs的传输协议
namlen=n:设定远程服务器所允许的最长文件名。这个值的默认是255
acregmin=n:设定最小的在文件更新之前cache时间,默认是3
acregmax=n:设定最大的在文件更新之前cache时间,默认是60
acdirmin=n:设定最小的在目录更新之前cache时间,默认是30
acdirmax=n:设定最大的在目录更新之前cache时间,默认是60
actimeo=n:将acregmin、acregmax、acdirmin、acdirmax设定为同一个数值,默认是没有启用。
retry=n:设定当网络传输出现故障的时候,尝试重新连接多少时间后不再尝试。默认的数值是10000 minutes
noac:关闭cache机制。
同时使用多个参数的方法:mount -t nfs -o timeo=3,udp,hard 192.168.0.30:/tmp /nfs
请注意,NFS客户机和服务器的选项并不一定完全相同,而且有的时候会有冲突。比如说服务器以只读的方式导出,客户端却以可写的方式mount,虽然可以成功mount上,但尝试写入的时候就会发生错误。一般服务器和客户端配置冲突的时候,会以服务器的配置为准。
4、/etc/fstab的设定方法
/etc/fstab的格式如下:
fs_spec fs_file fs_type fs_options fs_dump fs_pass
fs_spec:该字段定义希望加载的文件系统所在的设备或远程文件系统,对于nfs这个参数一般设置为这样:192.168.0.1:/NFS
fs_file:本地的挂载点
fs_type:对于NFS来说这个字段只要设置成nfs就可以了
fs_options:挂载的参数,可以使用的参数可以参考上面的mount参数。
fs_dump - 该选项被"dump"命令使用来检查一个文件系统应该以多快频率进行转储,若不需要转储就设置该字段为0
fs_pass - 该字段被fsck命令用来决定在启动时需要被扫描的文件系统的顺序,根文件系统"/"对应该字段的值应该为1,其他文件系统应该为2。若该文件系统无需在启动时扫描则设置该字段为0 。
5、与NFS有关的一些命令介绍
nfsstat:
查看NFS的运行状态,对于调整NFS的运行有很大帮助
rpcinfo:
查看rpc执行信息,可以用于检测rpc运行情况的工具。
四、NFS调优
调优的步骤:
1、测量当前网络、服务器和每个客户端的执行效率。
2、分析收集来的数据并画出图表。查找出特殊情况,例如很高的磁盘和CPU占用、已经高的磁盘使用时间
3、调整服务器
4、重复第一到第三步直到达到你渴望的性能
与NFS性能有关的问题有很多,通常可以要考虑的有以下这些选择:
WSIZE,RSIZE参数来优化NFS的执行效能
WSIZE、RSIZE对于NFS的效能有很大的影响。
wsize和rsize设定了SERVER和CLIENT之间往来数据块的大小,这两个参数的合理设定与很多方面有关,不仅是软件方面也有硬件方面的因素会影响这两个参数的设定(例如LINUX KERNEL、网卡,交换机等等)。
下面这个命令可以测试NFS的执行效能,读和写的效能可以分别测试,分别找到合适的参数。对于要测试分散的大量的数据的读写可以通过编写脚本来进行测试。在每次测试的时候最好能重复的执行一次MOUNT和unmount。
time dd if=/dev/zero of=/mnt/home/testfile bs=16k count=16384
用于测试的WSIZE,RSIZE最好是1024的倍数,对于NFS V2来说8192是RSIZE和WSIZE的最大数值,如果使用的是NFS V3则可以尝试的最大数值是32768。
如果设置的值比较大的时候,应该最好在CLIENT上进入mount上的目录中,进行一些常规操作(LS,VI等等),看看有没有错误信息出现。有可能出现的典型问题有LS的时候文件不能完整的列出或者是出现错误信息,不同的操作系统有不同的最佳数值,所以对于不同的操作系统都要进行测试。
设定最佳的NFSD的COPY数目。
linux中的NFSD的COPY数目是在/etc/rc.d/init.d/nfs这个启动文件中设置的,默认是8个NFSD,对于这个参数的设置一般是要根据可能的CLIENT数目来进行设定的,和WSIZE、RSIZE一样也是要通过测试来找到最近的数值。
UDP and TCP
可以手动进行设置,也可以自动进行选择。
mount -t nfs -o sync,tcp,noatime,rsize=1024,wsize=1024 EXPORT_MACHINE:/EXPORTED_DIR /DIR
UDP 有着传输速度快,非连接传输的便捷特性,但是UDP在传输上没有TCP来的稳定,当网络不稳定或者黑客入侵的时候很容易使NFS的 Performance 大幅降低甚至使网络瘫痪。所以对于不同情况的网络要有针对的选择传输协议。nfs over tcp比较稳定, nfs over udp速度较快。在机器较少网络状况较好的情况下使用UDP协议能带来较好的性能,当机器较多,网络情况复杂时推荐使用TCP协议(V2只支持UDP协议)。在局域网中使用UDP协议较好,因为局域网有比较稳定的网络保证,使用UDP可以带来更好的性能,在广域网中推荐使用TCP协议,TCP协议能让NFS在复杂的网络环境中保持最好的传输稳定性。可以参考这篇文章:http: //
版本的选择
V3作为默认的选择(RED HAT 8默认使用V2,SOLARIS 8以上默认使用V3),可以通过vers= mount option来进行选择。
LINUX通过mount option的nfsvers=n进行选择。
五、NFS故障解决
1、NFSD没有启动起来
首先要确认 NFS 输出列表存在,否则 nfsd 不会启动。可用 exportfs 命令来检查,如果 exportfs 命令没有结果返回或返回不正确,则需要检查 /etc/exports 文件。
2、mountd 进程没有启动
mountd 进程是一个远程过程调用 (RPC) ,其作用是对客户端要求安装(mount)文件系统的申请作出响应。mountd进程通过查找 /etc/xtab 文件来获知哪些文件系统可以被远程客户端使用。另外,通过mountd进程,用户可以知道目前有哪些文件系统已被远程文件系统装配,并得知远程客户端的列表。查看mountd是否正常启动起来可以使用命令rpcinfo进行查看,在正常情况下在输出的列表中应该象这样的行:
100005 1 udp 1039 mountd
100005 1 tcp 1113 mountd
100005 2 udp 1039 mountd
100005 2 tcp 1113 mountd
100005 3 udp 1039 mountd
100005 3 tcp 1113 mountd
如果没有起来的话可以检查是否安装了PORTMAP组件。
rpm -qa|grep portmap
3、fs type nfs no supported by kernel
kernel不支持nfs文件系统,重新编译一下KERNEL就可以解决。
4、can't contact portmapper: RPC: Remote system error - Connection refused
出现这个错误信息是由于SEVER端的PORTMAP没有启动。
5、mount clntudp_create: RPC: Program not registered
NFS没有启动起来,可以用showmout -e host命令来检查NFS SERVER是否正常启动起来。
6、mount: localhost:/home/test failed, reason given by server: Permission denied
这个提示是当client要mount nfs server时可能出现的提示,意思是说本机没有权限去mount nfs server上的目录。解决方法当然是去修改NFS SERVER咯。
7、被防火墙阻挡
这个原因很多人都忽视了,在有严格要求的网络环境中,我们一般会关闭linux上的所有端口,当需要使用哪个端口的时候才会去打开。而NFS默认是使用111端口,所以我们先要检测是否打开了这个端口,另外也要检查TCP_Wrappers的设定。
六、NFS安全
NFS的不安全性主要体现于以下4个方面:
1、新手对NFS的访问控制机制难于做到得心应手,控制目标的精确性难以实现
2、NFS没有真正的用户验证机制,而只有对RPC/Mount请求的过程验证机制
3、较早的NFS可以使未授权用户获得有效的文件句柄
4、在RPC远程调用中,一个SUID的程序就具有超级用户权限.
加强NFS安全的方法:
1、合理的设定/etc/exports中共享出去的目录,最好能使用anonuid,anongid以使MOUNT到NFS SERVER的CLIENT仅仅有最小的权限,最好不要使用root_squash。
2、使用IPTABLE防火墙限制能够连接到NFS SERVER的机器范围
iptables -A INPUT -i eth0 -p TCP -s 192.168.0.0/24 --dport 111 -j ACCEPT
iptables -A INPUT -i eth0 -p UDP -s 192.168.0.0/24 --dport 111 -j ACCEPT
iptables -A INPUT -i eth0 -p TCP -s 140.0.0.0/8 --dport 111 -j ACCEPT
iptables -A INPUT -i eth0 -p UDP -s 140.0.0.0/8 --dport 111 -j ACCEPT
3、为了防止可能的Dos攻击,需要合理设定NFSD 的COPY数目。
4、修改/etc/hosts.allow和/etc/hosts.deny达到限制CLIENT的目的
/etc/hosts.allow
portmap: 192.168.0.0/255.255.255.0 : allow
portmap: 140.116.44.125 : allow
/etc/hosts.deny
portmap: ALL : deny
5、改变默认的NFS 端口
NFS默认使用的是111端口,但同时你也可以使用port参数来改变这个端口,这样就可以在一定程度上增强安全性。
6、使用Kerberos V5作为登陆验证系统
#资料2
下面是一些NFS共享的常用参数:
ro:只读访问
rw:读写访问
sync:所有数据在请求时写入共享
async:NFS在写入数据前可以相应请求
secure:NFS通过1024以下的安全TCP/IP端口发送
insecure:NFS通过1024以上的端口发送
wdelay:如果多个用户要写入NFS目录,则归组写入(默认)
no_wdelay:如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。
hide:在NFS共享目录中不共享其子目录
no_hide:共享NFS目录的子目录
subtree_check:如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)
no_subtree_check:和上面相对,不检查父目录权限
all_squash:共享文件的UID和GID映射匿名用户anonymous,适合公用目录。
no_all_squash:保留共享文件的UID和GID(默认)
root_squash:root用户的所有请求映射成如anonymous用户一样的权限(默认)
no_root_squas:root用户具有根目录的完全管理访问权限
anonuid=xxx:指定NFS服务器/etc/passwd文件中匿名用户的UID
anongid=xxx:指定NFS服务器/etc/passwd文件中匿名用户的GID
#光驱的挂载
mount -t iso9660 /dev/cdrom /mnt/cdrom
umount /mnt/cdrom/
#弹出与关闭光驱
eject -n --显示默认的弹出设备
eject 如果有多个光驱,则需要指定要弹出的设备文件名
eject -t 关闭光盘驱动器
fstab中通常会有光驱的加载参数,所以可以简化
grep cdrom /etc/fstab
用
mount /mnt/cdrom
umount /mnt/cdrom
#制作ISO文件
cp /dev/cdrom mycd.iso
#使用目录文件制作ISO文件
mkisofs -r -o myhome.iso /home
#装载ISO文件
mount -o loop mycd.iso /mnt/cdrom/
#制作启动软盘
mkbootdisk --device /dev/fd0 'uname -r'
#制作软盘镜像文件
cp /dev/fd0 镜像文件名
#从镜像文件制作软盘
cp 软盘镜像文件名 /dev/fd0
挂载镜像文件
mount -o loop boot.img /mnt/floppy/
#vsftp
vsftpd的配置文件有三个,分别是
/etc/vsftpd/vsftpd.conf
/etc/vsftpd.ftpusers
/etc/vsftpd.user_list
其中,/etc/vsftpd/vsftpd.conf是主配置文件。/etc/vsftpd.ftpusers中指定了哪些用户不能访问FTP服务器。/etc/vsftpd.user_list中指定的用户默认情况(即在/etc/vsftpd/vsftpd.conf中设置了userlist_deny=YES)下也不能访问FTP服务器,当在/etc/vsftpd/vsftpd.conf中设置了userlist_deny=NO时,仅仅允许/etc/vsftpd.user_list中指定的用户访问FTP服务器。
为vsftp添加虚拟用户,即添加的用户不能登录系统,而只能登录vsftp
adduser testftp,增加测试用户testftp
vi /etc/passwd找到testftp用户的那一行,即:
testftp:x:500:500::/home/testftp:/bin/bash
修改为:
testftp:x:500:50:FTP User:/home/testftp:/sbin/nologin
其中:testftp表示用户名;x表示加密;500表示UID;50表示GID,这里50表示FTP组;FTP User表示对用户的说明;/home/testftp表示用户的主目录;/bin/bash表示用户登录系统后首先启动的shell,nologin表示不能登录系统。
也可以直接修改
adduser -g ftp -s /sbin/nologin testftp
把某一用户限制在自己的目录中
修改/etc/vsftpd/vsftpd.conf文件中chroot_list_file(默认为/etc/vsftpd.chroot_list),把要限制的用户名加进去即可。
还要启用chroot_list_enable=YES,即把默认前面的#号去掉。
但如果修改chroot_local_user=YES,会把所有用户全限制在自己的目录中。
但chroot_list_file则反面有浏览全局的功能。
打开vsFTP服务器的日志功能
把下面xferlog_file前面的#号对掉,把vsftp的log功能打开,这样我们就能在/var/log目录下查看vsftpd.log。
让vsFTP服务器限制链接数,以及每个IP最大的链接数
在/etc/vsftpd/vsftpd.conf中加入下面的两行
max_clients=数字 //表示vsFTP最大支持连接数
max_per_ip=数字 //每个IP最大支持的连接数。
如:让vsFTP最大支持链接数为10个,每个IP最多能支持5个链接,所以我们应该在vsftpd.conf中加上如下的两行:
max_clients=10
max_per_ip=5
限制下载的速度
anon_max_rate=数字 //匿名的下载速度
local_max_rate=数字 //vsFTP服务器上普通用户的下载速度
注:数字的单位是字节。比如让匿名用户和vsFTP上的用户都以20KB下载,所以这个数字应该是1024x20=20480
所以我们要在vsftpd.conf中加入下面的两行
anon_max_rate=20480
local_max_rate=20480
改变帐号的目录到其它地方。默认帐号ftp的目录是/var/ftp,新建的用户的默认目录是在“/home/用户名”下面。现在让我们来改变这二个目录,有二种方法可以改变这个目录:
第一种方法:修改/etc/passwd文件.
1、执行vi /etc/passwd
2、找到ftp那一行:
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
这句话的含义在上面已说,这里不赘述。把/var/ftp改成你想要作为ftp用户目录。比如我这里改成/f
ftp:x:14:50:FTP User:/f:/sbin/nologin。 至于其它新建用户也同理可改变其默认目录。
第二种方法:添加用户时改变默认目录
1、新建一个文件夹跟用户:
[root@stdio root]# mkdir /mnt/ftp1 //新建一个文件夹作为用户ftp1的目录
[root@stdio root]# adduser -d /mnt/ftp1 -g ftp -s /sbin/nologin ftp1
2、改变权限
[root@stdio root]#chmod 755 /mnt/ftp1
3、同时可以改变系统默认ftp用户ftp的目录。
删除ftp用户
#userdel -r ftp
[root@stdio root]# adduser -d /mnt/ftp -g ftp -s /sbin/nologin ftp
定制登录的欢迎信息。
vi /etc/vsftpd/vsftpd.conf找到
dirmessage_enable=YES
把前面的#去掉。
在用户目录下新建一个文件.message,在这个文件下添加你想要的用户登录时看到的信息!
vsftpd配置:
/etc/vsftpd.conf :
anonymous_enable=YES
#允许匿名访问
local_enable=YES
#允许本地用户访问(/etc/passwd中的用户)
write_enable=YES
#允许写入权限,包括修改,删除
local_umask=022
#本地用户文件上传后的权限是-rw-r-r
#anon_umask=077
#匿名用户上传后权限是-rw----
anon_world_readable_only=YES
#允许匿名用户浏览,下载文件
anon_upload_enable=YES
#允许匿名用户上传
#anon_mkdir_write_enable=YES
#允许匿名用户建立目录
anon_other_write_enable=YES
#允许匿名用户具有建立目录,上传之外的权限,如重命名,删除
dirmessage_enable=YES
#当使用者转换目录,则会显示该目录下的.message信息
xferlog_enable=YES
#记录s使用者所有上传下载信息
xferlog_file=/var/log/vsftpd.log
#将上传下载信息记录到/var/log/vsftpd.log中
connect_from_port_20=YES
#确保ftp-datad 数据传送使用port 20
idle_session_timeout=600
#如果使用者600秒没有动作,则踢出
chroot_list_enable=YES
#限制使用者不能离开家目录,例如blue登陆后位于/home/blue下,设置该选项后,他不可以转到/home/blue的上层目录,如/bin, /usr,/opt...etc。
chroot_list_file=/etc/vsftpd.chroot_list
#与上条同时使用,设置限制使用者的存放文件为/etc/vsftpd.chroot_list
#建立文本文件/etc/vsftpd.chroot_list,写入要限制的用户,一行一个。
#如果希望限制所有用户,则可以设置chroot_local_user=YES 代替上面两行
tcp_wrappers=YES
#支持tcp_wrappers,限制访问(/etc/hosts.allow,/etc/hosts.deny)
listen=YES
#使用standalone启动vsftpd,而不是super daemon(xinetd)控制它 (vsftpd推荐使用standalone方式)
listen_port=21
#ftp监听端口
userlist_enable=YES
userlist_deny=YES
userlist_file=/etc/vsftpd.user_list
#以上三条设定不允许登陆的用户,用户列表存放在/etc/vsftpd.user_list中,一行一个帐号
pam_service_name=vsftpd
#PAM 所使用的名称.同userlist_*一样限制用户登陆,不同的是userlist_*在进行密码验证之前拒绝用户登陆,pam是在密码验证之后拒绝登陆.(提示密码错误) 用户列表默认存放在/etc/ftpusers中,一行一个. (可通过/etc/pam.d/vsftpd重定向用户列表存放文件)
#获得 /etc/pam.d/vsftpd:
#[root@LFS vsftpd-2.0.1]#cp RedHat/vsftpd.pam /etc/pam.d/vsftpd
max_clients=100
#最大用户在线数量
max_per_ip=2
#每ip最大线程
anon_max_rate=30000
#匿名用户最大传输速度 单位: bytes/秒
local_max_rate=50000
#本地用户最大传输速度 单位:bytes/秒
user_config_dir=/etc/userconf
#个别用户配置目录(用来设定特殊帐号),例如我想让blue这个用户的传输速度是100KB
就可以在/etc/userconf/下创建文本文件blue(与用户名相同),加入local_max_rate=100000即可
anon_root=/var/ftp
#设定匿名用户登陆后所在的目录
local_root=/var/local_user
#设定所有本地用户登陆后的目录,如不设置此项,则本地用户登陆后位于各自家目录下。
use_localtime=YES
#使用本地时间而不是GMT
nopriv_user=vsftpd
#设定服务执行者为vsftpd,默认使用的是nobody,vsftpd推荐使用一个权限很低的用户.这里用vsftpd代替nobody,创建 vsftpd用户:
[root@LFS vsftpd-2.0.1]#groupadd vsftpd
[root@LFS vsftpd-2.0.1]#useradd -d /dev/null -g vsftpd -s /bin/false vsftpd
这样就有了个权限非常低的vsftpd用户(没有家目录(/dev/null),没有登陆shell(/bin/false),系统会更安全,设定好后就可以启动啦 :)
############如何让root用户可以登陆ftp
修改 /etc目录下 vsftpd.ftpusers vsftpd.user_list 文件,把root屏蔽掉。
修改 /etc/vsftpd目录下的 vsftpd.conf 文件,把
chroot_local_user=YES
chroot_list_enable=YES
屏蔽掉。
重启服务即可。
chroot_list_enable=YES,可以用一个列表限定哪些本地用户只能在自己目录下活动,如果chroot_local_user=YES,那么这个列表里指定的用户是不受限制的。
################增加swap分区的方法
fdisk -l
1,如果有空余硬盘空间,用fdisk将硬盘单独作出一个分区,并且用fdisk中的选项“t”将id号改为82
#mkswap /dev/hdn n为分区号
#swapon /dev/hdn
在分区后会提示你重启才会take effect?
#swapoff /dev/hdn 卸载
#vi /etc/fstab
在其中添加一行 /dev/hdn swap swap defaults 0 0 这样就可以在启动的时候自动加载了!
用free就可以看出变化的。
2,
1.查看系统Swap空间使用
[root@jumper usr]# free
total used free shared buffers cached
Mem: 513980 493640 20340 0 143808 271780
-/+ buffers/cache: 78052 435928
Swap: 1052248 21256 1030992
2.在空间合适处创建swap文件
[root@jumper usr]# mkdir swap
[root@jumper usr]# cd swap
[root@jumper swap]# dd if=/dev/zero of=swapfile bs=1024 count=10000(表示10M)
10000+0 records in
10000+0 records out
[root@jumper swap]# ls -al
total 10024
drwxr-xr-x 2 root root 4096 7月 28 14:58 .
drwxr-xr-x 19 root root 4096 7月 28 14:57 ..
-rw-r--r-- 1 root root 10240000 7月 28 14:58 swapfile
[root@jumper swap]# mkswap swapfile
Setting up swapspace version 1, size = 9996 KiB
3.激活swap文件
[root@jumper swap]# swapon swapfile
[root@jumper swap]# ls -l
total 10016
-rw-r--r-- 1 root root 10240000 7月 28 14:58 swapfile
[root@jumper swap]# free
total used free shared buffers cached
Mem: 513980 505052 8928 0 143900 282288
-/+ buffers/cache: 78864 435116
Swap: 1062240 21256 1040984
[root@jumper swap]#
RedHat Linux常见日志文件和常用命令
成功地管理任何系统的关键之一,是要知道系统中正在发生什么事。Linux 中提供了异常日志,并且日志的细节是可配置的。Linux 日志都以明文形式存储,所以用户不需要特殊的工具就可以搜索和阅读它们。还可以编写脚本,来扫描这些日志,并基于它们的内容去自动执行某些功能。 Linux 日志存储在 /var/log 目录中。这里有几个由系统维护的日志文件,但其他服务和程序也可能会把它们的日志放在这里。大多数日志只有root账户才可以读,不过修改文件的访问权限就可以让其他人可读。
RedHat Linux常用的日志文件
RedHat Linux常见的日志文件详述如下
/var/log/boot.log
该文件记录了系统在引导过程中发生的事件,就是Linux系统开机自检过程显示的信息。
/var/log/cron
该日志文件记录crontab守护进程crond所派生的子进程的动作,前面加上用户、登录时间和PID,以及派生出的进程的动作。CMD的一个动作是cron派生出一个调度进程的常见情况。REPLACE(替换)动作记录用户对它的cron文件的更新,该文件列出了要周期性执行的任务调度。 RELOAD动作在REPLACE动作后不久发生,这意味着cron注意到一个用户的cron文件被更新而cron需要把它重新装入内存。该文件可能会查到一些反常的情况。
/var/log/maillog
该日志文件记录了每一个发送到系统或从系统发出的电子邮件的活动。它可以用来查看用户使用哪个系统发送工具或把数据发送到哪个系统。下面是该日志文件的片段:
QUOTE:
Sep 4 17:23:52 UNIX sendmail[1950]: g849Npp01950: from=root, size=25,
class=0, nrcpts=1,
msgid=<>,
Sep 4 17:23:55 UNIX sendmail[1950]: g849Npp01950: ,
ctladdr=root (0/0), delay=00:00:04, xdelay=00:00:03, mailer=esmtp, pri=30025,
relay=fcceec.net. [10.152.8.2], dsn=2.0.0, stat=Sent (Message queued)
/var/log/messages
该日志文件是许多进程日志文件的汇总,从该文件可以看出任何入侵企图或成功的入侵。如以下几行:
QUOTE:
Sep 3 08:30:17 UNIX login[1275]: FAILED LOGIN 2 FROM (null) FOR suying,
Authentication failure
Sep 4 17:40:28 UNIX -- suying[2017]: LOGIN ON pts/1 BY suying FROM
fcceec.
Sep 4 17:40:39 UNIX su(pam_unix)[2048]: session opened for user root by suying(uid=999)
该文件的格式是每一行包含日期、主机名、程序名,后面是包含PID或内核标识的方括号、一个冒号和一个空格,最后是消息。该文件有一个不足,就是被记录的入侵企图和成功的入侵事件,被淹没在大量的正常进程的记录中。但该文件可以由 /etc/syslog文件进行定制。由 /etc/syslog.conf配置文件决定系统如何写入/var/messages。有关如何配置/etc/syslog.conf文件决定系统日志记录的行为,将在后面详细叙述。
/var/log/syslog
默认RedHat Linux不生成该日志文件,但可以配置/etc/syslog.conf让系统生成该日志文件。它和/etc/log/messages日志文件不同,它只记录警告信息,常常是系统出问题的信息,所以更应该关注该文件。要让系统生成该日志文件,在/etc/syslog.conf文件中加上: *.warning /var/log/syslog 该日志文件能记录当用户登录时login记录下的错误口令、Sendmail的问题、su命令执行失败等信息。下面是一条记录:
QUOTE:
Sep 6 16:47:52 UNIX login(pam_unix)[2384]: check pass; user unknown
/var/log/secure
该日志文件记录与安全相关的信息。该日志文件的部分内容如下:
QUOTE:
Sep 4 16:05:09 UNIX xinetd[711]: START: ftp pid=1815 from=127.0.0.1
Sep 4 16:05:09 UNIX xinetd[1815]: USERID: ftp OTHER :root
Sep 4 16:07:24 UNIX xinetd[711]: EXIT: ftp pid=1815 duration=135(sec)
Sep 4 16:10:05 UNIX xinetd[711]: START: ftp pid=1846 from=127.0.0.1
Sep 4 16:10:05 UNIX xinetd[1846]: USERID: ftp OTHER :root
Sep 4 16:16:26 UNIX xinetd[711]: EXIT: ftp pid=1846 duration=381(sec)
Sep 4 17:40:20 UNIX xinetd[711]: START: telnet pid=2016 from=10.152.8.2
/var/log/lastlog
该日志文件记录最近成功登录的事件和最后一次不成功的登录事件,由login生成。在每次用户登录时被查询,该文件是二进制文件,需要使用 lastlog命令查看,根据UID排序显示登录名、端口号和上次登录时间。如果某用户从来没有登录过,就显示为"**Never logged in**"。该命令只能以root权限执行。简单地输入lastlog命令后就会看到类似如下的信息:
QUOTE:
Username Port From Latest
root tty2 Tue Sep 3 08:32:27 +0800 2002
bin **Never logged in**
daemon **Never logged in**
adm **Never logged in**
lp **Never logged in**
sync **Never logged in**
shutdown **Never logged in**
halt **Never logged in**
mail **Never logged in**
news **Never logged in**
uucp **Never logged in**
operator **Never logged in**
games **Never logged in**
gopher **Never logged in**
ftp ftp UNIX Tue Sep 3 14:49:04 +0800 2002
nobody **Never logged in**
nscd **Never logged in**
mailnull **Never logged in**
ident **Never logged in**
rpc **Never logged in**
rpcuser **Never logged in**
xfs **Never logged in**
gdm **Never logged in**
postgres **Never logged in**
apache **Never logged in**
lzy tty2 Mon Jul 15 08:50:37 +0800 2002
suying tty2 Tue Sep 3 08:31:17 +0800 2002
系统账户诸如bin、daemon、adm、uucp、mail等决不应该登录,如果发现这些账户已经登录,就说明系统可能已经被入侵了。若发现记录的时间不是用户上次登录的时间,则说明该用户的账户已经泄密了。
/var/log/wtmp
该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件。因此随着系统正常运行时间的增加,该文件的大小也会越来越大,增加的速度取决于系统用户登录的次数。该日志文件可以用来查看用户的登录记录,last命令就通过访问这个文件获得这些信息,并以反序从后向前显示用户的登录记录,last也能根据用户、终端 tty或时间显示相应的记录。
命令last有两个可选参数:
last -u 用户名 显示用户上次登录的情况。
last -t 天数 显示指定天数之前的用户登录情况。
/var/run/utmp
该日志文件记录有关当前登录的每个用户的信息。因此这个文件会随着用户登录和注销系统而不断变化,它只保留当时联机的用户记录,不会为用户保留永久的记录。系统中需要查询当前用户状态的程序,如 who、w、users、finger等就需要访问这个文件。该日志文件并不能包括所有精确的信息,因为某些突发错误会终止用户登录会话,而系统没有及时更新 utmp记录,因此该日志文件的记录不是百分之百值得信赖的。
以上提及的3个文件(/var/log/wtmp、 /var/run/utmp、/var/log/lastlog)是日志子系统的关键文件,都记录了用户登录的情况。这些文件的所有记录都包含了时间戳。这些文件是按二进制保存的,故不能用less、cat之类的命令直接查看这些文件,而是需要使用相关命令通过这些文件而查看。其中,utmp和wtmp文件的数据结构是一样的,而lastlog文件则使用另外的数据结构,关于它们的具体的数据结构可以使用man命令查询。
每次有一个用户登录时,login程序在文件lastlog中查看用户的UID。如果存在,则把用户上次登录、注销时间和主机名写到标准输出中,然后 login程序在lastlog中记录新的登录时间,打开utmp文件并插入用户的utmp记录。该记录一直用到用户登录退出时删除。utmp文件被各种命令使用,包括who、w、users和finger。
下一步,login程序打开文件wtmp附加用户的utmp记录。当用户登录退出时,具有更新时间戳的同一utmp记录附加到文件中。wtmp文件被程序last使用。
/var/log/xferlog
该日志文件记录FTP会话,可以显示出用户向FTP服务器或从服务器拷贝了什么文件。该文件会显示用户拷贝到服务器上的用来入侵服务器的恶意程序,以及该用户拷贝了哪些文件供他使用。
该文件的格式为:第一个域是日期和时间,第二个域是下载文件所花费的秒数、远程系统名称、文件大小、本地路径名、传输类型(a:ASCII,b:二进制)、与压缩相关的标志或tar,或"_"(如果没有压缩的话)、传输方向(相对于服务器而言:i代表进,o代表出)、访问模式(a:匿名,g:输入口令,r:真实用户)、用户名、服务名(通常是ftp)、认证方法(l:RFC931,或0),认证用户的ID或"*"。下面是该文件的一条记录:
QUOTE:
Wed Sep 4 08:14:03 2002 1 UNIX 275531
/var/ftp/lib/libnss_files-2.2.2.so b _ o a ftp 0 * c
/var/log/kernlog
RedHat Linux默认没有记录该日志文件。要启用该日志文件,必须在/etc/syslog.conf文件中添加一行:kern.* /var/log/kernlog 。这样就启用了向/var/log/kernlog文件中记录所有内核消息的功能。该文件记录了系统启动时加载设备或使用设备的情况。一般是正常的操作,但如果记录了没有授权的用户进行的这些操作,就要注意,因为有可能这就是恶意用户的行为。下面是该文件的部分内容:
QUOTE:
Sep 5 09:38:42 UNIX kernel: NET4: Linux TCP/IP 1.0 for NET4.0
Sep 5 09:38:42 UNIX kernel: IP Protocols: ICMP, UDP, TCP, IGMP
Sep 5 09:38:42 UNIX kernel: IP: routing cache hash table of 512 buckets, 4Kbytes
Sep 5 09:38:43 UNIX kernel: TCP: Hash tables configured (established 4096 bind 4096)
Sep 5 09:38:43 UNIX kernel: Linux IP multicast router 0.06 plus PIM-SM
Sep 5 09:38:43 UNIX kernel: NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
Sep 5 09:38:44 UNIX kernel: EXT2-fs warning: checktime reached, running e2fsck is recommended
Sep 5 09:38:44 UNIX kernel: VFS: Mounted root (ext2 filesystem).
Sep 5 09:38:44 UNIX kernel: SCSI subsystem driver Revision: 1.00
/var/log/Xfree86.x.log
该日志文件记录了X-Window启动的情况。另外,除了/var/log/ 外,恶意用户也可能在别的地方留下痕迹,应该注意以下几个地方:root 和其他账户的shell历史文件;用户的各种邮箱,如.sent、mbox,以及存放在/var/spool/mail/ 和 /var/spool/mqueue中的邮箱;临时文件/tmp、/usr/tmp、/var/tmp;隐藏的目录;其他恶意用户创建的文件,通常是以 "."开头的具有隐藏属性的文件等。
具体命令
wtmp和utmp文件都是二进制文件,它们不能被诸如tail之类的命令剪贴或合并(使用cat命令)。用户需要使用who、w、users、last和ac等命令来使用这两个文件包含的信息。
who命令
who命令查询utmp文件并报告当前登录的每个用户。who的默认输出包括用户名、终端类型、登录日期及远程主机。例如,键入who命令,然后按回车键,将显示如下内容:
QUOTE:
chyang pts/0 Aug 18 15:06
ynguo pts/2 Aug 18 15:32
ynguo pts/3 Aug 18 13:55
lewis pts/4 Aug 18 13:35
ynguo pts/7 Aug 18 14:12
ylou pts/8 Aug 18 14:15
如果指明了wtmp文件名,则who命令查询所有以前的记录。命令who /var/log/wtmp将报告自从wtmp文件创建或删改以来的每一次登录。
w命令
w命令查询utmp文件并显示当前系统中每个用户和它所运行的进程信息。例如,键入w命令,然后按回车键,将显示如下内容:
QUOTE:
3:36pm up 1 day, 22:34, 6 users, load average: 0.23, 0.29, 0.27
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
chyang pts/0 202.38.68.242 3:06pm 2:04 0.08s 0.04s -bash
ynguo pts/2 202.38.79.47 3:32pm 0.00s 0.14s 0.05 w
lewis pts/3 202.38.64.233 1:55pm 30:39 0.27s 0.22s -bash
lewis pts/4 202.38.64.233 1:35pm 6.00s 4.03s 0.01s sh /home/users/
ynguo pts/7 simba.nic.ustc.e 2:12pm 0.00s 0.47s 0.24s telnet mail
ylou pts/8 202.38.64.235 2:15pm 1:09m 0.10s 0.04s -bash
users命令
users命令用单独的一行打印出当前登录的用户,每个显示的用户名对应一个登录会话。如果一个用户有不止一个登录会话,那他的用户名将显示相同的次数。例如,键入users命令,然后按回车键,将显示如下内容:
QUOTE:
chyang lewis lewis ylou ynguo ynguo
last命令
last命令往回搜索wtmp来显示自从文件第一次创建以来登录过的用户。例如:
QUOTE:
chyang pts/9 202.38.68.242 Tue Aug 1 08:34 - 11:23 (02:49)
cfan pts/6 202.38.64.224 Tue Aug 1 08:33 - 08:48 (00:14)
chyang pts/4 202.38.68.242 Tue Aug 1 08:32 - 12:13 (03:40)
lewis pts/3 202.38.64.233 Tue Aug 1 08:06 - 11:09 (03:03)
lewis pts/2 202.38.64.233 Tue Aug 1 07:56 - 11:09 (03:12)
如果指明了用户,那么last只报告该用户的近期活动,例如,键入last ynguo命令,然后按回车键,将显示如下内容:
QUOTE:
ynguo pts/4 simba.nic.ustc.e Fri Aug 4 16:50 - 08:20 (15:30)
ynguo pts/4 simba.nic.ustc.e Thu Aug 3 23:55 - 04:40 (04:44)
ynguo pts/11 simba.nic.ustc.e Thu Aug 3 20:45 - 22:02 (01:16)
ynguo pts/0 simba.nic.ustc.e Thu Aug 3 03:17 - 05:42 (02:25)
ynguo pts/0 simba.nic.ustc.e Wed Aug 2 01:04 - 03:16 1+02:12)
ynguo pts/0 simba.nic.ustc.e Wed Aug 2 00:43 - 00:54 (00:11)
ynguo pts/9 simba.nic.ustc.e Thu Aug 1 20:30 - 21:26 (00:55)
ac命令
ac命令根据当前的/var/log/wtmp文件中的登录进入和退出来报告用户连接的时间(小时),如果不使用标志,则报告总的时间。例如,键入ac命令,然后按回车键,将显示如下内容:
QUOTE:
total 5177.47
键入ac -d命令,然后按回车键,将显示每天的总的连接时间:
QUOTE:
Aug 12 total 261.87
Aug 13 total 351.39
Aug 14 total 396.09
Aug 15 total 462.63
Aug 16 total 270.45
Aug 17 total 104.29
Today total 179.02
键入ac -p命令,然后按回车键,将显示每个用户的总的连接时间:
QUOTE:
ynguo 193.23
yucao 3.35
rong 133.40
hdai 10.52
zjzhu 52.87
zqzhou 13.14
liangliu 24.34
total 5178.24
lastlog命令
lastlog文件在每次有用户登录时被查询。可以使用lastlog命令检查某特定用户上次登录的时间,并格式化输出上次登录日志 /var/log/lastlog的内容。它根据UID排序显示登录名、端口号(tty)和上次登录时间。如果一个用户从未登录过,lastlog显示 **Never logged**。注意需要以root身份运行该命令,例如:
QUOTE:
rong 5 202.38.64.187 Fri Aug 18 15:57:01 +0800 2000
dbb **Never logged in**
xinchen **Never logged in**
pb9511 **Never logged in**
xchen 0 202.38.64.190 Sun Aug 13 10:01:22 +0800 2000
另外,可加一些参数,例如,"last -u 102"命令将报告UID为102的用户;"last -t 7"命令表示限制为上一周的报告。
进程统计
UNIX可以跟踪每个用户运行的每条命令,如果想知道昨晚弄乱了哪些重要的文件,进程统计子系统可以告诉你。它还对跟踪一个侵入者有帮助。与连接时间日志不同,进程统计子系统默认不激活,它必须启动。在Linux系统中启动进程统计使用accton命令,必须用root身份来运行。accton命令的形式为:accton file,file必须事先存在。先使用touch命令创建pacct文件:touch /var/log/pacct,然后运行accton:accton /var/log/pacct。一旦accton被激活,就可以使用lastcomm命令监测系统中任何时候执行的命令。若要关闭统计,可以使用不带任何参数的accton命令。
lastcomm命令报告以前执行的文件。不带参数时,lastcomm命令显示当前统计文件生命周期内记录的所有命令的有关信息。包括命令名、用户、tty、命令花费的CPU时间和一个时间戳。如果系统有许多用户,输入则可能很长。看下面的例子:
QUOTE:
crond F root ?? 0.00 secs Sun Aug 20 00:16
promisc_check.s S root ?? 0.04 secs Sun Aug 20 00:16
promisc_check root ?? 0.01 secs Sun Aug 20 00:16
grep root ?? 0.02 secs Sun Aug 20 00:16
tail root ?? 0.01 secs Sun Aug 20 00:16
sh root ?? 0.01 secs Sun Aug 20 00:15
ping S root ?? 0.01 secs Sun Aug 20 00:15
ping6.pl F root ?? 0.01 secs Sun Aug 20 00:15
sh root ?? 0.01 secs Sun Aug 20 00:15
ping S root ?? 0.02 secs Sun Aug 20 00:15
ping6.pl F root ?? 0.02 secs Sun Aug 20 00:15
sh root ?? 0.02 secs Sun Aug 20 00:15
ping S root ?? 0.00 secs Sun Aug 20 00:15
ping6.pl F root ?? 0.01 secs Sun Aug 20 00:15
sh root ?? 0.01 secs Sun Aug 20 00:15
ping S root ?? 0.01 secs Sun Aug 20 00:15
sh root ?? 0.02 secs Sun Aug 20 00:15
ping S root ?? 1.34 secs Sun Aug 20 00:15
locate root ttyp0 1.34 secs Sun Aug 20 00:15
accton S root ttyp0 0.00 secs Sun Aug 20 00:15
进程统计的一个问题是pacct文件可能增长得十分迅速。这时需要交互式地或经过cron机制运行sa命令来保证日志数据在系统控制内。sa命令报告、清理并维护进程统计文件。它能把/var/log/pacct中的信息压缩到摘要文件/var/log/savacct和 /var/log/usracct中。这些摘要包含按命令名和用户名分类的系统统计数据。在默认情况下sa先读它们,然后读pacct文件,使报告能包含所有的可用信息。sa的输出有下面一些标记项。
avio:每次执行的平均I/O操作次数。
cp:用户和系统时间总和,以分钟计。
cpu:和cp一样。
k:内核使用的平均CPU时间,以1k为单位。
k*sec:CPU存储完整性,以1k-core秒为单位。
re:实时时间,以分钟计。
s:系统时间,以分钟计。
tio:I/O操作的总数。
u:用户时间,以分钟计。
例如:
QUOTE:
842 173.26re 4.30cp 0avio 358k
2 10.98re 4.06cp 0avio 299k find
9 24.80re 0.05cp 0avio 291k ***other
105 30.44re 0.03cp 0avio 302k ping
104 30.55re 0.03cp 0avio 394k sh
162 0.11re 0.03cp 0avio 413k security.sh*
154 0.03re 0.02cp 0avio 273k ls
56 31.61re 0.02cp 0avio 823k ping6.pl*
2 3.23re 0.02cp 0avio 822k ping6.pl
35 0.02re 0.01cp 0avio 257k md5sum
97 0.02re 0.01cp 0avio 263k initlog
12 0.19re 0.01cp 0avio 399k promisc_check.s
15 0.09re 0.00cp 0avio 288k grep
11 0.08re 0.00cp 0avio 332k awk
用户还可以根据用户而不是命令来提供一个摘要报告。例如,键入命令"sa -m",将显示如下内容:
QUOTE:
885 173.28re 4.31cp 0avk
root 879 173.23re 4.31cp 0avk
alias 3 0.05re 0.00cp 0avk
qmailp 3 0.01re 0.00cp 0avk
syslog设备
syslog已被许多日志函数采纳,它用在许多保护措施中。任何程序都可以通过syslog 记录事件。syslog可以记录系统事件,可以写到一个文件或设备中,或给用户发送一个信息。它能记录本地事件或通过网络记录另一个主机上的事件。
syslog设备依据两个重要的文件:/etc/syslogd(守护进程)和 /etc/syslog.conf配置文件。习惯上,多数syslog 信息被写到/var/adm或/var/log目录下的信息文件中(messages.*)。一个典型的syslog记录包括生成程序的名字和一个文本信息。它还包括一个设备和一个优先级范围(但不在日志中出现)。
每个syslog消息被赋予下面的主要设备之一:
QUOTE:
LOG_AUTH:认证系统login、su、getty等。
LOG_AUTHPRIV:同LOG_AUTH,但只登录到所选择的单个用户可读的文件中。
LOG_CRON:cron守护进程。
LOG_DAEMON:其他系统守护进程,如routed。
LOG_FTP:文件传输协议ftpd、tftpd。
LOG_KERN:内核产生的消息。
LOG_LPR:系统打印机缓冲池lpr、lpd。
LOG_MAIL:电子邮件系统。
LOG_NEWS:网络新闻系统。
LOG_SYSLOG:由syslogd(8)产生的内部消息。
LOG_USER:随机用户进程产生的消息。
LOG_UUCP:UUCP子系统。
LOG_LOCAL0~LOG_LOCAL7:为本地使用保留。
syslog为每个事件赋予几个不同的优先级:
LOG_EMERG:紧急情况。
LOG_ALERT:应该被立即改正的问题,如系统数据库被破坏。
LOG_CRIT:重要情况,如硬盘错误。
LOG_ERR:错误。
LOG_WARNING:警告信息。
LOG_NOTICE:不是错误情况,但是可能需要处理。
LOG_INFO:情报信息。
LOG_DEBUG:包含情报的信息,通常只在调试一个程序时使用。
syslog.conf文件指明syslogd程序记录日志的行为,该程序在启动时查询配置文件。该文件由不同程序或消息分类的单个条目组成,每个占一行。对每类消息提供一个选择域和一个动作域。这些域由tab符隔开:选择域指明消息的类型和优先级;动作域指明syslogd接收到一个与选择标准相匹配的消息时所执行的动作。每个选项是由设备和优先级组成的。当指明一个优先级时, syslogd将记录一个拥有相同或更高优先级的消息。所以如果指明 "crit",那所有标为crit、alert和emerg的消息将被记录。每行的行动域指明当选择域选择了一个给定消息后应该把它发送到哪儿。例如,如果想把所有邮件消息记录到一个文件中,如下所示:
QUOTE:
#Log all the mail messages in one place
mail.* /var/log/maillog
其他设备也有自己的日志。UUCP和news设备能产生许多外部消息。它把这些消息存到自己的日志(/var/log/spooler)中并把级别限为"err"或更高。例如:
QUOTE:
# Save mail and news errors of level err and higher in aspecial file.
uucp,news.crit /var/log/spooler
当一个紧急消息到来时,可能想让所有的用户都得到,也可能想让自己的日志接收并保存:
QUOTE:
#Everybody gets emergency messages, plus log them on anther machine
*.emerg *
*.emerg @linuxaid.com.cn
alert消息应该写到root和tiger的个人账号中:
QUOTE:
#Root and Tiger get alert and higher messages
*.alert root,tiger
有时syslogd将产生大量的消息。例如,内核("kernel"设备)可能很冗长。用户可能想把内核消息记录到/dev/console中。下面的例子表明内核日志记录被注释掉了:
QUOTE:
#Log all kernel messages to the console
#Logging much else clutters up the screen
#kern.* /dev/console
用户可以在一行中指明所有的设备。下面的例子把info或更高级别的消息送到/var/log/messages,除了mail以外。级别"none"禁止一个设备:
QUOTE:
#Log anything(except mail)of level info or higher
#Don't log private authentication messages!
*.info:mail.none;authpriv.none /var/log/messages
在有些情况下,可以把日志送到打印机,这样网络入侵者怎么修改日志就都没有用了。通常要广泛记录日志。syslog设备是一个攻击者的显著目标。一个为其他主机维护日志的系统对于防范服务器攻击特别脆弱,因此要特别注意。
有个小命令logger为syslog(3)系统日志文件提供一个shell命令接口,使用户能创建日志文件中的条目。
用法:logger
例如:logger This is a test!
它将产生一个如下的syslog记录:Aug 19 22:22:34 tiger: This is a test!
注意,不要完全相信日志,因为攻击者很容易修改它的。
程序日志与其他
许多程序通过维护日志来反映系统的安全状态。su命令允许用户获得另一个用户的权限,所以它的安全很重要,它的日志文件为sulog。同样的还有 sudolog。另外,像Apache有两个日志:access_log和error_log。还有一些常用到的其他日志工具,我们就不一一阐述了,有兴趣的读者可以参考下边网址的内容。
QUOTE:
Chklastlog:
chkwtmp:
dump_lastlog:
spar:
Swatch:
Zap:
日志分类方法:
#########################################3
在RHEL4下创建RAW设备( LVM的使用)
Linux下面和Unix下的裸设备稍有不同,Unix下块设备可以直接做裸设备使用,而Linux下还需要通过raw转换一下,而不能直接使用块设备。
1,首先查看分区情况
[root@test-rhel4 ~]# fdisk -l
Disk /dev/sda: 9100 MB, 9100369920 bytes
255 heads, 63 sectors/track, 1106 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 1 8001 41 PPC PReP Boot
/dev/sda2 2 14 104422+ 83 Linux
/dev/sda3 15 79 522112+ 82 Linux swap
/dev/sda4 80 1106 8249377+ 5 Extended
/dev/sda5 80 1106 8249346 83 Linux
Disk /dev/sdb: 73.4 GB, 73407900160 bytes
255 heads, 63 sectors/track, 8924 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
2,在/dev/sdb上建立一个大小为1G的LVM
[root@test-rhel4 ~]# fdisk /dev/sdb
The number of cylinders for this disk is set to 8924.
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): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (1-8924, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-8924, default 8924): +1024M
Command (m for help): t
Selected partition 2
Hex code (type L to list codes): 8e
Changed system type of partition 2 to 8e (Linux LVM)
3,查看并保存分区表
Command (m for help): p
Disk /dev/sdb: 73.4 GB, 73407900160 bytes
255 heads, 63 sectors/track, 8924 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb2 1 125 1004031 8e Linux LVM
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@test-rhel4 ~]#
4,在/dev/sdb2分区上创建物理卷
[root@test-rhel4 ~]# pvdisplay /dev/sdb2
No physical volume label read from /dev/sdb2
Failed to read physical volume "/dev/sdb2"
[root@test-rhel4 ~]# pvcreate /dev/sdb2
Physical volume "/dev/sdb2" successfully created
[root@test-rhel4 ~]# pvdisplay /dev/sdb2
Incorrect metadata area header checksum
--- NEW Physical volume ---
PV Name /dev/sdb2
VG Name
PV Size 980.31 MB
Allocatable NO
PE Size (KByte) 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID Tf6FJu-RW6B-rWHn-xnMW-s9oL-ZO7U-yIcQIE
[root@test-rhel4 ~]#
5,在/dev/sdb2上创建卷组oraVG
[root@test-rhel4 lvm]# vgcreate oraVG /dev/sdb2
Incorrect metadata area header checksum
Incorrect metadata area header checksum
Volume group "oraVG" successfully created
[root@test-rhel4 lvm]#
出现警告,好象是LVM的BUG来的,但不影响使用。
6,创建逻辑卷
[root@test-rhel4 lvm]# lvcreate -L 200m -n test_200m oraVG
Incorrect metadata area header checksum
Logical volume "test_200m" created
[root@test-rhel4 lvm]#
7,建立裸设备
编辑/etc/sysconfig/rawdevices,加入如下内容:
/dev/raw/raw01 /dev/mapper/oraVG-test_200m
运行service rawdevices restart使上面的配置生效
[root@test-rhel4 sysconfig]# service rawdevices restart
Assigning devices:
/dev/raw/raw01 --> /dev/mapper/oraVG-test_200m
/dev/raw/raw1: bound to major 253, minor 0
done
[root@test-rhel4 sysconfig]#
注:直接用
raw /dev/raw/raw1 /dev/mapper/oraVG-test_200m
也是可以的,但是系统重启后就没有了,所以一般需要在 rawdevices里配置好才行。
8,如果是给ORACLE用的,需要修改属主
chown oracle:dba /dev/raw/raw1
由于裸设备是每次开机都需要建立的,系统没有记录/dev/raw/下面文件的信息,所以要把修改属主命令加入到/etc/rc.local中,每次开机都要执行一次。
9,
3.建立Oracle裸设备定义文件
vi DBCA_RAW_CONFIG
加入如下内容:
cwmlite=/dev/raw/raw1
drsys=/dev/raw/raw2
example=/dev/raw/raw3
indx=/dev/raw/raw4
odm=/dev/raw/raw5
system=/dev/raw/raw6
tools=/dev/raw/raw7
undotbs=/dev/raw/raw8
users=/dev/raw/raw9
xdb=/dev/raw/raw10
temp=/dev/raw/raw11
redo1_1=/dev/raw/raw12
redo1_2=/dev/raw/raw13
redo1_3=/dev/raw/raw14
control1=/dev/raw/raw15
control2=/dev/raw/raw16
control3=/dev/raw/raw17
第5步 建立数据库
1.用netca命令启动网络管理器,配置Listener,使用默认配置一路Next直到完成。
2.运行dbca开始建库
当安装时检查到有DBCA_RAW_CONFIG环境变量,并且它指向的文件存在后,安装程序会询问是否需要使用裸设备安装,这里选是就可以了。
oracle安装好像只能要就全部安装在裸设备,要就全部安装在文件系统。本来我打算将控制文件安装在文件系统,因为控制文件很小,一般也就1到2M,而且增长有限,也没有严格的I/O请求,不过安装的时候确提示我控制文件的路径不是合法的裸设备,只好又建了三个LV存放控制文件。不过也许可以通过建连接的方式来安装到裸设备,没有试过。
建库一路Next就可,不过要注意三个问题,第一是这里建库是输入的数据库名可以自己起一个,不过SID一定要与环境变量里面的ORACLE_SID一致,否则后面可能会有问题。第二就是字符集要也要选择和环境变量一致,而且设为中文,否则对中文的存储会成为乱码。第三就是安装的数据文件要仔细看一下是否和先前定义的裸设备一致,我装了几次都发现undotbs会变为默认值,而不会随DBCA_RAW_CONFIG里面的配置改变,要手动改回来,不知道是Bug还是系统不建议undotbs放到裸设备,可是不放到裸设备安装又会报错说安装路径必须裸设备。真是奇怪。
##############################
通过PXE远程安装LINUX
##############################
准备好一台已经安装了Red Hat Enterprise Linux As 的计算机。这台计算机要装有dhcp包和tftp包。如果没有则需要进行安装:
如果在其他机器上已有DHCP服务器,则可以不用安装DHCP软件包。
#rpm -ivh tftp-server-0.39-0.EL3.1.c0.i386.rpm
#rpm -ivh dhcp-3.0.1-10_EL3.i386.rpm
配置NFS服务器
(1) #vi /etc/exports
添加一行:
#/mnt/oracle/software 为要安装的操作系统的ISO文件所在地。
=============+==========+===========+============+============
/mnt/oracle/software *(ro,sync)
=============+==========+===========+============+============
保存退出。
(2)导出这个/mnt/oracle/software这个共享目录
#exportfs –a
(3)启动NFS服务
#service nfs restart
配置dhcp服务器和tftp服务器
1、配置dhcp服务器
#vi /etc/dhcpd.conf
=============+==========+===========+============+============
ddns-update-style interim;
ignore client-updates;
default-lease-time 21600;
max-lease-time 43200;
authourtative;
subnet 192.168.0.0 netmask 255.255.255.0 {
option routers 192.168.0.1;
option subnet-mask 255.255.255.0;
range 192.168.0.18 192.168.0.78;
default-lease-time 21600;
max-lease-time 43200;
filename "/pxelinux.0";
}
=============+==========+===========+============+============
保存退出。
2、配置tftp服务器
#vi /etc/xinetd.d/tftp
=============+==========+===========+============+============
service tftp
{
disable = no
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -u nobody -s /tftpboot
per_source = 11
cps = 100 2
flags = IPv4
}
=============+==========+===========+============+============
这个文件基本上不用改动,但是需要注意的的是server_args= - s /tftpboot这一行,它的含义是将/tftpboot作为root目录,这样在dhcpd.conf中的filename一行就应该写 bootstrap的相对路径: filename “/pxelinux.0”,这是出于安全方面考虑的.如果你去掉了-s这个参数,那幺就要在 filename一行指出bootstrap的绝对路径: filename “/tftpboot/pxelinux.0”.
保存退出。
3、启动dhcp服务和tftp服务
#service dhcpd restart
#chkconfig dhcpd on
#/sbin/chkconfig --level 345 xinetd on
#/sbin/chkconfig --level 345 tftp on
该命令配置 tftp 和 xinetd 服务被立即启用,还把配置它们在运行级别3、4和5的引导期间启动。
配置支持PXE
注意:如果DHCP不在本机,需要在dhcp.conf中指定next-server参数及filename。WINDOWS下同理。
bootstrap文件在dhcpd.conf中被指定为pxelinux.0文件,放置在/tftpboot。Linux内核以及Linux根文件系统也放置在/tftpboot。pxelinux.0在执行过程中,要读配置文件,所有的配置文件都放在/tftpboot/pxelinux.cfg/目录下。由于PXElinux具有为不同的PXE Client提供不同的Linux内核以及根文件系统的功能,所以要通过不同的配置文件名来区分出不同的PXE Client的需求。比如一个PXE Client由DHCP Server分配的IP地址为192.168.0.22,那么相对应的配置文件名为/tftpboot/pxelinux.cfg/C0A80016 (注:C0A80016为IP地址192.168.0.22的十六进制表示)。如果找不到,就按照顺序C0A80016-> C0A8001-> C0A800-> C0A80-> C0A8-> C0A-> C0-> C->default查找配置文件。
# mkdir /tftpboot
(1)# cp /usr/lib/syslinux/pxelinux.0 /tftpboot
(2)把LINUX第一张安装光盘上/image/pxeboot/initr.img和vmlinux 以及isolinux/*.msg考到/tftpboot目录下
# cd /tftpboot
# mkdir pxelinux.cfg
#cd pxelinux.cfg
# vi default
=============+==========+===========+============+============
default linux
prompt 1
timeout 600
display ./pxelinux.cfg/msgs/boot.msg
F1 ./pxelinux.cfg/msgs/boot.msg
F2 ./pxelinux.cfg/msgs/options.msg
F3 ./pxelinux.cfg/msgs/general.msg
F4 ./pxelinux.cfg/msgs/param.msg
F5 ./pxelinux.cfg/msgs/rescue.msg
F7 ./pxelinux.cfg/msgs/snake.msg
label linux
kernel vmlinuz
append initrd=initrd.img ramdisk_size=8192
label text
kernel vmlinuz
append initrd=initrd.img text ramdisk_size=8192
label expert
kernel vmlinuz
append expert initrd=initrd.img ramdisk_size=8192
label ks
kernel vmlinuz
append ks initrd=initrd.img ramdisk_size=8192
label lowres
kernel vmlinuz
append initrd=initrd.img lowres ramdisk_size=8192
label local
localboot 1
label memtest86
kernel memtest
append -
=============+==========+===========+============+============
修改/mnt/hda1/image/logo.16
logo.16文件是启动画面的图象文件,它是特殊的编码格式(lss16 format image)。这图象文件必须是16色,小于50K,小于640x480象素(推荐使用640x400象素,以备足够空间显示提示符)。我们需要使用 GIMP等图象软件制作16色的png格式图象,再通过以下命令转换成lss16格式:
#pngtopnm logo.pnm
#ppmtolss16 logo.16
#cp logo.16 /mnt/hda1/image/logo.16
##############################################
FC6,从本地安装程序
##############################################
mount -r -o loop your_DVD_file.iso /mnt/mount_directory
edit you /etc/yum.repos.d/fedora-core.repo:
[core]
name=Fedora Core $releasever - $basearch
#baseurl=
#mirrorlist=
baseurl=file:/mnt/mount_directory/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora
....
Should be enabled only 1 repo - fedora-core.repo
要把其他的repo文件删除。
Then, your yum should work.
##############################
vm中的fc6成功安装vmware-tool全过程
##############################
1.安装c编译器
2.安装kernel-devel
3.检查kernel跟kernel-devel的版本号
4.两个版本号不一致,进行升级
5.再次检查版本号,还不一致,需要重启。
6.重启后,版本号一致。
7.用ls命令查看匹配kernel的c编译器的header的路径
8.安装vmware-tool
9.选择屏幕分辨率。
10.还要修改xorg config设置
1.安装c编译器
[root@localhost ~]# yum install gcc
Loading "installonlyn" plugin
Setting up Install Process
Setting up repositories
core 100% |=========================| 1.1 kB 00:00
updates 100% |=========================| 951 B 00:00
extras 100% |=========================| 1.1 kB 00:00
Reading repository metadata in from local files
primary.xml.gz 100% |=========================| 824 kB 00:23
################################################## 2242/2242
primary.xml.gz 100% |=========================| 318 kB 00:14
################################################## 1096/1096
primary.xml.gz 100% |=========================| 1.6 MB 00:47
################################################## 5001/5001
Parsing package install arguments
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for gcc to pack into transaction set.
gcc-4.1.1-30.i386.rpm 100% |=========================| 51 kB 00:05
---> Package gcc.i386 0:4.1.1-30 set to be updated
--> Running transaction check
--> Processing Dependency: glibc-devel >= 2.2.90-12 for package: gcc
--> Processing Dependency: libgomp.so.1 for package: gcc
--> Processing Dependency: libgomp = 4.1.1-30 for package: gcc
--> Restarting Dependency Resolution with new changes.
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for glibc-devel to pack into transaction set.
glibc-devel-2.5-3.i386.rp 100% |=========================| 103 kB 00:04
---> Package glibc-devel.i386 0:2.5-3 set to be updated
---> Downloading header for libgomp to pack into transaction set.
libgomp-4.1.1-30.i386.rpm 100% |=========================| 42 kB 00:03
---> Package libgomp.i386 0:4.1.1-30 set to be updated
--> Running transaction check
--> Processing Dependency: glibc-headers = 2.5-3 for package: glibc-devel
--> Processing Dependency: glibc-headers for package: glibc-devel
--> Restarting Dependency Resolution with new changes.
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for glibc-headers to pack into transaction set.
glibc-headers-2.5-3.i386. 100% |=========================| 136 kB 00:11
---> Package glibc-headers.i386 0:2.5-3 set to be updated
--> Running transaction check
Dependencies Resolved
=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
gcc i386 4.1.1-30 core 4.7 M
Installing for dependencies:
glibc-devel i386 2.5-3 core 2.0 M
glibc-headers i386 2.5-3 core 602 k
libgomp i386 4.1.1-30 core 62 k
Transaction Summary
=============================================================================
Install 4 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 7.3 M
Is this ok [y/N]: y
Downloading Packages:
(1/4): gcc-4.1.1-30.i386. 100% |=========================| 4.7 MB 03:13
(2/4): glibc-headers-2.5- 100% |=========================| 602 kB 00:19
(3/4): glibc-devel-2.5-3. 100% |=========================| 2.0 MB 01:22
(4/4): libgomp-4.1.1-30.i 100% |=========================| 62 kB 00:02
warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID 4f2a6fd2
Importing GPG key 0x4F2A6FD2 "Fedora Project <>"
Is this ok [y/N]: y
Importing GPG key 0xDB42A60E "Red Hat, Inc <
security@redhat.com>"
Is this ok [y/N]: y
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing: libgomp ######################### [1/4]
Installing: glibc-headers ######################### [2/4]
Installing: glibc-devel ######################### [3/4]
Installing: gcc ######################### [4/4]
Installed: gcc.i386 0:4.1.1-30
Dependency Installed: glibc-devel.i386 0:2.5-3 glibc-headers.i386 0:2.5-3 libgomp.i386 0:4.1.1-30
Complete!
[root@localhost ~]#
2.安装kernel-devel
[root@localhost ~]#
[root@localhost ~]# yum install kernel-devel
Loading "installonlyn" plugin
Setting up Install Process
Setting up repositories
Reading repository metadata in from local files
Parsing package install arguments
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for kernel-devel to pack into transaction set.
kernel-devel-2.6.18-1.284 100% |=========================| 696 kB 03:38
---> Package kernel-devel.i686 0:2.6.18-1.2849.fc6 set to be installed
--> Running transaction check
Dependencies Resolved
=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
kernel-devel i686 2.6.18-1.2849.fc6 updates 4.6 M
Transaction Summary
=============================================================================
Install 1 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 4.6 M
Is this ok [y/N]: y
Downloading Packages:
(1/1): kernel-devel-2.6.1 100% |=========================| 4.6 MB 20:22
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing: kernel-devel ######################### [1/1]
Installed: kernel-devel.i686 0:2.6.18-1.2849.fc6
Complete!
3.检查kernel跟kernel-devel的版本号
[root@localhost ~]# uname -r
2.6.18-1.2798.fc6
[root@localhost ~]# rpm -q kernel-devel
kernel-devel-2.6.18-1.2849.fc6
4.两个版本号不一致,进行升级
[root@localhost ~]# yum -y upgrade kernel kernel-devel
Loading "installonlyn" plugin
Setting up Upgrade Process
Setting up repositories
core 100% |=========================| 1.1 kB 00:00
updates 100% |=========================| 951 B 00:00
: [Errno 14] HTTP Error 504: Proxy-Connection: Keep-Alive
Connection: Keep-Alive
Content-Length: 3694
Via: 1.1 CL_PROXY
Content-Type: text/html
Pragma: no-cache
Cache-Control: no-cache
Trying other mirror.
extras 100% |=========================| 1.1 kB 00:00
Reading repository metadata in from local files
Could not find update match for kernel-devel
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for kernel to pack into transaction set.
kernel-2.6.18-1.2849.fc6. 100% |=========================| 201 kB 00:02
---> Package kernel.i586 0:2.6.18-1.2849.fc6 set to be installed
--> Running transaction check
Dependencies Resolved
=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
kernel i586 2.6.18-1.2849.fc6 updates 15 M
Transaction Summary
=============================================================================
Install 1 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 15 M
Downloading Packages:
(1/1): kernel-2.6.18-1.28 100% |=========================| 15 MB 07:42
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing: kernel ######################### [1/1]
Installed: kernel.i586 0:2.6.18-1.2849.fc6
Complete!
5.再次检查版本号,还不一致,需要重启。
[root@localhost ~]# uname -r
2.6.18-1.2798.fc6
[root@localhost ~]# rpm -q kernel-devel
kernel-devel-2.6.18-1.2849.fc6
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# reboot
6.重启后,版本号一致。
[root@localhost ~]# uname -r
2.6.18-1.2849.fc6
[root@localhost ~]# rpm -q kernel-devel
kernel-devel-2.6.18-1.2849.fc6
[root@localhost ~]#
7.用ls命令查看匹配kernel的c编译器的header的路径
[root@localhost ~]#
[root@localhost ~]# ls -d /usr/src/kernels/$(uname -r)*/include
/usr/src/kernels/2.6.18-1.2849.fc6-i686/include(记住该路径,安装vmware-tool时需要用到)
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]#
8.安装vmware-tool。先释放鼠标,在vmware中选择安装vmware-tool,进入fc6,打开光驱,拷贝VMware- workstation-5.5.2-29772.tar.gz,将其解压到任何位置。解压后,双击vmware-install.pl,选择在终端运行,然后一直按默认设置,一路按回车键。
A previous installation of VMware software has been detected.
The previous installation was made by the tar installer (version 3).
Keeping the tar3 installer database format.
Uninstalling the tar installation of VMware Tools.
Stopping VMware Tools services in the virtual machine:
Guest operating system daemon: [确定]
File /etc/X11/xorg.conf is backed up to /etc/X11/xorg.conf.old.0.
File /etc/modprobe.conf is backed up to /etc/modprobe.conf.old.0.
The removal of VMware Tools 5.5.3 build-34685 for Linux completed successfully.
Thank you for having tried this software.
Installing the content of the package.
In which directory do you want to install the binary files?
[/usr/bin]
What is the directory that contains the init directories (rc0.d/ to rc6.d/)?
[/etc/rc.d]
What is the directory that contains the init scripts?
[/etc/rc.d/init.d]
In which directory do you want to install the daemon files?
[/usr/sbin]
In which directory do you want to install the library files?
[/usr/lib/vmware-tools]
The path "/usr/lib/vmware-tools" does not exist currently. This program is
going to create it, including needed parent directories. Is this what you want?
[yes]
In which directory do you want to install the documentation files?
[/usr/share/doc/vmware-tools]
The path "/usr/share/doc/vmware-tools" does not exist currently. This program
is going to create it, including needed parent directories. Is this what you
want? [yes]
The installation of VMware Tools 5.5.3 build-34685 for Linux completed
successfully. You can decide to remove this software from your system at any
time by invoking the following command: "/usr/bin/vmware-uninstall-tools.pl".
Before running VMware Tools for the first time, you need to configure it by
invoking the following command: "/usr/bin/vmware-config-tools.pl". Do you want
this program to invoke the command for you now? [yes] (运行vmware-config-tools来配置)
Stopping VMware Tools services in the virtual machine:
Guest operating system daemon: [确定]
Trying to find a suitable vmhgfs module for your running kernel.
None of the pre-built vmhgfs modules for VMware Tools is suitable for your
running kernel. Do you want this program to try to build the vmhgfs module for
your system (you need to have a C compiler installed on your system)? [yes]
Using compiler "/usr/bin/gcc". Use environment variable CC to override.
9.直到该步骤,拷贝粘贴第7步的路径,然后一直按回车,直到选择屏幕分辨率。
What is the location of the directory of C header files that match your running
kernel? [/usr/src/kernels/2.6.18-1.2849.fc6-i686/include]
Extracting the sources of the vmhgfs module.
Building the vmhgfs module.
Using 2.6.x kernel build system.
make: Entering directory `/tmp/vmware-config3/vmhgfs-only'
make -C /usr/src/kernels/2.6.18-1.2849.fc6-i686/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules
make[1]: Entering directory `/usr/src/kernels/2.6.18-1.2849.fc6-i686'
CC [M] /tmp/vmware-config3/vmhgfs-only/cpName.o
CC [M] /tmp/vmware-config3/vmhgfs-only/cpNameLinux.o
CC [M] /tmp/vmware-config3/vmhgfs-only/dev.o
CC [M] /tmp/vmware-config3/vmhgfs-only/driver.o
CC [M] /tmp/vmware-config3/vmhgfs-only/hgfsUtil.o
CC [M] /tmp/vmware-config3/vmhgfs-only/main.o
CC [M] /tmp/vmware-config3/vmhgfs-only/staticEscape.o
LD [M] /tmp/vmware-config3/vmhgfs-only/vmhgfs.o
Building modules, stage 2.
MODPOST
CC /tmp/vmware-config3/vmhgfs-only/vmhgfs.mod.o
LD [M] /tmp/vmware-config3/vmhgfs-only/vmhgfs.ko
make[1]: Leaving directory `/usr/src/kernels/2.6.18-1.2849.fc6-i686'
cp -f vmhgfs.ko ./../vmhgfs.o
make: Leaving directory `/tmp/vmware-config3/vmhgfs-only'
Unable to make a vmhgfs module that can be loaded in the running kernel:
insmod: error inserting '/tmp/vmware-config3/vmhgfs.o': -1 Invalid module format
There is probably a slight difference in the kernel configuration between the
set of C header files you specified and your running kernel. You may want to
rebuild a kernel based on that directory, or specify another directory.
The filesystem driver (vmhgfs module) is used only for the shared folder
feature. The rest of the software provided by VMware Tools is designed to work
independently of this feature.
If you wish to have the shared folders feature, you can install the driver by
running vmware-config-tools.pl again after making sure that gcc, binutils, make
and the kernel sources for your running kernel are installed on your machine.
These packages are available on your distribution's installation CD.
[ Press Enter key to continue ]
pcnet32 38085 0
Unloading pcnet32 module
Trying to find a suitable vmxnet module for your running kernel.
None of the pre-built vmxnet modules for VMware Tools is suitable for your
running kernel. Do you want this program to try to build the vmxnet module for
your system (you need to have a C compiler installed on your system)? [yes]
Extracting the sources of the vmxnet module.
Building the vmxnet module.
Using 2.6.x kernel build system.
make: Entering directory `/tmp/vmware-config4/vmxnet-only'
make -C /usr/src/kernels/2.6.18-1.2849.fc6-i686/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules
make[1]: Entering directory `/usr/src/kernels/2.6.18-1.2849.fc6-i686'
CC [M] /tmp/vmware-config4/vmxnet-only/vmxnet.o
Building modules, stage 2.
MODPOST
CC /tmp/vmware-config4/vmxnet-only/vmxnet.mod.o
LD [M] /tmp/vmware-config4/vmxnet-only/vmxnet.ko
make[1]: Leaving directory `/usr/src/kernels/2.6.18-1.2849.fc6-i686'
cp -f vmxnet.ko ./../vmxnet.o
make: Leaving directory `/tmp/vmware-config4/vmxnet-only'
Unable to make a vmxnet module that can be loaded in the running kernel:
insmod: error inserting '/tmp/vmware-config4/vmxnet.o': -1 Invalid module format
There is probably a slight difference in the kernel configuration between the
set of C header files you specified and your running kernel. You may want to
rebuild a kernel based on that directory, or specify another directory.
The fast network device driver (vmxnet module) is used only for our fast
networking interface. The rest of the software provided by VMware Tools is
designed to work independently of this feature.
If you wish to have the fast network driver enabled, you can install the driver
by running vmware-config-tools.pl again after making sure that gcc, binutils,
make and the kernel sources for your running kernel are installed on your
machine. These packages are available on your distribution's installation CD.
[ Press Enter key to continue ]
Detected X.org version 7.1.
10.到了该步骤,问你是否改变X-window的设置,选y,就可以改变分辨率。
Do you want to change your guest X resolution? (yes/no) [no] y
Please choose one of the following display sizes (1 - 13):
[1] "640x480"
[2]< "800x600"
[3] "1024x768"
[4] "1152x864"
[5] "1280x800"
[6] "1152x900"
[7] "1280x1024"
[8] "1376x1032"
[9] "1400x1050"
[10] "1680x1050"
[11] "1600x1200"
[12] "1920x1200"
[13] "2364x1773"
Please enter a number between 1 and 13:
[3]
11.到了这步,千万别重启看效果,还要修改xorg config设置,不然重启后会报X-WINDOWS出错。
进入/etc/X11/,用文本打开xorg.conf,加上以下几段:
Section "Monitor"
Identifier "vmware"
EndSection
Section "InputDevice"
Identifier "Mouse0"
Driver "vmmouse"
Option "Protocol" "Auto"
Option "Device" "/dev/input/mouse0"
EndSection
然后找到 含有"ServerLayout" 的section, 在Section跟EndSection之间加上以下一行。
InputDevice "Mouse0" "CorePointer"
12.终于大功告成,重启看看效果了。
关于鼠标这块,不加?!
###############################################################################################################################
Vsftpd默认使用GMT时区,所以FTP上的文件显示的时间对不上号。
修改方法:
在vsftpd.conf文件中加入下面语句: use_localtime=YES
################################################################################################################################################
SSH
################################################################################################################################################
ssh登录,每次都要敲密码,敲多了自然是烦。而且ssh的安全性,使它不能在任何配置文件中或者命令行参数中直接指出密码,所以只能不厌其烦的每次等待登录框出现,然后敲入密码。特别是使用ssh认证的cvs,svn之类的,更是影响工作情绪。ssh-agent就是用于解决这个问题的:
1. Creating authentication key
用ssh-keygen生成公/私钥对:
beowulf% ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/u/kim/.ssh/id_rsa): [RETURN]
Enter passphrase (empty for no passphrase): litt1e 1amp jumb3d
Enter same passphrase again: litt1e 1amp jumb3d
Your identification has been saved in /u/kim/.ssh/id_rsa.
Your public key has been saved in /u/kim/.ssh/id_rsa.pub.
The key fingerprint is:
b7:18:ad:3b:0b:50:5c:e1:da:2d:6f:5b:65:82:94:c5
记住你的passphrase(这里是little lamp jump3d)。其中~/.ssh/id_rsa.pub为公钥文件
2. Authorizing access
将公钥上传成目标机的~/.ssh/authorized_keys (ftp,scp都可以)
beowulf% cd ~/.ssh
beowulf% cp id_rsa.pub authorized_keys
beowulf% scp -p ~/.ssh/authorized_keys
password: YourPasswordHere
authorized_keys 100% 1839 1.2MB/s 00:00
其中需要输入目标机上你的用户密码(在此为hrothgar上的kim用户)。
这时,你使用ssh登录时,将会通过你identification的passphrase来登录了。
beowulf% ssh hrothgar
Enter passphrase for key '/u/kim/.ssh/id_rsa': litt1e 1amp jumb3d
如果所联机的主机是第一次联机会出现下列一堆东西,打 "yes" 三个字即可:
The authenticity of host '140.115.77.11' can't be established.
RSA key fingerprint is 13:93:8a:61:31:df:41:3f:7a:0a:77:ad:7e:49:e7:3f.
Are you sure you want to continue connecting (yes/no)? yes
服务器端配置如下:
a.配置/etc/ssh/sshd_config
修改sshd_config中PubkeyAuthentication的值为yes,开启PubkeyAuthentication认证方式(即基于公钥机制的认证方式)。
b.重启sshd
redhat/centos:service sshd restart
suse:/etc/init.d/sshd restart
c.配置开机自动运行sshd
chkconfig –level 2345 sshd on
测试:
在客户端上执行ssh 被备份服务器的IP,应无需密码直接登陆。
troubleshooting:
如果测试不成功,则在客户端上执行ssh –v 被备份服务器的IP,查看debug输出的信息,是哪一步出问题。
############################
samba配置
检查并启动smb服务
chkconfig --list|grep smb
service smb start
1) 创建用户。
使用 useradd
需要确认如果用户只进入Linux/Samba服务, 这就是说用户不必进入Linux命令行,这样的话只有把home目录设成/dev/null ,命令行设成/bin/false。
groupadd glk,fwb....
useradd glk -d /dev/null -s /bin/false
useradd fwb -d /dev/null -s /bin/false
smbpasswd -a glk #第一次创建时要加-a ,以后不需要
2) 把UNIX用户转换成Linux/Samba/Windows用户,生成smbpasswd 文件。
cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd
smbpasswd -a root ,将UNIX已有用户(如root)转到smb中
配置smb.conf
特别是hosts allow = 192.168. , 172.20. , 10.
#======================= Global Settings =====================================
workgroup = MYGROUP
server string = Samba Server
hosts allow = 172.,127.,10.,192.
log file = /var/log/samba/%m.log
max log size = 50
security = user
passdb backend = tdbsam
encrypt passwords = yes
netbios name = mm's samba
#============================ Share Definitions ==============================
[glk]
comment =glk Document
path =/mnt/doc/glk
valid users =glk
read list = glk
write list = glk
如果不能写入,注意目录的权限问题。
##############################################################################
创建文件系统
先用fdisk命令创建硬盘分区。当分区时,仍然指定分区为编号为8e的LINUX文件系统类型。接下来将指定的分区格式化成ReiserFS文件系统:
# mkreiserfs /dev/hdb1
# mkdir /mnt/reiserdir
# mount -t reiserfs /dev/hdb1 /mnt/reiserdir
或者vi /etc/fstab
/dev/hdb1 /mnt/reiserdir reiserfs defaults 1 2
对于ext3,使用mkfs来格式化
mkfs -t ext3 /dev/sda6
mkfs.ext3也行……
################################################################################
功能最强大的FTP,lftp
登录
lftp
要看lftp的命令行语法,只要在shell中输入lftp --help
/etc/lftp.conf
全局配置文件,实际位置依赖系统配置文件目录,可能在/etc,也可能在/usr/local/etc
~/.lftp/rc, ~/.lftprc
·1用户配置文件,将在/etc/lftp.conf之后执行,所以这里面的设置会覆盖/etc/lftp.conf中的设置。
lftp 缺省不会显示 ftp 服务器的欢迎信息和错误信息,这在很多时候不方便,因为你有可能想知道这个服务器到底是因为没开机连不上,还是连接数已满。如果是这样,你可以在 ~/.lftprc 里写入一行
debug 3
就可以看到出错信息了。
常用命令
下载单个文件和一组文件,断点续传用-c参数
lftp dsec.pku.edu.cn:/> get -c ls-lR.txt
lftp dsec.pku.edu.cn:/> mget *.txt
镜像(反镜像即上传)一个目录,可以用多个线程并行镜像一个目录(--parallel=N)
lftp dsec.pku.edu.cn:/> mirror incoming local_name (下载)
lftp dsec.pku.edu.cn:/> mirror -R local_name (上传)
lftp dsec.pku.edu.cn:/> mirror --parallel=3 incoming local_name
后台任务管理
缺省情况下,按 Ctrl+z,正在执行的任务将转为后台执行,也可以在命令行末尾加&符号使任务在后台执行。用jobs命令可以查看所有的后台进程。用 queue命令可以排队新的任务。如果退出lftp是还有任务在后台执行,lftp将转为后台执行。
file:charset (string)
设置本地字符集,初始化默认读取系统locale
ftp:charset (string)
ftp服务器端字符集,默认为空,即本地系统locale同,只在server不支持utf-8时用
我的设置:
set ftp:charset "gbk"
set sftp:charset "UTF-8"
set file:charset "UTF-8"
ftp:passive-mode (boolean)
默认为被动模式
设置ftp的被动模式,在有防火墙或者转发路由时用
lftp在被动模式用PASV命令,而不用主动模式的PORT命令
passive mode:lftp自己建立到ftp server的连接
active mode: ftp server建立数据传输的连接
我的设置:
# default: use passive mode
set ftp:passive-mode yes
## 202.38.64.22, use active mode