FreeBSD 系統管理員都應該知道的那點秘密
原創作為一個系統管理員不論你使用的是那個系統,每一款操作系統都有一定的使用技巧。在之前的一篇文章中撫琴煮酒向大家介紹了在CentOS下系統管理員需要注意的常識。在這里,酒哥再次和大家分享在FreeBSD環境下系統管理員需要掌握的技巧。
推薦專題:企業內網開發環境部署與管理全攻略(FreeBSD+PHP)
一、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 root@almeida.cse.buffalo.edu:/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比以前好用多了。#p#
三、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類操作系統版本)
#p#
五、很多喜歡用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,所以強烈推薦。#p#
七、大家都會用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是個非常麻煩的事情。
【編輯推薦】