FreeBSD 系统管理员都应该知道的那点秘密

(转自: http://hi.baidu.com/enusre/blog/item/48d60cc9b348120601e928dd.html

 

 


FreeBSD 系统管理员都应该知道的那点秘密
2011-04-24 8:50

 

一、FreeBSD直接可以用命令彪悍的生级的,比如将FreeBSD8.0升级成FreeBSD8.1。

直接在FreeBSD的命令行模式下,输入以下命令

sudo freebsd-update -r 8.1-RELEASE upgrade

中间按提示输入就行了

Does this look reasonable (y/n)? 全 y

大部分都不需要修改,只是文件的版本时间改变

会有一些需要合并的文件,程序会自动用 vi 打开,解决一下就行了

结束后

sudo freebsd-update install

会有如下提示

Installing updates... Kernel updates have been installed. Please reboot and run "/usr/sbin/freebsd-update install" again to finish installing updates

然后

sudo shutdown -r now

重新启动后

sudo freebsd-update install

uname -a 查看,已经OK了

FreeBSD www.wsck.com 8.1-RELEASE FreeBSD 8.1-RELEASE #0: Mon Jul 19 02:55:53 UTC 2010 [email protected]:/usr/obj/usr/src/sys/GENERIC i386

※值得注意的是,线上的生产服务器全部用的是FreeBSD8_release AMD64版本,生级过程可能不一样;建议先用虚拟机或拿一些不是特别重要的线上服务器尝试,不建议直接生级,谨慎操作.

二、FreeBSD的vim确实跟Linux下vim有区别。

很多同学都向报怨说FreeBSD下的 vim不好用,特别跟RHEL比起来,这是不争的事实,其实稍为配置下vim用起来一点也不比Linux 差;我的FreeBSD机器,无论是VM学习机, 还是开发机器或线上的系统,均不采用root直接操作,都是用采取用户操作的方式,其vim配置文件如 下vim ~/.vimrc

set nobackup set number set cindent set autoindent set shiftwidth=2 set tabstop=2 set softtabstop=2 set expandtab set ruler syntax on

常用设定

下面说说一些常用的设定及其具体含义

set nobackup 不要备份文件,使用backup备份文件(原文件加后缀~)
set number 显示行号
set cindent 设定c风格缩进,使用nocindent取消设置
set autoindent 设定自动缩进,每行缩进与上一行相等,使用noautoindet取消设置
set shiftwidth=2 设定缩进为两个空格
set tabstop=2 设定制表符为两个空格
set softtabstop=2 设定软制表符为两个空格
set expandtab 缩进和(软)制表符使用空格替代,用noexpandtab取消设置
set ruler 显示光标所在行列号
syntax on 启动语法高亮

其中涉及到的名词术语相关解释

cindent

使用C语言的缩进方式,根据特殊字符如“{”、“}”、“:”和语句是否结束等信息自动调整缩进;在编辑 C/C++ 等类型文件时会自动设定;

softtabstop

软制表符宽度,设置为非零数值后使用Tab键和 Backspace时光标移动的格数等于该数值,但实际插入的字符仍受tabstop和 expandtab控制;这样配置vim比以前好用多了。

三、FreeBSD下配置网络环境,感觉比Centos简单些。

使用sysinstall进行网络配置的优点是所有的网络数据将在同一个界面下进行设置,不容易发生错误和遗漏现象。但熟练的unix用户在平时维护系统的时候更喜欢使用手工配置,因为手工配置有很多优点:

熟悉命令之后,手工配置更快; 

能够使用配置命令的高级特性; 

更容易维护配置文件,找出系统故障; 

能更深刻的了解系统配置是如何进行的。 

仅仅使用sysinstall进行设置,不可能对系统设置有深刻的了解,因而一旦发生问 题,就容易束手无策。 对于管理员来讲,不能被动的仅仅停 留在能够使用和操作的阶段,而是要了解系统是如何进行工作的,才能更好的进行系统维 护和管理。因而需要使用命令行方式。一旦熟悉之后,就会发现命令行才 能提供全部灵活的操作能力,而全屏幕方式限制很多 ,过于呆板。另外,为了让配置永久生效,我推荐跟centos5.4一样配置,采用文件配置方式,过程 如下(这里以FreeBSD8.0为例),感觉比 linux 简单,特别对比centos5.4下的网卡配置/etc/sysconfig /network-scripts/ifcfg-eth0而言,目录足足花了 我三天时间记忆:)

#vi /etc/rc.conf hostname="mail.bolaninfo.com" ifconfig_le0="inet 192.168.1.108 netmask 255.255.255.0" defaultrouter="192.168.1.1"

域名解析DNS配置如下

#vi /etc/resolv.conf nameserver 210.5.4.116 nameserver 210.51.176.71

为了让以上过程永久生效,reboot重启服务器后用ifconfig可验证ip地址,netstat -r可验证网关是否生效,nslookup及dig可验证DNS配置是否正确等。

另外这里稍为解释下名字解析hosts,它的执行顺序是优于DNS,现阶段多用于集群环境,如heartbeat、MySQL cluster等,配置过程如下

#vi /etc/hosts 192.168.1.100 HA1 192.168.1.101 HA2 192.168.1.188 vip.balaninfo.com

远程连接管理我工作中用的是Xmanager3的xshell,但FreeBSD8.0默认root是不能在非本地登陆的,这里需要改动下/etc/ssh/sshd_config文件。

※值得注意的是

A、系统需要改动的是/etc/ssh/sshd_config文件,而非/etc/ssh/ssh_config文件,这个问题让我郁闷了很长时间,这里煮酒为自己的大意要作自我批评了;

B、在sshd_config最后添加三项内容:

PermitRootLogin yes #允许root登录 PermitEmptyPasswords no #不允许空密码登录 PasswordAuthentication yes #设置是否使用口令验证

划红线的内容为必填项,然后重启sshd服务即可,/etc/rc.d/sshd restart。

四、强烈建议FreeBSD下采取sudo操作,可能有些玩Linux的同学不习惯;但你用久了就会发现,好处是利大于弊的。

虽然FreeBSD下可以配置成允许root远程ssh,但强烈建议不要这么做;建议还是分配一个有wheel权限的普通用户进行操作的好,如果有 特殊需求就必须要sudo,这样不仅安全,而且遇到毁灭性打击时,起码可以起到一点预警的作用,所以我在FreeBSD下强烈推荐sudo操作。

sudo是一款开源安全工具,它能允许管理员给予某些用户或组以作为root用户或其他用户从而运行特定命令的权利。这个软件还 能记录下特定系统用户的命令和参数。sudo的开发者声明这个软件的基本出发点就是“让人们以尽可能少的权限完成他们的工作。Sudo在1986年夏天首 次发行,Todd Miller先生现在负责这个程序并在BSD方式的许可证下发行它。Sudo主页:http://www.sudo.ws/sudo/ 。Sudo程序是一款在命令行方式下工作的安全工具,并且我们每次只执行一条命令。它支持的功能如表(Sudo几乎支持所有的UNIX类操作系统版本) 

FreeBSD 系统管理员都应该知道的那点秘密

五、很多喜欢用adduser在FreeBSD里增加新用户,其实FreeBSD里可以用PW是来创建、删除、修改、显示用户和组的命令行工具。它还有系统用户和组文件编辑器的功能;其具体用法如下:

1、用户管理

1)用户添加

pw [-V etcdir] useradd [name|uid] [-C config] [-q] [-n name] [-u uid] [-c comment] [-d dir] [-e date] [-p date] [-g group] [-G grouplist] [-m] [-k dir] [-w method] [-s shell] [-o] [-L class] [-h fd | -H fd] [-N] [-P] [-Y] [-V etcdir]

默认当新增组和用户时使用/etc/pw.conf作为pw配置文件,也可以指到别的文件上。pw.conf这个文件可以不存在。当使用这个参数时,需要使

用-C config [-C config] [-q] 在交互式环境中,这个选项使pw支持输出错误信息 [-N] 在添加和更改操作时输出结果,而不真正改变组和用户信息。 [-Y] 自动更新yp数据库。 [-n name] 指定用户名 [-u uid]指定用户id(ps:好像没什么用) [-c comment]用户全称等注释信息(ps:没什么用) [-d dir] 指定用户家目录 [-e date]帐号到期时间,时间格式可以是绝对的日-月-年,2为数字年或4位数字年,月可以是数字或英文月份的简写('Jan', 'Feb', etc)

也可以是相对时间,+n[分时天周月年],n可以是十进制、八进制[0开头]或十六进制[0x开头]。

[-p date]密码到期时间,时间格式同上。[-g group]指定组(组名或组id)。[-G grouplist]指定组列表,组以空格分开,如:-G wheel mysql teczm即把某账号置于这三个组内。[-L class]在用户创建时指定登录等级。[-m] 自动创建用户家目录[-s shell]指定用户shell

[-w method]method包括:

no 新创建的账号禁止登录yes 强制新建账号密码和账号一样(ps:这样不安全)none 强制新建账号使用空密码(ps:这样不安全)random 生成一个随机密码pw useradd username -g tests -d /home/test -s /bin/sh -h 0

增加参数 -h 0 可以出来password for user username:这样的提示来让你设定username的密码

2)组操作时常用选项 

[-M memberlist] 将用户置于组内,会替换掉已经存在的用户

[-m newmembers] 添加新用户到组内,不会替换掉已经存在的用户

示例:

1.新建一个用户bsder使用cshell,家目录为[color]/home/bsder[/color],属于组[color]wheel[/color],口令交互输入

#pw useradd bsder -s /bin/csh -d /home/bsder -m -g wheel -h 0 或#pw user add bsder -s /bin/csh -d /home/bsder -m g wheel -h 0

注: -h 0 可以出来password for user username:这样的提示来让你设定username的密码

2.将bsder使用的shell改为/bin/sh

#pw usermod bsder -s /bin/sh

3.将bsder置于test组内

#pw groupmod test -m bsder

4.锁定bsder用户帐号

#pw lock bsder

5.对bsder账号解锁

#pw unlock bsder

6.显示bsder用户属性

#pw usershow bsder

7、删除bsder用户

#pw userdel bsder 或#ps user del bsder

六、安装axel优化其ports速度,不要用默认的Fetch工具了。

FreeBSD中的ports安装工具默认工具是用fetch,下载时经常出现龟速现象;为了提高ports安装速度,我推荐axel工具,当然具体还得配置下make.conf文件。

cd /usr/ports/ftp/axel make install

#修改/et/make.conf

vi /etc/make.conf

#加入以下内容

FETCH_CMD=axel FETCH_BEFORE_ARGS= -n 10 -a FETCH_AFTER_ARGS= DISABLE_SIZE=yes MASTER_SITE_OVERRIDE?=\ http://ports.hshh.org/${DIST_SUBDIR}/\ http://ports.cn.freebsd.org/${DIST_SUBDIR}/\ ftp://ftp.freeBSDchina.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/ MASTER_SITE_OVERRIDE?=${MASTER_SITE_BACKUP}#以上路径是为了用速度比较快的网站代替程序默认的下载源,达到加速的目的;我在家里没配置前大约是20kb/s左右,配置之后是230kb/s,所以强烈推荐。

七、大家都会用ports及pkg_add在FreeBSD安装软件,但它们的高级用法呢?特收录整理,以备不时之需。

①ports的目录在/usr/ports。

②POSTS安装软件有时可能这个包已经安装过了,会有提示,无法继续安装,能够用提示中的参数

#make install clean FORCE_PKG_REGISTER=yes

这样就能够继续安装了,yes不区分大小写。

③PORTS安装软件时有时能够下载回来的包的md5值不匹配,能够加参数强制安装。

#make install clean NO_CHECKSUM=yes

④如何查找安装一个ports软件

假如知道文件的详细名字,能够直接用whereis

#whereis php5

假如不知道细致文件名,能够用:

#cd /usr/ports #make search name=php

假如只知晓描述性主要字,能够用:

#cd /usr/ports/ #make search key=php

⑤如何查找已完装软件包的信息

#pkg_info

用管道命令过滤定位

#pkg_info grep php

⑥如何删除一个软件包

#pkg_delete 软件包细致名,细致名称能够用pkg_info grep 管道命令查出。

加上-f 参数,能够删除一人别的软件对其有依靠联系的软件包

#pkg_delete -f 软件包细致名

⑦PORTS安装软件后,如何修改配置

有些POST包安装时会有蓝色配置挑选页,通常选过一次后就不会再显示了

#make rmconfig 删除配置,须要有root权限

#make reconfig 重新配置,须要有root权限

⑧重新安装已安装ports软件包

#make reinstall

⑨删险已安装ports软件包

#make deinstall #make clean

⑩如果系统默认的下载地址失效了,你可尝试手动下载tbz软件包,然后用pkg_add 软件包名直接安装。

八、FreeBSD的远程连接

感觉pietty比起xshell来,更轻松和方便,远程ssh的FreeBSD机器也很容易,推荐大家尝试使用;记得在某篇文章里看过,这个工具 好像也是中国雅虎内部员工推荐使用的,因为FreeBSD基本都是隶属于wheel的用户(推荐sudo)来使用,因为不需要记密码,所以pietty使 用起来更实用。

九、FreeBSD下的虚拟机

感觉现在大家较喜欢用Vmwareg下的Exi和Xen来作虚拟机,其实FreeBSD自身就带了jail虚拟机;由于内网开发非常稳定,我们勇敢的将其也用于了生产环境,效果也不是太差,呵呵。

十、FreeBSD下的MySQL

FreeBSD下用MySQL效率确实 比在Centos下差,这个是不争的事实,有兴趣的朋友可对比二个平台环境下进行测试;我的MySQL生产 服务器是清一色的64bit的Centos,如果你需要跑Oracle等大型应用的话,而且Oracle在Linux下是支持的比较好的, 那么使用 Linux是个好的选择,因为在FreeBSD下安装Oracle是个非常麻烦的事情。

你可能感兴趣的:(FreeBSD)