??xml version="1.0" encoding="utf-8" standalone="yes"?> lsattr -El mem0 lsattr -El sys0 -a realmem svmon -G Z(jin)在最新的Ubuntu8.04上搭建java web的开发环境,安装?jin)myeclipse,eclipseq两个Y件的具体安装Ҏ(gu)我就不再赘述?jin),因?f)|上有很多。eclipse,myeclipse推荐手动下蝲安装Qmysql直接?/p>
sudo apt-get install mysql-server mysql-client 安装Q安装的时候要C自己输入root密码Qmysql服务可以?/p>
sudo netstat -tap | grep mysql 查看是否开启,昄Q?/p>
tcp 0 0 localhost.localdomain:mysql *:* LISTEN - 如果服务没有q行Q可以用 sudo /etc/init.d/mysql restart 开启?/p>
配置密码Q?/p>
sudo mysqladmin -u root password newpassword 现在需要装administrator?jin),q个gui工具可以可视化操作mysqlQ它在unix,windows,mac os,linuxq_上都有相应的版本Q安装:(x) sudo apt-get install mysql-admin 安装之后需要徏立连接,stored connection:W一ơ用,首先需要选择save this connectionQ然后填写连接的名字Q例?connection. server hostname:如果是一台本地计机Q填写localhost.username和password填写自己讄的就可以。最后点"connection"q接成功Q? 1、安装VMware workstation 2、安装guestpȝQ这里我安装的Red Hat Linux9Q安装过E中保|络q接选择的是NAT方式Q当然可以在安装完后q行修改?/p>
3、到windows XP 中,查看所有的|络q接Q你应该发现除了(jin)原有的网卡之外,又多?jin)Vmnet1和Vmnet8。vmnet1是hostonly的接口,而Vmnet8是就是我们要使用的NAT的网l接口? 4、在winL上用ipconfig查看VMnet8的IP地址Q?br />
一般是192.168.X.1/255.255.255.0, 5、同时在VM|络讄里的NAT中查看VMnet8Q一般是192.168.X.2/255.255.255.0 6、现在在LINUX下把|卡IP讄成和VMnet8一个网D늚IPQ?92.168.X.Z/255.255.255.0) 7、网兌|成刚才查看的那个IP192.168.X.2卛_ 8、DNS和你hostL的一样就可以?/p>
9、设|完成后Q重新启动linux的网l服务?/p>
10、测试一? 如果能ping通就ok?/p>
2、查看物理内?br />
]]>
]]>
此时VMnet8的设|应该是自动获取IPQ现在改成静(rn)态IPQƈ把此IP直接填入VMnet8里,不设|关?
q个地址是VMnet8QNAT的网?
ping |关Qping 192.168.X.2
ping DNSQping 你的DNS?/p>
{:(x)?etc/csh.cshrc里面加入Q?
代码:
setenv LSCOLORS ExGxFxdxCxegedabagExEx
setenv CLICOLOR yes
然后Q执行:(x)
代码:
sed -i.bak -E s/set prompt/#set prompt/g /root/.cshrc
q新登录?
2.问:(x)如何让FreeBSD的csh像bash那样按tab列出列出无法补齐的候选文Ӟ
{:(x)标准的方法是按Ctrl+D。但如果一定要用tab的话Q在/etc/csh.cshrc中加入:(x)
代码:
set autolist
3.问:(x)如何让FreeBSD的csh昄cM[delphij
spirit] ~q样的提C符Q?
{:(x)?etc/csh.cshrc中加入:(x)
代码:
set prompt = ''[%B%n
%m%b] %B%~%b%# ''
然后Q执行:(x)
代码:
sed -i.bak -E s/set prompt/#set prompt/g /root/.cshrc
4.问:(x)如何让普通用户也拥有cMroot用户那样的命令行~辑能力Q?
{:(x)?etc/csh.cshrc中加入:(x)
代码:
bindkey "^W" backward-delete-word
bindkey -k up history-search-backward
bindkey -k down history-search-forward
5.让ctr+del+alt 失效
Look into your keymap file (taken from /usr/share/syscons/keymaps) and
search for boot in it. If it has not the "boot" string in it, replace the
lines #083 and #103 by these
083 del ''.'' ''.'' ''.'' ''.'' ''.'' boot boot N
103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
There was talk to enable/disable it via a sysctl(3) parameter but no one
ever got around to do it...
6. 环境变量:文g/etc/profile,
BLOCKSIZE=K; export BLOCKSIZE(通用)
文g~.cshrc BLOCKSIZE K
setenv
my cshrc
代理服务器的使用
HTTP 的代理:(x) #setenv HTTP_PROXY http://proxyip:port
FTP 的代理:(x) #setenv FTP_PROXY http://proxyip:port
7?讑֮开机画?
使用 windows 的hQ都知道所谓的开机画面,?FreeBSD 下是否也有此功能呢?{案是肯定的Q而且讑֮更ؓ(f)便,L(fng)以下 stepsQ?
一. 首先制作一个图型文Ӟ档案格式?logo.pcx ?logo.bmpQ需注意的是 .bmp 的档案存盘时不用压羃Q分辨率需?640 X 480 以内(?Q色阶ؓ(f) 256 ?.
? 此档案 copy ?/boot/ q个目录?
? 讑֮ /boot/loader.confQ加入以下资?
splash_bmp_load="YES" -> 如果使用 .bmp 格式Q此w设ؓ(f) YES
splash_pcx_load="YES" -> 使用 .pcxQ请此设?YES
vera_load="YES"
bitmap_load="YES"
bitmap_name="/boot/logo.pcx" -> 请依你的档案格式更改
bitmap_type="splash_image_data"
8.ȀzM?screensaver
׃ FreeBSD 大多当ؓ(f)L使用Q都是常期不x(chng)的,因此可将屏幕x(chng)Q或使用 ScreenSaver 功能..
使用 ScreenSaver 请在 /etc/rc.conf q个档加入以下两行:(x)
blanktime="900"
=> 以秒Cؓ(f)单位Q如以上?15 分钟
saver="logo"
=> logo ?FreeBSD 的吉物(囑֞接口)Q另也可使用 "daemon"Q这是文字型?
9. 重复使用先前使用q的指o(h)
你可以用以下的Ҏ(gu)来重复用先前用过的指?
例如Q我们先?history 昄先前输入的指?
# history
.
..
...
10 clear
11 cd /usr/local
12 ls
13 ls etc
14 cd ~
15 clear
1. ?up down 可用上下一个指令,或是 ctrl+p ctrl+n 亦然
2. 配合 ! 的用法,例如以下(ps: ?lt;...>内代表要输入的东?
!!
# !! => 重复执行上个一个指?
!<~号>
# !11 => 执行 cd /usr/local
!<指o(h)> 可输入部份字Q但前面部䆾需W合
# !cl
执行 15 clear 指o(h)
!<?指o(h)?> 输入部䆾字符Q部份吻?
# !?etc?
执行 13 ls etc
以上指o(h)?tcsh ?bash 下皆可用,如此是不是可帮你省下许多旉..
10.?dig ?host 来取?nslookup
一般我们用来检查网l是否有问题Q大多是用以下三个指?.
nslookup
ping
traceroute
其中 nsllokup 是用来检?dns 的相兌定, ping 用来(g)查自己和Ҏ(gu)|络是否通顺Q?traceroute 则是用来(g)查从自己的计机到对方的计算机所l过的线路状?.
不过?nslookup 而言Q个得不是很实用Q有时我们只是想单纯的查一下某C机或?MX 记录Q那使用 nslookup 有点噜嗦了(jin)..
在此介绍二个好用的指?host ?digQ这二个指o(h)很类|不过效率?nslookup ?
# host -a <L名称> ?<ip>
=> 输入L名称昄 dns 正向解析的部份,输入 ip 则是昄反向(ptr)
# dig <L名称或ip> <any a mx soa txt.. 任选一?gt;
如要昄 MX 记录
# dig L名称 mx
个h是觉得比 nslookup 方便多了(jin)Q你觉得?. ^.^
当然功能不只q些Q详情请 man dig ?host..
11.加快你的开机速度..
严格说v来,FreeBSD 的开机速度满快的Q不q中间会(x)有个 10 U的延迟旉(以便让你q入 boot ?command prompt mode)Q如果你嫌这10U还是太慢了(jin)Q那你可时?#123;短一?.
FreeBSD ȀzL?x)先d?/boot/defaults/loader.conf 档的讑֮Q然后再参?/boot/loader.confQ一般我们都不去?#123;?/boot/defaults/loader.conf q个档,而直?#123;?/boot/loader.conf..
只要?/boot/loader.conf 中加上以下这一行即?
autoboot_delay="U数" 卛_Q如
autoboot_delay="7" 代表7U?
q样开机是不是更快?.
另外Q有旉可参考一?/boot/defaults/loader.conf q个档案的设定,其中有许多实用的讑֮?.
12.忘(sh)(jin) root 密码
如果你忘?sh)?root 的密码怎么办,q在 FreeBSD 中满好解决的Q请照以?steps 来处?.
1. q入单h模式
开机后Q当出现
Hit [Enter] to boot immediately, or any other key for command prompt.
Booting [kernel] in 10 seconds...
?space(或除?enter 以外的键) 键则?x)进?command prompt modeQ同时出C?ok ..
q时误?boot -s 以进入单人模?
2. 选择 sh
q入单h模式后,pȝ?x)询问你要用那?shQ内定是 /bin/sh Q就使用q个吧,直接?enter 跌
3. 所有的盘分割架v?
# mount -a
4. 更改密码
# passwd
长度要在 6 个以上,输入二次
5. 重新Ȁz?
# reboot
13.介绍一些一些有用的参数(注意大小?..
%B 代表高(sh)?
%n 代表用者名U?
%m L名称
%/ 目前的目?
一般我们可能比较在意以上几点,如我要管理好几台 FreeBSD LQ那么以上几个参数就很重要了(jin)..
举个实例来说Q如我想把我?prompt Ҏ(gu)q样Q而且要高?sh)度昄Q?
使用者名U?br /> L名称[目录名称]>
?prompt 的设定应该是q样?.
set prompt = "%B%n
%m[%/]> "
注意 = 左右都要有一个空白,否则?x)出错,D无法dQ另外如果要l一所有用者的 prompt 的话Q除?jin)更?/home/使用?.cshrc 外,最好也?/etc/csh.cshrc 中设定这一行,另外如要新增新用者也用这U提C,则请?/usr/share/skel/dot.cshrc 中也加上(或改?q一行,q是因ؓ(f)Q?
tcsh 在用时?x)先参?/etc/csh.cshrc q个档案Q再?user L?home 目录下的 .cshrcQ而设?/usr/share/skel/dot.cshrc 是让你新使用者时Q自动将?prompt 讑֮?set prompt = "%B%n
%m[%/]> "
q种设法Q当你在理多台L?qing)切换目录时Q就不易搞错而发生一些惨?/p>
14.在提C列U?[使用者]目前工作目录 (可以打很多ơpwd)
# cd /root
~辑 .cshrc
# set prompt="''hostname -s''# " ### 扑ֈq一行ƈ mark h
set prompt = "[%n]%/# " ### 新增此行q存盘离开
# logout
login: root ....重新d
ps.其它user id 是否可照? 我还没试q哩..刚装f(xi)reebsd而已
15.如何防止别hdC的计机
有时Q我们ƈ不想让别人直接登入到我们的主机或是只想限定某些h可用,?telnet、ssh..
或者是开放了(jin)些服务,?ftp、smtpd ..{,׃q些都必需在主机端建有帐号Q因此防止不相干的hdC的主机是非常重要的,也是一个安全上的考量..
但一般限定的方式都是使用 ip 或是 domain 的方式,那么有无Ҏ(gu)可解册个问题呢Q?
{案是可?/etc/login.access 来着手,q个档案是限定 login ?.
一个典型的讑֮如下Q例如我们想限定只有 root ?使用?john 可登入到L(含local ?remote):
-:ALL EXCEPT root john:ALL
可分Z个项目,每个目间以 : 分隔Q说明如?
1. + ?- 代表允许或禁?
2. 讑֮的用者或组Q可?ALL EXCEPT 来强化限定的范围
3. 限定的来源,?ALL 代表全部?1.219.230. 、LOCAL、console?bad.com ..{?
适当的设定,可让你的pȝ更加的安?.
详细用法?man login.access..
15. 一?./ 的技?
众所周知Q在 nix-like 中执行目前目录中的可执行文gӞ必需加上 ./ q二个符P很多 unix-like 的初学者都?x)感觉较不?fn)惯,因ؓ(f)?dos ?windows ?dos H口中ƈ不是如此..
其实?unix-like 中如此设定是有其安全考量的,在用指令或执行文gӞ一般是使用完整的目录,例如要?lsQ则如下:
# /bin/ls
当然Q你直接输入 ls 亦可正确的执行,q是因ؓ(f)你所使用?shell 中环境变?$PATH 的因?.
你可键入 echo $PATHQ来看目?$PATH 的设定,当我们执行一个指令时Q系l会(x)依照q个环境变量来搜寻这个执行档q加以执?.
内定 shell 不会(x)目前目?. 加到 $PATH 中,因此如果你想在目前目录执行这个目录下的执行文件而不惛_?./ Ӟ可在你的 shell 中将 . 加入..
如一般在 FreeBSD 都是使用 tcshQ你可编辑个?home 目录下的 .cshrc ?set path = ( ........ Q在此加?. 卛_..
记得重新退?shell 再登录,以便让你的新讑֮生效.
16.谈谈软g的安装\?.
FreeBSD 对于档案目录的观念非帔RQ什么样的档案要攑֜那个目录都有规定Q这也是有别于其?unix-like pȝ..
一般我们将软g安装分成二个部䆾Q在q里来探讨一下Y件到底都安装到那M(jin)..
在安装Y件时Q通常?x)安装诸?执行档、设定档、man file、doc 文g..
1. 安装pȝ时所安装的Y?
执行档通常装在 /bin?sbin?usr/bin?usr/sbin?usr/libexec ?
讑֮文g通在?/etc 目录?
man file 通常?/usr/man ?/usr/share/man
doc 文g通常?/usr/share/doc ?
2. l由 package ?port 安装的Y?
执行档通常装在 /usr/local/bin?usr/local/sbin?usr/local/libexec ?
讑֮文g通在?/use/local/etc 目录?
man file 通常?/usr/local/man ..
doc 文g通常?/usr/share/doc ?
以上q不是绝对的(所以我用通常..^.^)Q因为有些特D情况需视Y件而定..
如此有时可能?x)造成些许困扰Q因为如 ssh ?bind .. 大多是在pȝ安统时就安装的,那如果升U新版时怎么?.
׃ FreeBSD 扑֯执行档时?x)依?$PATH q个环境变量扑֯Q因?/bin?sbin?usr/bin?usr/sbin ?/usr/local/bin ?/usr/local/sbin 先,所以会(x)先执?.也就是先抓到旧版的执行档..
因此在更新时要注意这U情况,以免更新?jin)还是执行旧的程?.
那么如何看安时程序时的相x(chng)案的安装路径呢?通常有以下方?
1. ?port ?pkg-plist ?
2. 有时?man [执行档名U] 可看C些重要档案的位置
3. 看说明文Ӟ通常?/usr/local/share/doc 目录?
17?如何?FreeBSD 同一片网卡加一?ip 地址
有的时候,需要在同一片网l卡上加 ip 以达C些特D的要求..
?FreeBSD q是非常单的Q假讑֎先网l卡?ip ?211.211.211.211Q想加一?211.211.211.212Q用的?rl0 q片|络卡,则做法如?.
1. ?/etc/rc.conf 加上q一?
ifconfig_rl0_alias0="inet 211.211.211.212 netmask 255.255.255.255"
其中?alias0 是加装的第一?ipQ如要设定多个可在此修正Q如 alias1、alias2.. aliasN
2. 重新Ȁzȝl卡Q执?/etc/netstart
# /etc/netstart
18.保护你的档案
在系l中Q有许多档案或一些设定档是非帔R要的Q加?FreeBSD (或是一?unix-like)pȝ都没有类?ms 的垃圑֛收桶的功能,万一不幸删掉(或修?某个重要的档案,可能?x)造成不小的困?.
虽然QFreeBSD 对于档案的权限设定的非常严密Q但有些时候,我们?root w䆾工作Q仍?x)有此风?.
那要如何避免q种情Ş发生或是保护某些重要的档案呢Q?
我们可以?chflags 来达成这个目的,思义Q?chflags 是由二个字所l成Q即 change ?flags(档案的旗?..
例如我们要保?/etc/inetd.conf q个档案Q以免误删或被修改,则指令如?
# chflags schg /etc/inetd.conf
q样可以保护这些档案,如要昄q些档案的旗?flag)Q可?ls 来看..
# ls -lo /etc/inetd.conf => l 是小写的 L
-rw------- 1 root wheel schg 47 Mar 28 21:29 inetd.conf
要解除旗标设定,可用 unschgQ也是?schg 前加 un Q如:
# chflags unschg /etc/inetd.conf
大部份我们进入主机都是以 root w䆾执行Q因此稍不小?j),可能?.因此一些重要的档案?qing)设定档讑֮?schg flagsQ以保护档案..
?/bin?/sbin?/etc/.conf?/usr/lcaol/etc/*.conf .. q些档案最好都是定?schg 旗标..
chflags 详细用法请参?man chflags..
19.有关pȝ的一些激z问?.
有时Q会(x)修改 FreeBSD 的一些设定,如一些网l参数、Y件的 .conf 讑֮Q或?/etc/r.conf 檔,那么如何让设定值生效,是否一定要重新开机呢Q?
q可分ؓ(f)三方面来?.
1. |络相关讑֮Q如|络适配卡、hostname .. {,只要执行以下指o(h)可以重新加载你的网l设?.
# sh /etc/netstart
netstart 是一?script 档案Q执行时?x)去参?/etc/rc.network。因此只要执行这个指令就能够重新Ȁzȝl设?.
有兴者可参考一?netstart ?rc.network q二个档的内容,研究看看到底做了(jin)些什么东?.
2. 修改?rc.conf 中其它的讑֮
可参考以下三?step 来做..
. q入单h模式
# shutdown now
. 选择 shQ造内定值即可,?/bin/sh
. d单h模式
# exit
q样׃(x)重新Ȁzȝl了(jin)..
3. 软g的设定,如一?*.conf 檔,像是修正?apache sendmail .. {?
通常?/etc/local/rc.d/ q个目录中会(x)有相关的 .sh 檔,直接执行可以了(jin)Q注意的是一般要加上参数Q一般的参数有以?视Y件而定?x)有不?..
start Ȁz?
stop 停止
reload ?restart 重新Ȁz?
W二U方法就是直接?killallQ如我们要重新激z?inetdQ可用以下方?
# killall -1 inetd
或是
# killall -HUP inetd
q样可以重新激z这?daemon ?
20.
我要如何分割盘..
档案目录对于 FreeBSD (或者是所?unix-like pȝ)Q都是相当重要的Q如开始时Q分割的不是很恰当,日后׃(x)遇到一些麻?ch),如空间不?.{问?.
那么Q我们要如何分割比较恰当?.
q就有关于你的用途及(qing) FreeBSD 的目录架构了(jin)..
一般个人是你如此分?
1. / 根目录,一般在 250 ~ 500 MB l对够用Q以我的根目录来_(d)使用一q多?jin),也才用?jin) 66 MB 多。因个目录只是一?kernel modules sbin bin etc .. {目?
2. swap 档,一般h都不知道如何设较恰档Q这也没一个标准,最主要是要看你?ram ?qing)硬盘而言Q一般设?1-2.5 ?相对于你?ram)。如你的 ram ?256 mb 以上(?Q设成一倍;如在 64 - 128 mbQ则设成 2 ?
如要(g)查你?swap 使用状况Q可用以下指令来?.
# pstat -T
44/4044 files
0M/127M swap space
׃上可看出目前使用?swap ?0 Q设定的大小?128 M
/var 目录 ?/usr 目录
q二个目录一般都?x)占比较大的I间Q?var 的变动较?yu),以我个h来说Q一q前设ؓ(f) 8 GB Q在目前只用了(jin)不到 2GB?
但要注意的是一般的 mail 软gQ都是将信g存在 /var/mail/ 中,如果你的信g很多或很大,q个部䆾不妨加大一?.
?/usr q个目录能大q它大一点的I间Q因为所安装的程序,或是 hone 都是在这个目录下(如果你没?home 目录设成一个分? ..
那这两个要如何分配呢Q我的徏议是 usr ?var 的比例ؓ(f) 3:1Q或?2:1
4. 有些L使用者较多,如学校单位。如果你没将 home 设成一?partitionQ则 FreeBSD ?x)?home 安装?/usr 目录下,如果Z(jin)理?qing)安全问题,则不妨?home 分割为单一目录..
至于大小Q我惛_?3-5 GB 左右Q就l对够用?
我们来D个实际例子,假设你有一?40 GB 的硬盘,使用内存?sh)?128 MB RAMQ那我徏议你的硬盘如此分?.
1. / => 250 MB
2. swap => ?2 倍,?256 MB
3. /home 如要独立出来Q给?3-5 GB
4. 剩下来的?3:1 ?2:1 的比例设l?/usr ?/var
21.FreeBSD 在那Ȁzȝ?.
一?FreeBSD Ȁzd?x)依序执行以下位|的E序..
1. /etc/rc.conf q个档案内的E序Q如 sendmail、sshd .. 都是在此执行Q另外要注意的是Q在执行q个档案之前Q会(x)先参?/etc/defaults/rc.conf 的设?
2. /usr/local/etc/rc.d 下的一?.sh 檔,q些档案的权限都是被讑֮?x Q如 apache samba .. 都是在此讑֮
3. /etc/rc.local q里也可讑֮Q如我要?postfix 讑֮在此Q只需在这个档案内加一行,如下
/use/local/sbin/postfix start &
加上 & Q就不会(x)昄?gu)?
4. ?cron 所控制的一些档案,当时间到?jin),便?x)自动执行..
那心(j)l的人可能会(x)问, /etc/inetd.conf 内设定的呢?q些在第 1 就执行?.
?jin)解以上q时时注意是否有不明的程序在执行(可能是被人植入木马程?Q也是日常检视系l的重要工作..
21.有关 kernel 的激z?.
kernel ?unix-like pȝ来说Q是非常重要的一环,如果 kernel 损坏或编译出?jin)问题,可能会(x)导致严重的后?.
FreeBSD 一向以安全著称Q在q方面有什么防护的措施呢?
FreeBSD ?kernel 是放?/ 目录下,一般会(x)有二?
kernel
kernel.GENERIC
如果你有~译q核?kernel)的话Q则原先?kernel ?x){换成 kernel.oldQ新的核?j)?x)变成 kernelQ也是?/ 下的 kernel 档案如下:
kernel => 新编译过的核?
kernel.GENERIC
kernel.old => 原先的核?
?kernel.GENERIC 是什么呢Q这个是pȝ安装时所装好的,一般都不会(x)变动Q即使编译过核心(j)亦然Q这个档案可说是救命核心(j)Q最好不要ؕ动,理由如下所a..
FreeBSD ȀzLQ会(x)使用 kernel q个核心(j)Q如果这个档案不存在Q则?x)?kernel.old q个档案..
如果q二个档案不qR不在Q那怎么?.q时则会(x)q入 command prompt modeQ你必需自行输入 kernel 的名Uͼ?
boot <kernel 名称> ?
boot kernel.GENERIC
?jin)解以上之后Q在~译核心(j)无法正常执行Ӟ怿各位知道如何处理?.
22.加速你的按键速度..
怿使用 FreeBSD 的h很多都是?console 下操作吧Q有些时Q要重复某一按键速度实在很慢..
另一个问题就?cusror 的位|有些时不太明显..
可用以下Ҏ(gu)来改善:(x)
?/etc/rc.conf 中加入以下资?.
keyrate="fast"
cursor="blink" ?"destructive"
23.昄目录?qing)档?=> tree
有时需昄某个目录下所有的目录?qing)档案,虽?ls 可达到部份功能,但ƈ不是很方?.
?dos 中,有个 tree 指o(h)Q是不是满好用的..
其实?FreeBSD 中也有类似的指o(h) => tree..
以下我们透过 ports 来安?tree
# cd /usr/ports/sysutils ; make install
如此?x)?tree q个指o(h)安装?/usr/local/bin/ q个目录?.
使用例子:
1. 昄 /usr/ 下的目录?qing)档?
# tree /usr
2. 只显C?/usr 下的目录
# tree -d /usr
详细用法请参?man tree
PS:可透过道 | ?more 来显C?
?tree /usr | more..
24.mount nfts
但是在mount的时候和5.2.1{以前的5.x有点不同?
5.2.1{以前的5.x可以?
#mount_ntfs -C zh_CN.eucCN /dev/* /*来mount相应的ntfs分区?br />
但是?.3中需要这h才行?
#mount_ntfs -C eucCN /dev/* /*
需要去掉zh_CN.才可以正常mount,~辑fstab,加入
/dev/ad0s2 /ntfs1 ntfs ro,noauto,-C=eucCN 0 0
注意NTFS格式只读
mount iso:
在FreeBSD4.x下的Ҏ(gu)Q?
%vnconfig /dev/vn0c ./IMAGE.ISO
%mount -t cd9660 /dev/vn0c MOUNT_DIR
%umount MOUNT_DIR
%vnconfig -u /dev/vn0c
?.x以下则完全不同了(jin)Q?
%mdconfig -a -t vnode -f abc.iso -u 1
%mount -t cd9660 /dev/md1 MOUNT_DIR
%umount MOUNT_DIR
25.
如果控制台处于非安全状态,那么q入单用L(fng)态就需要口令认证了(jin)?/p>
提示Q更?etc/ttys中有关console的设|ؓ(f)insecure来保护单用户状态?br /> tty0改ؓ(f)insecureӞroot用户没法在console下直接登?/p>
26.freebsd下默认安装的戏在命o(h)是fetchQlinux下是wget
uname -R 操作pȝ版本Qfree昄内存Qswap的用情?/p>
27. vim代码颜色昄
修改$HOME中的.vimrc
syntax on(彩色)
syntax off(单色)
没有q个文gQ徏立一个就是了(jin)
28.
FreeBSDpȝ提供内核的源代码Q在安装pȝ时是否安装内总码与使用的不同安装选项有关。安装后的源代码位于/usr/src/sys目录中,如果q个目录不存在或者ؓ(f)I目录,则说明源代码没有安装。此时就必须重新安装内核源代码?/p>
仍然可以使用/stand/sysinstallE序Q选择Distribution选项来安装源代码Q也可以q行安装介质中src目录下的install.sh来安装。安装FreeBSD内核源代码之后,?fn)惯上还创徏了(jin)一个符可?sysQ指?usr/src/sys目录Q以方便使用?/p>
29. n>&m
使文件描q符n指向文g描述Wm相同的文?/p>
30.
你已l修改了(jin)motdq从中删除了(jin)内核版本信息Q默认情况下FreeBSD仍然?x)在启动之后把这些东西加?/etc/motd 。因此需要修?/etc/rc.conf q加入下面的讄Q?br />
update_motd="NO"
31.
修改d提示Q编?/etc/gettytab. 扑ֈ default:\\ 节Q它以下面的文字开_(d)(x)
:cb:ce:ck:lc
%s -->OS
%m -->Architecture
%h -->Hostname
%t -->tty name
心(j)C?\\r\\n\\ \\r\\n\\r\\nr\\n: 之间的文字来适应自己的需要。请仔细(g)?\\r ?\\n 的数量,q保存(sh)攏V例如,我的d提示是这L(fng)Q?br />
I''m a node in cyberspace. Who are you?
login:
可以在其他终端上试dQ以认正确性?/p>
32.
(1)启动日志
修改/etc/rc.conf文g?br />
#记录SSHq接记录
security.*;auth.info /var/log/security #记录q接到SSH的日志信?
auth.* /var/log/authlog
33.
用下面的命o(h)可以查看哪些服务正在试图监听q接你的pȝQ?br />
sockstat -4
34.
你可能需要,也可能不需要打开q个端口Q这取决于用什么样的邮件程序来收发邮g。对于运?FreeBSD 4.6-RELEASE 或更高版本的pȝQ在/etc/rc.conf中增加下面的行:(x)
sendmail_enable="NO"
告?sendmail 只监?localhostQ这允许所有的邮g客户E序发送邮件。如果你知道你的邮g客户E序带有内置的SMTP代理Q或者喜Ƣ冒险,那么可以试一下:(x)
sendmail_enable="NONE"
q将d关闭25端口。检查一下这是否让你无法发送邮件是很重要的Q确保已l关掉了(jin)所有应用程序,随后Q以用户w䆾执行Q?br /> shutdown now
收到提示后按回R、exit。重新登录后l自己发一邮Ӟ如果收不刎ͼ那么把NONE改回NO?/p>
如果你的"sockstat"昄端口111打开Q那么把下面几行加到 /etc/rc.conf (或者,如果已经有这些行Q把 YES 改ؓ(f) NO):
nfs_server_enable="NO"
nfs_clIEnt_enable="NO"
portmap_enable="NO"
35.
syslog (端口 514) 也可能出现在你的输出l果中。我们可能ƈ不希望完全关?syslog Q因为它提供的消息记录是我们需要的。但我们q不需要ؓ(f)此打开端口。在 /etc/rc.conf 文g中增加下面的选项:
syslogd_enable="YES"
syslogd_flags="-ss"
标志中的ss (认用了(jin)两个sQ而不是一? 禁止来自远E主机的记录q关闭端口,但仍然允?localhost q行日志记录?/p>
36.
你可能希望禁止一切远E登录(q意味着你必ȝ理地坐在机器前面Q,删除下面q一行前面的#P(x)
#-:wheel:ALL EXCEPT LOCAL .win.tue.nl
?.win.tue.nl LQ于是它看v来将像这P(x)
-:wheel:ALL EXCEPT LOCAL
如果你需要从q程dQ那么把.win.tue.nl 替换为相应的IP或域名。如果有多个地址Q用I格分开?/p>
如果只有一两个用户的话Q那么可以拒l其他hdQ?br /> -:ALL EXCEPT user1 user2:ttyv0 ttyv1 ttyv2 ttyv3 ttyv4
用具体的用户名替换掉 user1 user2 。如果需要的话,增加相应的tty?/p>
另外Q也可以把用L(fng)方在q里。首先,~辑 /etc/group q增加下面的行:(x)
mygroup:*:100:genisis,dlavigne6,biko
当增加组Ӟ需要保证GID的唯一性?/p>
随后Q修?/etc/login.access Q?br /> -:ALL EXCEPT mygroup:ttyv0 ttyv1 ttyv2 ttyv3 ttyv4 ttyv5
试它非帔R要,一定要留一个终端。测试每一个终端上的登录,认其效果?/p>
37.
拒绝直接以rootw䆾dQ?
?etc/ttys文g中,?secure"标记改ؓ(f)"insecure"标记Qɾpȝ在进入单用户模式时会(x)要求root密码。但是这样以来也为恢复root密码刉了(jin)障碍——安全和易用再次形成?jin)矛盄两个对立面?
38.
#扑և你所有的可写入目录,
#find / -perm -0777 -type d -ls
39.
配置SSH
修改/etc/ssh/ssh_config文g
(1)使用protocol 2代替protocol 1QSSH2更加安全Q可以防止攻击者通过修改携带的版本banner来劫持(hijackingQ启动会(x)话进Eƈ降低到protocol 1。注释掉protocol 2,1 改用下面语句代替Q?
protocol 2
(2)合理讄最大连接数量, 防止DOSd
MaxStartups 5:50:10
(3)止q程root和空密码dQ徏议关闭X11forwording
X11Forwarding no
(4)强烈不用静(rn)态密码,而用DSA 或RSA KEYQ修改如下内容可以关闭用密码认证:(x)
PasswordAuthentication no
(5)可以限制l或光是单个用户讉Kshell
AllowGroups wheel
AllowUsers xundi
(6)使用TCP wrappers来限制一些访问,修改/etc/hosts.allow文gQ注释掉"ALL : ALL : allow"Q增加如下内容:(x)
sshd:localhost:allow
sshd:friendlcomputer:allow
sshd:all : deny
#相关命o(h)Q?
#chsh -s /sbin/nologin user
40.
FreeBSD下面
$ md5 4.1-install.iso
MD5 (4.1-install.iso) = 782d53b69c9e9ae89678c925ba6b6647
Linux下面
$ md5sum 4.1-install.iso
782d53b69c9e9ae89678c925ba6b6647 4.1-install.iso
41.
升源码?
安装cvsup
q入Q?usr/ports/net/cvsup
make clean
make deinstall
make install
make clean
卛_
升pȝ源码?wi)?qing)ports
更新/usr/share/examples/cvsup目录下stand-cvsup和ports-cvsup文gQƈ执行cvsup –g –L2 standard-supfile和cvsup –g –L2 ports-cvsup两个文gQ升Uports?wi)?
42.
如何让FreeBSD的csh像bash那样按tab列出列出无法补齐的候选文Ӟ
{:(x)标准的方法是按Ctrl+D。但如果一定要用tab的话Q在/etc/csh.cshrc中加入:(x)
代码:
set autolist
43.
FREEBSD-6.0更新到稳定版
首先安装FreeBSD的系l源代码和Ports
# mount -t cd9660 /dev/acd0 /mnt/
# cd /mnt/6.0-RELEASE/ports
# ./install.sh
# cd /mnt/6.0-RELEASE/src
# ./install.sh all
更新FreeBSD的系l源代码以及(qing)Ports
# cd /usr/share/examples/cvsup
# vi standard-supfile
*default host=cvsup4.FreeBSDChina.org
*default release=cvs tag=RELENG_6
# cvsup -g -L 2 /usr/share/examples/cvsup/standard-supfile
# cvsup -g -L 2 /usr/share/examples/cvsup/ports-supfile
~译生成新的pȝ二进制文?
# cd /usr/src
# make buildworld
# make installworld
# reboot
现在Q你的系l已l是最新的?jin)。注意新的系l升U完成之后一些原先安装的软g最好重新安装,否则很容易引发一些意想不到的问题?
44.
问:(x)tcshQcsh兼用Q?提示W的变量常用的都有哪些?
{:(x)
! ?h一?
%B 开始粗体模?
%b l束_体模式
%c 当前工作目录名称的最后部?
%c2,%c3{等 当前工作目录名称的最后两个、三个({等Q组成部?
%C ?ccMQ但是用长形式的目录名U?
%d 本周的当?
%D 今天是当月中的第几天
%h 当前命o(h)的历史记录编?
%l shell的当前控制终?
%L 清除从提C符末尾C一行的所有内?
%m 机器的主机名U?
%M 机器的完全符合规范的域名
%n 用户?
%p 用精格式(包括U)(j)昄?2时制时?
%P 用精格式(包括U)(j)昄?4时制时?
%S 开始标准输出格?
%s l束标准输出格式
%t ?2时制格式显C时?
%T ?4时制格式显C时?
%U 开始下划线模式
%u l束下划U模?
%w 当前月的名称
%W 当前月的序数
%y ?位格式表C的q?
%Y ?位格式表C的q?
%% %字符
%! ?h相同
%
?t相同
$# 扩展?gt;供常规用,如果用户正以rootw䆾q行的话Q就扩展?
%/ 当前工作目录的完整名U?
%- 以短格式表示的当前工作目?
^C 跟C匚w的控制字W:(x)例如^G代表Ctrl+G
\\a 使tcsh在Q何时候显C提C符时嘟嘟响
\\e l止的escapeW?x1B
\\f l止的换늬
\\n 在这个位|开始一个新?
\\r 回RW?
\\t Tab制表W?
\\v 垂直制表W?
\\nnn 由八q制数字nnn所指定的字W?/p>
45.
?console 下操作时Q由于屏q显C有限,有时需看前面显C的资料Q这时你可:(x)
. 按一?Pause or Scroll Lock键后Q则可利?PageUp PageDown Up Down Home End {键来看前后昄的资?
. 再按一?Pause or Scroll Lock则可回复{待输入画面.
46.
加快你的开机速度..
严格说v来,FreeBSD 的开机速度满快的Q不q中间会(x)有个 10 U的延迟旉(以便让你q入 boot ?command prompt mode)Q如果你嫌这10U还是太慢了(jin)Q那你可时?#123;短一?.
FreeBSD ȀzL?x)先d?/boot/defaults/loader.conf 档的讑֮Q然后再参?/boot/loader.confQ一般我们都不去?#123;?/boot/defaults/loader.conf q个档,而直?#123;?/boot/loader.conf..
只要?/boot/loader.conf 中加上以下这一行即?
autoboot_delay="U数" 卛_Q如
autoboot_delay="7" 代表7U?
q样开机是不是更快?.
另外Q有旉可参考一?/boot/defaults/loader.conf q个档案的设定,其中有许多实用的讑֮?.
47.
$lock -p
当你使用l端登陆时想暂时d而又不想logout,那么可以用lock -p.
当你q回时输入密码就可以.
apt-get install scimQ当然前提是你要讄好源Q具体见http://wiki.ubuntu.org.cn/%E5%BF%AB%E9%80%9F%E8%AE%BE%E7%BD%AE%E6%8C%87%E5%8D%97, 有些高校自己内部也有源的Q好好找?
已l安装好SCIM?jin)!当然q(sh)能用。因为SCIM只是一个输入法q_Q还要在上面安装输入法(或者码表)(j)。例如,
apt-get install scim-chinese
可以用智能拼韌入法?jin)!当然在用之前还要先配置一下,配置Ҏ(gu)很简单,?etc/X11/Xsession.d/里新Z个名?5xinput的文Ӟ文g内容如下
/usr/bin/scim -d
XMODIFIERS="@im=SCIM"
export XMODIFIERS
export GTK_IM_MODULE=scim
保存文gQ确认内Ҏ(gu)误后Q退出XQ徏议退出X后运行exit命o(h)重新l(f)ogin一ơ)(j)Q再q入X的时候就可以用Ctrl+Space调出SCIM?jin)?br /> 我的试验情况,q样已经可以在qterm里用SCIM?jin)?/p>
如果你需要其它中文输入法Q可以这?/p>
apt-get install scim-tables-zh
q包括了(jin)体中文的五笔、二W、广东拼韟뀁自然码Q和J体中文的行列?}頡五代、大易、注音等输入法了(jin)?br /> 我现在用五W输入法Q能输入J汉字,词汇也丰富,很好用?/p>
但是现在q(sh)能在ZGTK的Y件中调出SCIMQ例如我׃能在leafpad里用SCIM。解军_法很单,只要安装scim-gtk2-immodule可以了(jin)?
apt-get install scim-gtk2-immodule
安装后无重启XQ只要重新打开ZGTK的Y件就可以?jin),比如我新开一个leafpadQ马上就可以使用SCIM?jin)?/p>
q个命o(h)?x)根据依赖关p自动安?scim-server-socket, scim-frontend-socket, scim-config-socketQ如果没有安装scimQ也?x)自动安装?br />
shlight对中文支持也很好, 我在FreeBSD 5.2上测试过
# cd /usr/ports/net/sharity-light/ # make all install clean # mkdir /music # echo "10.0.0.1 winhost" >> /etc/hosts # shlight //winhost/music /music -U user -P password # unshlight /music 在freebsd中安装vmware虚拟机工具包Q方法如下:(x)
在虚拟机的VM菜单下选择安装Tools,(tng)
1.mount /cdrom
2.cd /cdrom 有一个文件vmware-linux*.tar.gz
3.cp vmware-linux*.tar.gz /tmp
4.cd /tmp
5.tar zxvf vmware-linux*.tar.gz
6.q入解压目录 cd vmware-tools-distrib
7.q入解压后的目录q行安装命o(h)./vmware-install.pl ok?br />
解压tar文gq
tar jxvf xx.tar <目标路径>
fcitx 安装
2、源码包的安装;[root@localhost beinan]# tar jxvf fcitx-3.2-050827.tar.bz2
[root@localhost beinan]# cd fcitx
[root@localhost fcitx-3.1.1]# ./configure
[root@localhost fcitx-3.1.1]# make
[root@localhost fcitx-3.1.1]# make install
三、Fcitx 3.x的配|;让fcitx q入桌面自动q行Q方法有二;
Ҏ(gu)一Q?br />请在 /etc/X11/xinit/xinput.d/ 目录中查看文件zh_CN Q如果没有就Z个;把里面的内容改ؓ(f)如下的;
XIM=fcitx
XIM_PROGRAM=fcitx
GTK_IM_MODULE=fcitx
gnome-im-settings-daemon >/dev/null
Ҏ(gu)二:(x)
?HOME/.xinput.d/里徏立文件zh_CNQ包含下面内? 可以了(jin)Q?br />XIM=fcitx
XIM_PROGRAM=fcitx
GTK_IM_MODULE=fcitx
XMODIFIERS="@im=fcitx"
gnome-im-settings-daemon >/dev/null
如果当前用户目录下没?.xinput.d目录Q就Z个。然后再Z个zh_CN的文Ӟ内容是上面的那Dc(din)?[root@localhost beinan]# mkdir ~/.xinput.d
q样差不多能用h?jin)。直接运行一下命令;
[root@localhost beinan]# fcitx
如果不能使用fcitx Q可能得讄讄一下变量;q得讄一下当前用L(fng)环境变量Q也是在你想用的那个用L(fng)家目录下?.bashrc 文g?/p>
.bashrcq个文g是隐藏的Q你可以?vi 或者gedit~辑都行。看你习(fn)惯吧?/p>
在里面加两行Q如下:(x)
export LC_CTYPE="zh_CN"
export XMODIFIERS="@im=fcitx"
注意保存?sh)下,否则不v做用Q?我是刚安装好的系l,一切都是新的,看一下我的beinanq个用户下的 .bashrc的配|吧?/p>
# .bashrc
# User specific aliases and functions
export LC_CTYPE="zh_CN"
export XMODIFIERS="@im=fcitx"
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
存在的问题;如果(zhn)用中文桌面环境Q能启动fcitx Q但不能输入Q大多是控制台的locale和桌面的locale不一致所引v的?/p>
请在用户家目录下?bashrc 中加入一行;
export LANG="zh_CN.UTF-8"
另外q在Z?.i18n的文Ӟ内容如下Q?/p>
LANG="zh_CN.UTF-8"
重启X好?jin),按CTRL+ALT+BACKSPACEQ就重新启动pȝQ?br />
http://www.linuxsir.org/main/?q=node/51 从源代码安装参考的例子
修改shellq不ȝl的解决办法
如果(zhn)把root的shellҎ(gu)?jin)bashQ很多h因ؓ(f)bash的强大功能而选择?jin)它Q或者是从linux转到BSD上的Q习(fn)惯了(jin)bashQ,而导致进不去pȝ?jin),可以通过以下几种方式解决Q?
一Q系l启动时Q选择?”,q入“单用户”模式,输入“boot (tng)-s”进入单用户的提C符“#”,依次键入如下命o(h)Q?(tng)
fsck (tng)-p
mount (tng)-u (tng)/
mount (tng)-a (tng)-t (tng)ufs
swapon (tng)-a
chsh (tng)-s (tng)/bin/csh
在FreeBSD中安装JDK
下蝲~绎好的JDK1.5Q解压至/usr/local/jdk1.5.0
#ln (tng)-s (tng)/usr/local/jdk1.5.0 (tng)java
#ln (tng)-s (tng)/usr/local/jdk1.5.0 (tng) (tng)/usr/local/java
#ln (tng)-s (tng)/usr/local/java/bin/java (tng) (tng)/usr/local/bin/java
#ln (tng)-s (tng)/usr/local/java/bin/javac (tng) (tng)/usr/local/bin/javac
#ln (tng)-s (tng)/usr/local/java/bin/jar (tng) (tng)/usr/local/bin/jar
~辑/etc/profileQ添加JAVA_HOME=/usr/local/java
重新dpȝQ执行?tng)java (tng)-versionQ如果看到JDK版本P则说明安装成?
已编译好的FreeBSD版本的JDK?br />http://download.chinaunix.net/download/0013000/12304.shtml
可以下蝲Q这是用unix原始的安装方式,没用用到freebsd 的pkg,ports来安装所以你要下载tar.bz2打包的版本,
q都是已l编译好的。不需要再~译Q只需要按上面的脚本配|环境即可?br />http://sunfly.bokee.com/5412914.html 常用的目录及(qing)文g命o(h)
在FreeBSD中两U不同的Shell环境变量讄
上次安装tomcat老运行不h的原因就在于此了(jin)Q当时只是设|了(jin)/etc/profile里的环境变量Q说
实话Q我现在q弄不懂那些Shell用读取这个文?
?cshrc中的格式:代码:# path
set path = (/usr/local/share/mydir/j2sdk1.4.2_07/bin /sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin /usr/local/bin)
# Java home
setenv JAVA_HOME /usr/local/share/mydir/j2sdk1.4.2_07
setenv CLASSPATH .:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/jre
setenv CALSSPATH /usr/local/jdk1.4.2/lib/tools.jar:/usr/local/share/java/classes
?bashrc中的格式:代码:JAVA_HOME=/usr/local/share/mydir/j2sdk1.4.2_07
CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/jre
PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
export JAVA_HOME PATH CLASSPATH
http://tom.yesky.com/biz/cbfwq/407/2696907.shtml q是一介lFreeBSD Shell的好文章
查看到当前系l所开启的服务端口
netstat -an
1、中文locale
目前FreeBSD 5.2所支持的简体中文locale有以下几个:(x)2、设?etc/profile
2.1、安装自已熟(zhn)的shell (以bashZ)~辑->当前配置文g(U)...Q打开“标题和命?选项卡,选中”以shell方式q行命o(h)”后关闭即可?/p>
3、fat32、ntfs、cd9660分区中文文g名的问题?/p> 3.1、以前中文目录有gbfs port支持Q现在无需安装gbfs卛_实现fat32分区中文文g名的昄。方法是在执行mount_msdosfs时加?L zh_CN.eucCN的参敎ͼ如:(x)
4、gnome2中xmms?qing)gimp中文q的问题?/p> q两个程序都Z较老的gtk+1.2Qؕ码的问题可在用户目录下徏?gtkrc.mine文gQ?
5、让~辑器vi增加更多的功能:(x)
首先定你的vim是否安装?jin)?6、mozilla{浏览器的插?flash,acrobat)Q?/p> 首先请安装linuxpluginwrapper的port:
7、nvidia官方驱动?/p>
先安装nvidia的port:
?/p>
本文目标
Step 1使用SSHq程理FreeBSD
Step 2 FreeBSD中停用Sendmail服务
Step 3修改用户ShellQ用Shell更加方便
Step 4讄FreeBSD的字W下的屏q保?/p>
Step 5更改|络讄(IP地址QDNSQ网?
Step 6忘记root用户密码的解x(chng)?/p>
Step 7FreeBSD的时间调整与旉同步
F.A.Q.
Links to other sources
?
pȝ安装完成后,q需要进行一pd的配|?/p>
本文目标.
通过Ҏ(gu)文的学习(fn)Q?zhn)可以使用SSHq程理服务器,停止Sendmail,修改用户shellQ设|屏q保护?/p>
· 使用SSHq程理FreeBSD?/p>
· FreeBSD中停用Sendmail服务?/p>
· 修改用户ShellQ用Shell更加方便?/p>
· 讄FreeBSD的字W下的屏q保?/p>
· 更改|络讄(IP地址QDNSQ网?
· 忘记root用户密码的解x(chng)?/p>
Step 1 SSHq程理FreeBSD.
· PuTTY介绍Q下载?/p>
· PuTTY的用?/p>
· PuTTY的用证书验证?/p>
跟随下面步骤q行q程理FreeBSD.SSH是英文Secure Shell的简写Ş式。通过使用SSHQ你可以把所有传输的数据q行加密Q这?中间?q种d方式׃可能实现?jin),而且也能够防止DNSƺ骗和IPƺ骗。用SSHQ还有一个额外的好处是传输的数据是l过压羃的,所以可以加快传输的速度。SSH有很多功能,它既可以代替TelnetQ又可以为FTP、Pop、甚至ؓ(f)PPP提供一个安全的"通道"?/p>
PuTTY介绍Q下?/p>
一般常见的SSHq程工具
Windows下有很多SSH的远E管理工P比如Putty.exeQPuTTY是免费的SSHq接工具。可以到PuTTY的官方网站下载。下载后无需安装Q直接双d可运行?/p>
PuTTY的?/p>
打开PuttyQ输入主机IP192.168.0.9q接
输入pȝ安装Ӟd的wheell内的用户名mongolia和密?/p>
成功登陆后,你可以在q程对FreeBSD的服务器Q进行管理和l护?jin)?/p>
q是d成功的界?/p>
PuTTY的用证书验?/p>
1、下载Putty
Putty.exe作用是连接运行服务器
下蝲后不需要安装,l色软g直接q行卛_
2、下载Puttygen.exe
Puttygen.exe作用是用来生成密?/p>
PuttYgen 是密钥生成器Q用来生成一对公钥和U钥供PuTTY、PSCP、Plink、Pagent 来用?/p>
3、运行Puttygen.exe生成密钥
q行Puttygen.exe---->Parameters选项选择----->SSH-2 RSA------> 点击Generate 按钮开始生成密?可以在程序Key下方的空白处Ud鼠标Q直到生成密钥结?---->点下面的Save private key把私钥保存v来,扩展名是.ppk 的文件?strong taggedby="hylanda">此时不要关闭E序?/p>
q行Puttygen.exe
生成密钥
存储U钥
4、连接远E服务器Q上传密?/p>
使用Putty登陆q程服务器,在用L(fng)录下Q创建~/.ssh/authorized_keys
例如Q?/p>
mongolia@WOW[/home/mongolia]%mkdir ~/.ssh
mongolia@WOW[/home/mongolia]%cd ~/.ssh
mongolia@WOW[/home/mongolia/.ssh]%vi authorized_keys
Shell:
mkdir ~/.ssh
cd ~/.ssh
vi authorized_keys
复制Puttygen.exeE序Public key for pasting into Open SSH authorized_keys file:下面的内容到服务器上的authorized_keys文g中粘贴ƈ保存退出?/p>
5、用Putty密钥方式验证自动登陆
打开Putty.exe------>Session------>Host name(or IP address)输入q程服务器IP地址----->Connection------>data------>Auto-login username输入用于登陆的用户名-------->SSH---->Auth------>Private key file for authentication:----->点击Browser选择C保存U钥(.pkk)的文件?--->Open自动登陆到服务器上了(jin)?/p>
打开Putty.exe------>Session------>Host name(or IP address)输入q程服务器IP地址
Connection------>data------>Auto-login username输入用于登陆的用户名
SSH---->Auth------>Private key file for authentication:----->点击Browser选择C保存U钥(.pkk)
Open自动登陆到服务器上了(jin)
Shell:
su - root
Step 2 FreeBSD中停用Sendmail服务.
FreeBSD中停?/strong>Sendmail服务:
停止Sendmail
停止SendmailQ解决系l在Sendmail处,无响应的问题
使用q程理用户Q登陆系l后需要切换到root理员权?/p>
monglia@Wow[/]su – root
Shell:
su - root
~辑/etc/rc.conf
root@Wow[/root]ee /etc/rc.conf
Shell:
vi /etc/rc.conf
增加以下内容Q用来停止sendmailQ?/p>
sendmail_enable="NO"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"
Editor:
#Sendmail
sendmail_enable="NO"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"
保存q出?/p>
Step 3 修改用户Shell.
修改用户ShellQ其更加方?/strong>: 修改root用户Shell的设|?/p>
FreeBSD中,使用普通用L(fng)录后默认的shellQ显C简单的%?W号Qƈ且没有高?sh)显C?/p>
Z用方便,可以修改shellQ支持高?sh)和自定义命令?/p>
默认shell的简单显C?/p>
昄用户ȝ录的所有文Ӟ?后面输入命o(h)ls –a %ls -a Shell: ls -a 说明%表示pȝ自动昄出来的,ls –a才是输入的命?/strong> ~辑.cshrc配置文g, %ee .cshrc Shell: ee .cshrc ?cshrc中增?行alias ls ls -G支持高(sh)昄 Editor: alias h history 25 alias j jobs -l alias la ls -a alias lf ls -FA alias ll ls -lA alias ls ls -G ?cshrc中增?行set prompt = “%B%n@%m[%/]”支持高(sh)昄用户当前所在的目录 %B表示高(sh)昄%n表示用户?/strong>@%m表示计算机名[%/]表示用户当前所在的目录 Editor: if ($?prompt) then # An interactive shell -- set some stuff up set prompt = "%B%n@%m[%/]%" set filec set history = 100 set savehist = 100 set mail = (/var/mail/$USER) 修改setenv BLOCKSIZE为M Editor: setenv EDITOR vi setenv PAGER more setenv BLOCKSIZE M 修改前:(x) setenv EDITOR vi setenv PAGER more setenv BLOCKSIZE K 修改后:(x) setenv EDITOR vi setenv PAGER more setenv BLOCKSIZE M 讄PACKAGESITEq个环境变量Q在setenv BLOCKSIZE M下面d以下内容?/p>
#setenv PACKAGESITE ftp://ftp2.jp.freebsd.org/pub/FreeBSD/ports/i386/packages-6.2-release/Latest/ [setenv BLOCKSIZE M]下面加入q?行;作用是加快安装程序时的下载速度。找各大FTP 同步站台选择相同目录找一个离你最q的 可用[? ping http://ftp.twaren.net 看回应D对你主机速度快]辚w是选FreeBSD中国镜像服务?大家依各自需求选择卛_Q[后面2个是备选网址] Editor: setenv EDITOR vi setenv PAGER more setenv BLOCKSIZE M setenv PACKAGESITE ftp://ftp.cn.freebsd.org/pub/FreeBSD/ports/i386/packages-6.2-release/Latest/ #setenv PACKAGESITE ftp://ftp.tw.freebsd.org/pub/FreeBSD/ports/i386/packages-6.2-release/Latest/ #setenv PACKAGESITE ftp://ftp2.jp.freebsd.org/pub/FreeBSD/ports/i386/packages-6.2-release/Latest/ if ($?prompt) then # An interactive shell -- set some stuff up ------------------------------------- ~辑完成后,按键盘(sh)的Esc键,跛_下面的菜?/p>
选择a) leave editor询问是否保存选择a)save changes然后按回车键Q退出编辑器?/p>
(Z(jin)?/strong>shell讄生效)输入指o(h)source ~/.cshrc佉K|立即生?/p>
Shell: source ~/.cshrc shell界面发生变化?/p>
输入lls命o(h)后,现在已经可以高(sh)昄 monglia@FreeBSD[/]ls Shell: ls Step 4 FreeBSD字符下的屏幕保护. FreeBSD字符下设|屏q保?/strong>: Ҏ(gu)1、编?etc/rc.conf文g 使用q程理用户Q登陆系l后需要切换到root理员权?/p>
monglia@Wow[/]su - root Shell: su - root 使用root用户~辑/etc/rc.conf文g root@Wow[/root]ee /etc/rc.conf Shell: ee /etc/rc.conf d blanktime=”60”(讑֮屏保旉?/strong>60U?/strong>) saver=”daemon” (屏保内容?/strong>FreeBSD吉祥?/strong>) Editor: #Saver blanktime="60" saver="daemon" 保存q出?/p>
Ҏ(gu)2、用sysinstall囑Ş界面q行讄 root用户q行sysinstall root@Wow[/root]sysinstall Shell: sysinstall 选择Configure------Console------Saver-----Timeout(讄屏保旉60U?Daemon(字符格式的守护精灵图? 屏保效果Q够Cool吧^_^ Step 5 FreeBSD|络相关讄. FreeBSD|络相关讄: 更改IP地址(需要root权限) Ҏ(gu)1、在命o(h)行输入ifconfig(命o(h)) de0(|卡) 192.168.0.8(IP地址) Shell: ifconfig de0 192.168.100.8 root@WOW[/root]#ifconfig de0: flags=8843 mtu 1500 inet 192.168.100.8netmask 0xffffff00 broadcast 192.168.100.255 ether 00:03:ff:41:7c:43 media: Ethernet autoselect (100baseTX) status: active plip0: flags=108810 mtu 1500 lo0: flags=8049 mtu 16384 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3 inet6 ::1 prefixlen 128 inet 127.0.0.1 netmask 0xff000000 Ҏ(gu)2、修?etc/rc.conf文gQ?/p>
IP地址为inet 192.168.0.88 L名ؓ(f)WOW.sunny.com |关地址?92.168.100.254 Shell: vi /etc/rc.conf Editor: # -- sysinstall generated deltas -- # Tue Apr 17 17:37:54 2007 # Created: Tue Apr 17 17:37:53 2007 # Enable network daemons for user convenience. # Please make all changes to this file, not to /etc/defaults/rc.conf. # This file now contains just the overrides from /etc/defaults/rc.conf. defaultrouter="192.168.100.254" hostname="WOW.sunny.com" ifconfig_de0="inet 192.168.100.88 netmask 255.255.255.0" Ҏ(gu)3、root用户q行sysinstallq行囑Ş介面配置 注:(x)要是单网卡想帮定多个IPQ可以这栯|?/strong> ifconfig_de0_alias0="inet 192.168.100.8 netmask 255.255.255.0" ifconfig_de0_alias1="inet 192.168.100.119 netmask 255.255.255.0" Editor: # -- sysinstall generated deltas -- # Tue Apr 17 17:37:54 2007 # Created: Tue Apr 17 17:37:53 2007 # Enable network daemons for user convenience. # Please make all changes to this file, not to /etc/defaults/rc.conf. # This file now contains just the overrides from /etc/defaults/rc.conf. defaultrouter="192.168.100.254" hostname="WOW.sunny.com" ifconfig_de0="inet 192.168.100.88 netmask 255.255.255.0" ifconfig_de0_alias0="inet 192.168.100.8 netmask 255.255.255.0" ifconfig_de0_alias1="inet 192.168.100.119 netmask 255.255.255.0" alias0(表示别名Q用1块网卡通过别名虚拟Q多出来1?/strong>IP地址) 此时q台FreeBSD服务器拥有了(jin)3?/strong>IP地址?/strong> 修改MAC地址 Ҏ(gu)1、直接用命令改 ifconfig(命o(h)) de0(|卡? ether(改MAC) 00:02:A5:BC:21:3A(新MAC地址) Shell: ifconfig de0 ether 00:02:A5:BC:21:3A ~点是重启后讄自动消失 Ҏ(gu)2、修?etc/rc.conf文g使用别名方式 ifconfig_de0_alias0="ether 00:02:A5:BC:21: Editor: # -- sysinstall generated deltas -- # Tue Apr 17 17:37:54 2007 # Created: Tue Apr 17 17:37:53 2007 # Enable network daemons for user convenience. # Please make all changes to this file, not to /etc/defaults/rc.conf. # This file now contains just the overrides from /etc/defaults/rc.conf. defaultrouter="192.168.100.254" hostname="WOW.sunny.com" ifconfig_de0="inet 192.168.100.88 netmask 255.255.255.0" ifconfig_de0_alias0="ether 00:02:A5:BC:21: 修改DNS讄 FreeBSD的DNS配置文gQ是/etc/resolv.conf 查看现在DNS配置 Shell: root@WOW[/root]#cat /etc/resolv.conf domain sunny.com nameserver 202.106.196.115 d新DNS服务?02.106.0.20?etc/resolv.conf Shell: echo nameserver 202.106.0.20 >>/etc/resolv.conf 查看现在DNS服务器配|?/p>
Shell: root@WOW[/root]#cat /etc/resolv.conf domain sunny.com nameserver 202.106.196.115 nameserver 202.106.0.20 Step 6忘记root的密码怎么? FreeBSD下忘?/strong>root的密码怎么?/strong>: 重置root用户密码 重新启动FreeBSD服务器,出现模式选择Ӟ选择单用h?/p>
选择4 Boot FreeBSD in single user Mode pȝ出现shell提示Q按回R键确?/p>
非正常启动后Q检查系l文件。输入fsck -y(参数y表示自动修复) #fsck -y Shell: fsck -y 盘?gu)(g)查完成后Q挂载所以系l分区。输入mount -a #mount -a Shell: mount -a 重置root用户密码。输入passwd回R #passwd Shell: passwd 认密码后,千万不要d的reboot重启呀。按下Ctrl+Dpȝ׃(x)l箋启动Q密码重讑֮成?/p>
pȝ重新启动后,输入用户名和密码Q即可以d?/p>
Step 7 FreeBSD调整旉与同? FreeBSD下时间调整与同步: 调整pȝ旉 需要root权限Qdate命o(h)+q年月月日时时分分,例如调整pȝ旉?007-11-2311:18 Shell: date 0711231118 查看pȝ旉 查看pȝ旉Q可以用date+%Y/%m/%d/%H:%M命o(h) Shell: date +%Y/%m/%d/%H:%M 2007/11/23/11:19 同步pȝ旉 使用ntpdate +旉服务器,命o(h)?/p>
中国旉服务器cn.pool.ntp.org Shell: /usr/sbin/ntpdate cn.pool.ntp.org 23 Nov 10:44:59 ntpdate[1929]: step time server 218.21.130.42 offset -2327.466568 sec date +%Y/%m/%d/%H:%M 2007/11/23/10:46 讑֮某个旉Q要求系l自动与旉服务器同步进行调整时?/strong> FreeBSD{?cM)Unixpȝ的设?/p>
1) 保计算机的123端口没有被防火墙LQ?/p>
2) 用rootdQ?/p>
3) 修改/etc/crontab文gQ加入以下一行命令:(x) 0 23 * * * root /usr/sbin/ntpdate cn.pool.ntp.org>/dev/null 以上命o(h)讄好后存盘。?zhn)的机器将在每天?3:00Ҏ(gu)中国旉服务器的NTP服务器时间自动校准时间?/p>
(tng)
8 (tng) d脚本ȝ
下表ȝ?jin)每?shell 的登录脚本第一ơ登录后所有脚本都运行有?br />POSIX C Key ?Bourne Shell 的详l信息请参阅Shells: User's Guide
?-3 各种 Shell ?qing)其d脚本
Shell (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) pȝd脚本本地d脚本
POSIX (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) /etc/profile $HOME/.profile
C (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) /etc/csh.login $HOME/.cshrc
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) $HOME/.login
Bourne (tng) (tng) (tng) (tng) (tng) (tng) 已过?etc/profile $HOME/.profile
使用 Shell
讄和引用变?br />92 W?3 ?br />讄和引用变?br />shell 使用环境变量?shell 变量定义环境d shell 使用环境变量q将q些
变量传递到所有进E和创徏?subshell 仅用户当前的 shell 可以识别 Shell ?br />量但q些变量不会(x)被传递到 subshell
$ POSIX shell 使用赋D句和可选的 export 命o(h)讄变量在所?shell ?br />通过在变量名前加一个货币符?($) 来引用变量?br />为变量赋?br />?POSIX shell 中可以ؓ(f)变量赋值或对变量进行设|如有必要还?br />以创建变量用赋D句可以完成这两项d
name=value
name 表示变量名value 表示为变量赋的值name ?= 之间?= ?value ?br />间不允许有空?br />在以下示例中?shell 提示W?(PS1) 重新讄?br />Ready ==>
如果 PS1 ?shell 变量?subshell 通过键入 sh 创徏不会(x)识别新值如?br />导出 PS1 PS1 的值将传递到 subshell
$ PS1="Ready ==> " 讄 shell 变量 PS1
Ready ==> sh 键入 subshell ?br />$ exit Subshell 当前有缺省提C符退出到原始 shell
Ready ==> export PS1 使用 export 讄环境变量
Ready ==> sh q入 subshell
Ready ==> Subshell 识别新的 PS1 ?br />Ready ==> exit 退?subshell
Ready ==> PS1="$ " 使用 export 讄环境变量
$ q回到正常的工作环境
使用 Shell
讄和引用变?br />W?3 ?3
引用变量的值参数替?br />三种 shell 都用参数替换引用变量值参数替换表C用变量值替换变量名
如果在变量名前加一个货币符?($) 卛_生参数替?br />例如在上文我们已?jin)解到如何用命?echo $SHELL 定d shell
$ echo SHELL ׃省略 $ 回昑֍?SHELL
SHELL
$ echo $SHELL 如果加上 $ 回?SHELL 的?br />/usr/bin/sh
echo $SHELL 命o(h)使用参数替换׃变量名前有货币符?($) 所?shell ?br />名ؓ(f) SHELL 的环境变量值回昑֜ echo 命o(h)?br />更多信息
有关参数替换的详l信息请参?sh sh-posix keysh ?csh 联机帮助?br />
9 (tng) (tng) 使用搜烦(ch)路径查找命o(h)
PATH 键入命o(h)后HP-UX 必须能够扑ֈ包含命o(h)的目录才能运行该命o(h)查找命o(h)
时PATH 环境变量包含用户希望 HP-UX 搜烦(ch)的命令目录列表PATH 应包含所
有必要的目录以定位用户用的所有命?br />PATH 变量格式
?.profile ?/etc/profile d脚本d PATH 变量此变量包含待搜烦(ch)?br />目录列表中间用冒号分隔冒号前后不应有I格q可以按如下方式使用
echo 命o(h)定 PATH 的当前?br />$ echo $PATH
/usr/bin/sh:/usr/bin:/usr/local/bin
此行内容表示键入命o(h)后shell 首先?/usr/bin/sh 目录/usr/bin 目录
?/usr/local/bin 目录下搜索该命o(h)如果q些目录下都没有该命令shell
显CZ下消?br />command_name: 未找?br />更改 PATH
如果 shell 无法扑ֈ实存在的命令则有两U选择
1. 键入该命令的完整路径名例如如果希望执行位?/home/sue/bin 目录
下的名ؓ(f) prog 的命令请键入以下内容
$ /home/sue/bin/prog
2. 或者更?PATH 变量的gd命o(h)路径如果l常使用此命令这?br />是长久之?br />下表列出?jin)最常用的目录的路径?br />目录 内容
/usr/bin 常用?HP-UX 命o(h)
/usr/sbin pȝ理员(sh)用的命o(h)
/usr/bin/sh POSIX Shell
/usr/contrib/bin Hewlett-Packard 不支持第三方提供的程?br />/usr/local/bin 在本地编写的E序和命?br />$HOME/bin 可以q shell 脚本和程序创建的目录
使用 Shell
使用搜烦(ch)路径查找命o(h)
W?3 ?5
注意考虑到潜在危险请勿将当前目录通常表示?. 讄?PATH 的第一个元
素请当前目录置?PATH 之外或仅其作ؓ(f)最后一个元素予以保?br />切记按显CZ左到右顺序搜?PATH 中的目录通常最常用的目录设
|ؓ(f)路径的第一个元?除非搜烦(ch)路径下有两个同名的命令例?br />/usr/bin/rm ?$HOME/bin/rm 在本CZ中如果想?shell 首先查找 rm ?br />本请?PATH 中将 $HOME/bin |于 /usr/bin 之前
以下CZ说明如何更改 PATH 以将 $HOME/bin 攑֜其他目录前ƈ当前目
录作为搜索\径中的最后一个目录此CZ假设用户使用的是 POSIX shell
$ echo $PATH
/usr/bin/sh:/usr/bin:/usr/bin:
/usr/contrib/bin:/usr/local/bin
$ PATH=$HOME/bin:$PATH:. 包含作ؓ(f)最后一个元素的. 使当前目录成?br />$ echo $PATH 最后一个搜索目?br />/home/terry/bin:/usr/bin/sh:/usr/bin:
/usr/bin:/usr/contrib/bin:/usr/local/bin:.
?PATH 讄为环境变?br />通常?PATH 讄为环境变量以便在d时ؓ(f)其赋予适当的值在 Bourne ?br />POSIX shell 中可以更?.profile 脚本中的 PATH q导出有兌些脚本的?br />l信息请参阅Shells: User's Guide
(tng) (tng) (tng) (tng)1、常用命?/strong>
(tng) (tng) (tng) (tng)1. # ioscan -fn
(tng) (tng) (tng) (tng)列出各I/O卡及(qing)讑֤的所有相关信息:(x)如逻辑单元Pg地址?qing)设备文件名{?
(tng) (tng) (tng) (tng)2. # ps -ef
(tng) (tng) (tng) (tng)列出正在q行的所有进E的各种信息Q如q程号及(qing)q程名等?
(tng) (tng) (tng) (tng)3. # netstat -rn
(tng) (tng) (tng) (tng)列出|卡状态及(qing)路由信息{?
(tng) (tng) (tng) (tng)4. # lanscan
(tng) (tng) (tng) (tng)列出|卡状态及(qing)|络配置信息?
(tng) (tng) (tng) (tng)5. # bdf
(tng) (tng) (tng) (tng)列出已加载的逻辑卷及(qing)其大信息?
(tng) (tng) (tng) (tng)6. # mount
(tng) (tng) (tng) (tng)列出已加载的逻辑卷及(qing)其加载位|?
(tng) (tng) (tng) (tng)7. # uname -a
(tng) (tng) (tng) (tng)列出pȝID POS版本?qing)用h限等信息?
(tng) (tng) (tng) (tng)8. # hostname
(tng) (tng) (tng) (tng)列出pȝ|络名称?
(tng) (tng) (tng) (tng)9. # pvdisplay -v /dev/dsk/c*t*d*
(tng) (tng) (tng) (tng)昄盘各种信息Q如盘大小Q包含的逻辑P讑֤名称{?
(tng) (tng) (tng) (tng)10. # vgdisplay -v /dev/vg00
(tng) (tng) (tng) (tng)昄逻辑L(fng)信息Q如包含哪些物理盘及(qing)逻辑L(fng)?
(tng) (tng) (tng) (tng)11. # lvdisplay -v /dev/vg00/lvol1
(tng) (tng) (tng) (tng)昄逻辑卷各U信息,如包含哪些盘Q是否有镜像{?
(tng) (tng) (tng) (tng)2、网l故障诊?/strong>
(tng) (tng) (tng) (tng)1. 如需修改|络地址、主机名{,一定要用set_parms 命o(h)
(tng) (tng) (tng) (tng)# set_parms hostname
(tng) (tng) (tng) # set_parms ip_address
(tng) (tng) (tng) (tng)2. 查看|卡状态:(x) lanscan
(tng) (tng) (tng) (tng)Hardware Station Crd Hardware Net-Interface
(tng) (tng) (tng) (tng)Path Address In# state nameunit state
(tng) (tng) (tng) (tng)8/20/5/1 0x0800097843FB 0 up lan0 up
(tng) (tng) (tng) (tng)3. 认|络地址Q?
(tng) (tng) (tng) (tng)# ifconfig lan0
(tng) (tng) (tng) (tng)4. 启动|卡Q?
(tng) (tng) (tng) (tng)# ifconfig lan0 up
(tng) (tng) (tng) (tng)5. |络不通的诊断q程Q?
(tng) (tng) (tng) (tng)lanscan 查看|卡是否启动(up)
(tng) (tng) (tng) (tng)ping 自己|卡地址(ip 地址)
(tng) (tng) (tng) (tng)ping其它机器地址Q如不通,在其机器上用lanscan 命o(h)得知station addressQ然后linkloop station_address 来确认网U及(qing)集成器是否有问题?
(tng) (tng) (tng) (tng)在同一|中Q?subnetmask 应一致?
(tng) (tng) (tng) (tng)6. 配置|关
(tng) (tng) (tng) (tng)手动加网养I(x)
(tng) (tng) (tng) (tng)/usr/sbin/route add default 20.08.28.98 1
(tng) (tng) (tng) (tng)把网兌动加入系l中
(tng) (tng) (tng) (tng)vi /etc/rc.config.d / netconf
(tng) (tng) (tng) (tng)Q?br /> (tng) (tng) (tng) (tng)ROUTE_DESTINATION [0]=default (tng)
(tng) (tng) (tng) (tng)ROUTE_GATEWAY [0]=20.08.28.98 (tng)
(tng) (tng) (tng) (tng)ROUTE_COUNT [0]=1 (tng)
(tng) (tng) (tng) (tng): (tng)
(tng) (tng) (tng) (tng)/sbin/init.d/net 执行:(x)
(tng) (tng) (tng) (tng)/usr/sbin/route add default 20.08.28.98 1
(tng) (tng) (tng) (tng)命o(h)netstat -rn 查看路由?
(tng) (tng) (tng) (tng)另外也可用set_parms addl_netwrk 来设~省路由?
(tng) (tng) (tng) (tng)二、安全安装HP-UX
(tng) (tng) (tng) (tng)1?在安装配|过E中Q不要连接到M不信ȝ|络中?
(tng) (tng) (tng) (tng)2?可能选择最安?
(tng) (tng) (tng) (tng)3?可能不要安装NFS, X window, SNMP{组Ӟ视具体需求而定Q?
(tng) (tng) (tng) (tng)4?安装完毕Q则使用pȝ命o(h)查看状态?
(tng) (tng) (tng) (tng)# uname ?Ca Q版本信息)(j)
(tng) (tng) (tng) (tng)# bdf Q逻辑L(fng)态)(j)
(tng) (tng) (tng) (tng)# ps ?Cef Q进E状态)(j)
(tng) (tng) (tng) (tng)# netstat -anf inet Q端口状态)(j)
(tng) (tng) (tng) (tng)5?安装各种驱动{?
(tng) (tng) (tng) (tng)6?安装最新的补丁?
(tng) (tng) (tng) (tng)http://us.itrc.hp.com
(tng) (tng) (tng) (tng)安装补丁时要注意HP的补丁与gcd和系l版本都相关Q检查ƈ安装所有需要的补丁。确认需要swlist -l fileset.
(tng) (tng) (tng) (tng)三、系l基本配|?/strong>
(tng) (tng) (tng) (tng)操作pȝ安装q打上补丁后Q需要做一些措施来对系l进行一些配|?
(tng) (tng) (tng) (tng)删除保存的补丁(可选)(j)
(tng) (tng) (tng) (tng)~省情况下,补丁安装完会(x)?var/adm/sw/save/下备份所有的补丁。可以选择删除q些补丁文gQ但一旦删除就没法使用swremove卸蝲补丁?jin)?
(tng) (tng) (tng) (tng)# swmodify -x patch_commit=true '*.*'
(tng) (tng) (tng) (tng)转换Z个可信系l:(x)
(tng) (tng) (tng) (tng)# /usr/lbin/tsconvert (tng)
(tng) (tng) (tng) (tng)Creating secure password database... (tng)
(tng) (tng) (tng) (tng)Directories created. (tng)
(tng) (tng) (tng) (tng)Making default files. (tng)
(tng) (tng) (tng) (tng)System default file created... (tng)
(tng) (tng) (tng) (tng)Terminal default file created... (tng)
(tng) (tng) (tng) (tng)Device assignment file created... (tng)
(tng) (tng) (tng) (tng)Moving passwords... (tng)
(tng) (tng) (tng) (tng)secure password database installed. (tng)
(tng) (tng) (tng) (tng)Converting at and crontab jobs... (tng)
(tng) (tng) (tng) (tng)At and crontab files converted.
(tng) (tng) (tng) (tng)改变全局Ҏ(gu)
(tng) (tng) (tng) (tng)HP-UX 有一个特权组Q可以分配给一个组Ҏ(gu)(参见privgrp(4)). ~省情况下,CHOWN是分配给所有组的一个全局Ҏ(gu)Q?
(tng) (tng) (tng) (tng)$ getprivgrp (tng)
(tng) (tng) (tng) (tng)global privileges: CHOWN
(tng) (tng) (tng) (tng)/sbin/init.d/set_prvgrp在系l启动时执行/usr/sbin/setprivgrp -f /etc /privgroup. 可以创徏一个配|文Ӟ删除所有的全局Ҏ(gu) (see setprivgrp(1m)):
(tng) (tng) (tng) (tng)# getprivgrp (tng)
(tng) (tng) (tng) (tng)global privileges: CHOWN (tng)
(tng) (tng) (tng) (tng)# echo -n >/etc/privgroup (tng)
(tng) (tng) (tng) (tng)# chmod 400 /etc/privgroup (tng)
(tng) (tng) (tng) (tng)# /sbin/init.d/set_prvgrp start (tng)
(tng) (tng) (tng) (tng)# getprivgrp (tng)
(tng) (tng) (tng) (tng)global privileges:
(tng) (tng) (tng) (tng)讄默认umask.
(tng) (tng) (tng) (tng)转换到可信系l后Q默认umask已经改ؓ(f)07077
(tng) (tng) (tng) (tng)限制rootq程dQ只能由consoled
(tng) (tng) (tng) (tng)# echo console > /etc/securetty (tng)
(tng) (tng) (tng) (tng)# chmod 400 /etc/securetty
(tng) (tng) (tng) (tng)打开inetd日志功能
(tng) (tng) (tng) (tng)?etc/rc.config.d/netdaemons中的 INETD_ARGS 环境变量中增加-l参数:
(tng) (tng) (tng) (tng)export INETD_ARGS=-l
(tng) (tng) (tng) (tng)删除不需要的pȝ伪帐?
(tng) (tng) (tng) (tng)# groupdel lp (tng)
(tng) (tng) (tng) (tng)# groupdel nuucp (tng)
(tng) (tng) (tng) (tng)# groupdel daemon (tng)
(tng) (tng) (tng) (tng)# userdel uucp (tng)
(tng) (tng) (tng) (tng)# userdel lp (tng)
(tng) (tng) (tng) (tng)# userdel nuucp (tng)
(tng) (tng) (tng) (tng)# userdel hpdb (tng)
(tng) (tng) (tng) (tng)# userdel www (tng)
(tng) (tng) (tng) (tng)# userdel daemon
(tng) (tng) (tng) (tng)对于一些保留的pȝ伪帐户如Qbin, sysQadm{? 应当需要禁止帐L(fng)**用NP代替Qƈ不提供登录shell
(tng) (tng) (tng) (tng)Example: bin:NP:60002:60002:No Access User:/:/sbin/noshell
(tng) (tng) (tng) (tng)rootȝ录从/改ؓ(f)/root.
(tng) (tng) (tng) (tng)~辑/etc/passwd:
(tng) (tng) (tng) (tng)root:*:0:3::/root:/sbin/sh
(tng) (tng) (tng) (tng)创徏目录q修Ҏ(gu)?
(tng) (tng) (tng) (tng)# mkdir /root (tng)
(tng) (tng) (tng) (tng)# chmod 700 /root (tng)
(tng) (tng) (tng) (tng)# mv /.profile /root (tng)
(tng) (tng) (tng) (tng)# pwconv
(tng) (tng) (tng) (tng)四、禁止网l服?/strong>
(tng) (tng) (tng) (tng)1、禁止inetd 服务
(tng) (tng) (tng) (tng)由internet服务器过Einetd启动的网l服务是׃个配|文?etc/inet/services?etc/inet/inetd.conf来配|的?etc/inet/services文g指定每个服务的端口号和端口类型,该配|文件的部分CZ如下Q?
(tng) (tng) (tng) (tng)…?br /> (tng) (tng) (tng) (tng)ftp 21/tcp (tng)
(tng) (tng) (tng) (tng)telnet 23/tcp (tng)
(tng) (tng) (tng) (tng)smtp 25/tcp mail (tng)
(tng) (tng) (tng) (tng)?
(tng) (tng) (tng) (tng)/etc/inet/inetd.conf文g指定服务对应的系l服务程序,该配|文仉分示例如下:(x)
(tng) (tng) (tng) (tng)…?br /> (tng) (tng) (tng) (tng)ftp stream tcp nowait root /usr/sbin/in.ftpd in.ftpd (tng)
(tng) (tng) (tng) (tng)telnet stream tcp nowait root /usr/sbin/in.telnetd in.telnetd (tng)
(tng) (tng) (tng) (tng)?
(tng) (tng) (tng) (tng)当要停止某个服务Q如ftp、telnet{时Q只要注释掉文g/etc/inet/services?etc/inet/inetd.conf中的相应条目Q也是在那一行的开头加上#字符Q然后让inetd重新读配|文Ӟq程CZ如下Q?
(tng) (tng) (tng) (tng)# ps -ef |grep inetd (tng)
(tng) (tng) (tng) (tng)root 149 1 0 Jan 18 ? 0:00 /usr/sbin/inetd -s (tng)
(tng) (tng) (tng) (tng)root 24621 24605 0 15:53:01 pts/1 0:00 grep inetd (tng)
(tng) (tng) (tng) (tng)# kill ?CHUP 149
(tng) (tng) (tng) (tng)以上W一条命令是Z(jin)获得inetd的进E号Q示例中输出的第二列内容是q程?149)Q然后将该进E号填入W二条命令的相应位置?
(tng) (tng) (tng) (tng)可以使用lsof ?Ci来查看监听进E和端口信息:
(tng) (tng) (tng) (tng)# lsof -i (tng)
(tng) (tng) (tng) (tng)COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME (tng)
(tng) (tng) (tng) (tng)syslogd 261 root 5u inet 0x10191e868 0t0 UDP *:syslog (Idle) (tng)
(tng) (tng) (tng) (tng)rpcbind 345 root 4u inet 72,0x73 0t0 UDP *:portmap (Idle) (tng)
(tng) (tng) (tng) (tng)rpcbind 345 root 6u inet 72,0x73 0t0 UDP *:49158 (Idle) (tng)
(tng) (tng) (tng) (tng)rpcbind 345 root 7u inet 72,0x72 0t0 TCP *:portmap (LISTEN) (tng)
(tng) (tng) (tng) (tng)sendmail: 397 root 5u inet 0x10222b668 0t0 TCP *:smtp (LISTEN) (tng)
(tng) (tng) (tng) (tng)snmpdm 402 root 3u inet 0x10221a268 0t0 TCP *:7161 (LISTEN) (tng)
(tng) (tng) (tng) (tng)snmpdm 402 root 5u inet 0x10222a268 0t0 UDP *:snmp (Idle) (tng)
(tng) (tng) (tng) (tng)snmpdm 402 root 6u inet 0x10221f868 0t0 UDP *:* (Unbound) (tng)
(tng) (tng) (tng) (tng)mib2agt 421 root 0u inet 0x10223e868 0t0 UDP *:* (Unbound) (tng)
(tng) (tng) (tng) (tng)swagentd 453 root 6u inet 0x1019d3268 0t0 UDP *:2121 (Idle) (tng)
(tng) (tng) (tng) (tng)2、禁止其他服?
(tng) (tng) (tng) (tng)防止syslogd|络监听
(tng) (tng) (tng) (tng)安装PHCO_21023补丁可以lsyslogd加上-N参数防止|络监听. ~辑/sbin/init.d/syslogd修改?/usr/sbin/syslogd -DN.
(tng) (tng) (tng) (tng)止SNMP服务
(tng) (tng) (tng) (tng)~辑SNMP启动文g:
(tng) (tng) (tng) (tng)/etc/rc.config.d/SnmpHpunix (tng)
(tng) (tng) (tng) (tng)Set SNMP_HPUNIX_START to 0: SNMP_HPUNIX_START=0 (tng)
(tng) (tng) (tng) (tng)/etc/rc.config.d/SnmpMaster (tng)
(tng) (tng) (tng) (tng)Set SNMP_MASTER_START to 0: SNMP_MASTER_START=0 (tng)
(tng) (tng) (tng) (tng)/etc/rc.config.d/SnmpMib2 (tng)
(tng) (tng) (tng) (tng)Set SNMP_MIB2_START to 0: SNMP_MIB2_START=0 (tng)
(tng) (tng) (tng) (tng)/etc/rc.config.d/SnmpTrpDst (tng)
(tng) (tng) (tng) (tng)Set SNMP_TRAPDEST_START to 0: SNMP_TRAPDEST_START=0
(tng) (tng) (tng) (tng)止sendmailq程
(tng) (tng) (tng) (tng)~辑/etc/rc.config.d/mailservs:
(tng) (tng) (tng) (tng)export SENDMAIL_SERVER=0
(tng) (tng) (tng) (tng)止rpcbindq程
(tng) (tng) (tng) (tng)# rm /sbin/rc1.d/K600nfs.core (tng)
(tng) (tng) (tng) (tng)# rm /sbin/rc2.d/S400nfs.core (tng)
(tng) (tng) (tng) (tng)# mv /usr/sbin/rpcbind /usr/sbin/rpcbind.DISABLE
(tng) (tng) (tng) (tng)五、文件系l安?/strong>
(tng) (tng) (tng) (tng)1、检查Set-idE序
(tng) (tng) (tng) (tng)# find / \( -perm -4000 -o -perm -2000 \) -type f -exec ls -ld {} \; (tng)
(tng) (tng) (tng) (tng)# chmod u-s /usr/sbin/swinstall (tng)
(tng) (tng) (tng) (tng)# chmod u-s /usr/sbin/vgcreate (tng)
(tng) (tng) (tng) (tng)# chmod u-s /sbin/vgcreate
(tng) (tng) (tng) (tng)可以采用下列Ҏ(gu)Q将所有文件的set-id位去掉,然后对一些需要的E序单独加上suid位(可根据情况选择Q?
(tng) (tng) (tng) (tng)# find / -perm -4000 -type f -exec chmod u-s {} \; (tng)
(tng) (tng) (tng) (tng)# find / -perm -2000 -type f -exec chmod g-s {} \; (tng)
(tng) (tng) (tng) (tng)# chmod u+s /usr/bin/su (tng)
(tng) (tng) (tng) (tng)# chmod u+s /usr/bin/passwd
(tng) (tng) (tng) (tng)采用q种Ҏ(gu)后,普通用户将无法使用很多pȝ命o(h)Q如bdf, uptime Qarp{?
(tng) (tng) (tng) (tng)$ bdf /dev/vg00/lvol3 (tng)
(tng) (tng) (tng) (tng)bdf: /dev/vg00/lvol3: Permission denied
(tng) (tng) (tng) (tng)2. 修改重要文g权限
(tng) (tng) (tng) (tng)# chmod 1777 /tmp /var/tmp /var/preserve Q加上粘滞位Q?br /> (tng) (tng) (tng) (tng)# chmod 666 /dev/null
(tng) (tng) (tng) (tng)六、网l参数调?/strong>
(tng) (tng) (tng) (tng)利用ndd命o(h)Q可以检或者更改网l设备驱动程序的Ҏ(gu)。在/etc/rc.config.d/nddconf启动脚本中增加以下各条命令,然后重启pȝQ可以提高网l的安全性?
(tng) (tng) (tng) (tng)格式如下Q?
(tng) (tng) (tng) (tng)/usr/sbin/ndd -set /dev/ip ip_forward_directed_broadcasts 0 (tng)
(tng) (tng) (tng) (tng)Network device (tng)
(tng) (tng) (tng) (tng)Parameter (tng)
(tng) (tng) (tng) (tng)Default value (tng)
(tng) (tng) (tng) (tng)Suggested value (tng)
(tng) (tng) (tng) (tng)Comment (tng)
(tng) (tng) (tng) (tng)/dev/ip (tng)
(tng) (tng) (tng) (tng)ip_forward_directed_broadcasts (tng)
(tng) (tng) (tng) (tng)1 (tng)
(tng) (tng) (tng) (tng)0
(tng) (tng) (tng) (tng)不{发定向广播包
(tng) (tng) (tng) (tng)/dev/ip (tng)
(tng) (tng) (tng) (tng)ip_forward_src_routed (tng)
(tng) (tng) (tng) (tng)1 (tng)
(tng) (tng) (tng) (tng)0 (tng)
(tng) (tng) (tng) (tng)不{发原路由?
(tng) (tng) (tng) (tng)/dev/ip (tng)
(tng) (tng) (tng) (tng)ip_forwarding (tng)
(tng) (tng) (tng) (tng)2 (tng)
(tng) (tng) (tng) (tng)0
(tng) (tng) (tng) (tng)止包{?
(tng) (tng) (tng) (tng)/dev/ip (tng)
(tng) (tng) (tng) (tng)ip_pmtu_strategy (tng)
(tng) (tng) (tng) (tng)2 (tng)
(tng) (tng) (tng) (tng)1
(tng) (tng) (tng) (tng)不采用echo-request PMTU{略
(tng) (tng) (tng) (tng)/dev/ip (tng)
(tng) (tng) (tng) (tng)ip_send_redirects (tng)
(tng) (tng) (tng) (tng)1 (tng)
(tng) (tng) (tng) (tng)0
(tng) (tng) (tng) (tng)不发ICMP重定向包
(tng) (tng) (tng) (tng)/dev/ip (tng)
(tng) (tng) (tng) (tng)ip_send_source_quench (tng)
(tng) (tng) (tng) (tng)1 (tng)
(tng) (tng) (tng) (tng)0
(tng) (tng) (tng) (tng)不发ICMP源结束包
(tng) (tng) (tng) (tng)/dev/tcp (tng)
(tng) (tng) (tng) (tng)tcp_conn_request_max
(tng) (tng) (tng) (tng)20 (tng)
(tng) (tng) (tng) (tng)500
(tng) (tng) (tng) (tng)增加TCP监听数最大|提高性能
(tng) (tng) (tng) (tng)/dev/tcp (tng)
(tng) (tng) (tng) (tng)tcp_syn_rcvd_max (tng)
(tng) (tng) (tng) (tng)500 (tng)
(tng) (tng) (tng) (tng)500 (tng)
(tng) (tng) (tng) (tng)HP SYN flood保护 (tng)
(tng) (tng) (tng) (tng)/dev/ip (tng)
(tng) (tng) (tng) (tng)ip_respond_to_echo_broadcast (tng)
(tng) (tng) (tng) (tng)1 (tng)
(tng) (tng) (tng) (tng)0
(tng) (tng) (tng) (tng)不响应ICMP echohq播?
(tng) (tng) (tng) (tng)׃ndd调用前,已经启动|卡参数Q所以可能不能正设|?
(tng) (tng) (tng) (tng)可以采用下列Ҏ(gu)Q徏立一个启动脚本?
(tng) (tng) (tng) (tng)# cp /tmp/secconf /etc/rc.config.d (tng)
(tng) (tng) (tng) (tng)# chmod 444 /etc/rc.config.d/secconf (tng)
(tng) (tng) (tng) (tng)# cp /tmp/sectune /sbin/init.d (tng)
(tng) (tng) (tng) (tng)# chmod 555 /sbin/init.d/sectune (tng)
(tng) (tng) (tng) (tng)# ln -s /sbin/init.d/sectune /sbin/rc2.d/S009sectune
ȝ录用于存储各U用hӞ(x)讄文gQ程序配|文Ӟ用户文档Q数据,netscape的缓存,邮g{等。作Z个普通用P你可以在ȝ录下建立新的目录安排你自q目录l构。其他用h法阅M的文件或者写数据C的主目录Q除非你l他们适当的权限?/p>
除了(jin)自己的主目录以内的文Ӟ一般用户也可以看到Q阅d执行很多pȝ里的文gQ但是一般来说他们不能修改和删除q些文g?/p>
root用户Q也叫“超U用户”)(j)是一个特D的pȝ理帐号Q可以修改系l里的Q何文件。经怋用root用户作ؓ(f)~省的登录用户不是什么好?fn)惯――你的误操作有可能D严重后果。徏议设|一个一般用L(fng)自己作ؓ(f)日常使用的帐P只在必要使用root用户的权限时才登陆到root用户模式下。一般来_(d)root用户是Linux初始化安装后的唯一一个用戗?/p>
使用root用户建立一个普通用?
adduser joe
passwd joe
[输入用户U密]
[再次输入用户U密认]
(tng)
在上q的例子里,要求用户root。以上命令在pȝ里生一个joe的用P接着讄该用L(fng)密码。现在,可以告诉joe他的用户名和初始密码Q然后他可以d到系l,然后修改他的密码。还要注意的是,用户名和密码都是大小写敏感?/p>
(tng)
用户可以修改M人的密码Q尽他/Ҏ(gu)法阅读该用户的密码。用户密码采用单向加密算法,加密后仅仅在pȝ上储存加密后的密码,对于旧的pȝ一般存?etc/passwd文g里,新的pȝ一般存?etc/shadow文g里,未经加密的密码文件从来不被储存在pȝ里。当用户d的时候,pȝ把用L(fng)输入密码使用相同的加密算法得到的l果再和密码文gQ?etc/passwd或?etc/shadowQ里的结果相比较?/p>
(tng)
用户和一般用L(fng)分开使得Linuxpȝ更加安全――甚臌病毒在Linuxpȝ下很难有所作ؓ(f)Q因为用戯行的E序只能把数据写C/她自q有读写权限的目录里,不会(x)感染整个操作pȝ的核?j)部分?j)?/p>
(tng)
一般徏议用户在W一ơ登录到pȝ的时候立M改自q密码:
passwd
Changing password for joe
(current) UNIX password: (tng) (tng) [输入旧的密码]
New password: (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) [输入新的密码]
Retype new password: (tng) (tng) (tng) (tng) (tng) (tng) [重复输入新的密码]
passwd: all authentication tokens updated successfully.passwd
实际上,当你输入密码ӞZ安全原因Q键盘输入ƈ不会(x)昄在屏q上。如果你是第一ơ修改密码,看不到键盘输入的l果可能?x)有点不适应?/p>
在Linux里,同一个密码可以用?
(tng)
· (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) d到文本终?/p>
· (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) d到图形用L(fng)面(GNOME或者KDEQ?/p>
· (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) 取消锁定的文本终?/p>
· (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) 取消密码保护的图形用L(fng)面下的屏q保护(GNOME或者KDEQ?/p>
3.2.2 (tng) 密码安全?br /> (tng)
一个“脆弱”(指容易被破解Q的密码通常是安全问题的Ҏ(gu)。即使在安Q完全有可能当你在浏览因特网的同Ӟ黑客已经ȝ你的计算机,正在修改和删除你计算Z的文Ӟ或者通过你的计算机在本地警察局的网l里做一些o(h)人头痛的事情。所以,即在家里也要保证用户密码的安全。一旦有人登录到你的计算机,即是普通用P他也有可能找到其他方法获得超U用L(fng)密码。其实就看你理计算机系l的能力和黑客破解能力的较量?jin)?/p>
以下是一些不好的密码:
(tng)Ҏ(gu)没有密码 (tng)
(tng)密码是“password”?
(tng)密码和登录用户名相同 (tng)
(tng)你的名字Q女儿的名字Q儿子的名字Q妻子的名字Q丈夫的名字……或者Q何一个亲人的名字。h的名字其实非常的有限――只要查一下一些类似“如何给婴儿取名”之cȝ书就可以?jin),不要以?f)你是印度来的没有h知道你的名字。?
(tng)你的姓或者其他h的姓。姓的数量比名字更加有限Q?
(tng)你家狗的昵Uͼ老婆的昵U等{。昵U的数量比姓更少Q?
(tng)你喜Ƣ的体育׃部的名称Q节日名Uͼ牙膏的名U等{。避免用非常出名的球队的名称Q也不要用Q何摇滚乐队的名字 (tng)
(tng)你的生日Q社?x)保险号码,{等。?
(tng)公司Q部门,组的名UW?
(tng)密码写在你的C本上或者计机壛_上?
(tng)你在因特|联机商店用的密码Q电(sh)子邮仉q密码{?
(tng)M在字兔R可以扑ֈ的单词。英文字典其实没有包含你惌中那么多的单词(10万个单词Q?0万个单词的文件小?MB!Q。一个水q_一般的黑客很容易就加密所有的字典词汇然后逐一和你的密码比较。一个不可否认的事实Q因特网上的已l存在用来制?“字典攻几Z的现成工具。不信?试着找一个工h破解你的密码看看有多Ҏ(gu)Q?
(tng)M其他词汇Q姓Q宠物或者成语,不管是哪一U语a。对于一个有l验的黑客来_(d)如果他已l覆盖了(jin)一U语aQ稍微加工一下就可以很容易覆盖其他常用的语言。有多少常用的语aQ?0个?黑客只需要把预先做好的几个文件加到破解文件清单里p?jin)。?
(tng)M以上的密码在前面或者后面加上一两个数字或者字W?
一个好的密码最要6个字W,有些专家甚至最要10个字W,包含字符Q最好大写混合Q,数字和特D字W(比如Q,*Q?Q?Q#Q?q要定期做修改(8?6周之_(d)(j)?/p>
不y的是Q越不好破解的密码往往难以记住。ؓ(f)?jin)解册个问题,我花了(jin)十分钟发明了(jin)我自己的“密码公式”。比如说Q我L以“@”字W作为密码的开头和l尾Q然后用两个单词ƈ且用?”把它们q接hQ每一个单词的最后一个字W大写,比如“@whitE!housE@”。看h象一个不太好记的密码Q但是只要我记得自己的“密码规则”,其实可以很容易记住这个密码。当?dng)如果你是一个记忆的天才Q你可以使用mkpasswdq且试着C?J?/p>
pȝ理员可以用Linux自带的工h讄密码的规则(密码最长度,是否要求Ҏ(gu)字符Q密码过期的期限{)(j)Q以root用户q行Q?/p>
linuxconf
在菜单“user account?“policies”-“password & account policies”设|。在以下场合里,一般的用户不能讄一个密码:(x)
(tng)当密码长度太短?
(tng)密码是一个字兔R的单词?
(tng)密码中不包含数字或者特D字W?
但是对于root用户Q可以设|Q何密码而只接收pȝ的警告信息?/p>
q要保证M包含你的密码的文Ӟ比如/root/.kde/share/config/kpprcQ有正确Q安全的权限讄Q这h能保证你的密码不?x)被其他人看到。D个例子,你可能要q行命o(h)Q?/p>
chmod 600 kpprc
如果你用电(sh)话线上网Q每周只用几个小Ӟ你的密码太脆弱可能不?x)有什么大问题。但是如果你使用cable modem宽带上网Q或者如果大部分旉你都呆在因特|上Q你最好重新考虑一下你的系l安全?/p>
有些计算机半文盲使用一些脆弱得让h惊讶的密码,Ҏ(gu)CNN的相x(chng)道,“大概有50Q的计算机用户基于家庭成员的名字Q配偶的名字或者宠物的名字作ؓ(f)密码。大?0Q的计算机用户基于流行音乐歌手的名字或者体育明星的名字作ؓ(f)密码”?/p>
http://www.cnn.com/2002/TECH/ptech/03/13/dangerous.passwords/index.html
特别要请注意的是Q在以上“基密码”后面加上一两个数字q不?x)密码安全提高多少?/p>
3.2.3 (tng) 忘记?jin)超U用户密码怎么?/p>
管我从来不?x)忘记自q密码Q但是我q是?x)仔l研I一下这个专题,以防来有一天突然看到我的母亲在阅读我的ICQ聊天记录Ӟ可能?x)派上用场?/p>
W一U办法:(x)
最Ҏ(gu)解决“忘记密码问题”的Ҏ(gu)是将Linux重新启动到单用户模式Q可以在“lilo”的命o(h)提示W下输入:
linux single
q种办法你变成root用户而不需要输入Q何密码。现在作为root用户Q你可以使用以下命o(h)重新讄密码Q不需要输入旧的密码)(j)
passwd
你可能觉得这实在是太不安全了(jin)Q那是因为,如果有h可以物理上“访问”你的计机gQ没有计机pȝ是安全的。但是,我ƈ不喜Ƣ在我的计算Z有这个“linux single”的漏洞存在Q所以我在文?etc/lilo.conf里(?“image=”段落的NQ加上以下内容就可以把这个漏z拔除:(x)
(tng)
password=”my_password?/p>
restricted
q个讄使得Linux启动Ӟ在lilo的命令提C符下,当用戯入linux带Q何参数时必须输入正确的密码。如果用户不是用命令行的启动模式而用正常的启动模式Q没有密码也能够启动pȝ。ؓ(f)?jin)让修改生效Q必重新运行lilo命o(h)。因为我讄的密码在lilo.conf文g里没有加密,我还必须把文?etc/lilo.confҎ(gu)只有root用户可以d:
chmod 600 /etc/lilo.conf
W二U办?/p>
另外一个解决“超U用户密码丢失”的办法是用Linux启动盘或者安装CD来启动你的计机。然后找C计算机硬盘(sh)的root分区Q用mount命o(h)挂蝲该分区,接着修改文g/etc/shadow。因为当我从软盘启动LinuxӞ我可以不需要输入Q何密码就成ؓ(f)root用户。在密码文g里,把root用户的加密密码删除,所以root的密码将是空的?/p>
用户帐号的信息储存在以下U文本文仉Q?/p>
(tng)
/etc/passwd
/etc/shadow
(tng)
文g/etc/passwd包含?jin)我计算Z的所有用Pq且很容易阅诅R文件每行包含一个帐号信息,d包含六个?”间隔符?q意味着七个字段)。D例如?/p>
(tng)
/etc/passwd文g例子
(tng)
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
(tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)
1
(tng)root
(tng)d用户?br /> (tng)
2
(tng)x
(tng)字符x
(tng)
3
(tng)0
(tng)用户标识
(tng)
4
(tng)0
(tng)该用L(fng)优先用户l标?br /> (tng)
5
(tng)root
(tng)注释Q比如用L(fng)全名Q?br /> (tng)
6
(tng)/root
(tng)用户的主目录(HOME DIRECTORY)
(tng)
7
(tng)/bin/bash
(tng)用户的shell的名?br /> (tng)
真正最重要的用户信息其实储存在文g/etc/shadow文g里。这个文件相对安全因为只有root用户才能阅读。在q个文g里,每行包含?ji)个字段Q?/p>
1
(tng)d用户?br /> (tng)
2
(tng)加密后的密码
(tng)
3
(tng)?970q??日到上一ơ修改密码的天数
(tng)
4
(tng)距离下一ơ修改密码的天数
(tng)
5
(tng)密码定期作修改的天数
(tng)
6
(tng)密码卛_q期时提前通知用户的天?br /> (tng)
7
(tng)密码q期到用戯取消的天?br /> (tng)
8
(tng)密码被取消时距离1970q??日的天数
(tng)
9
(tng)预留字段
一些旧的Unix版本不包?etc/shadow文gQ而是把密码存攑֜/etc/passwd每行中的W二个字Dc(din)这个字D在新的pȝ中只昄一个“x”字W?/p>
举个例子Q我?etc/shadow文g中的root用户看v来是q样的:(x)
root:$1$BuPbmLAz$1G7.evIChyqaEI0TlZp0F.:11071:0:99999:7:-1:-1:134540356
当密码被消除后,看v来是q样的:(x)
root::11071:0:99999:7:-1:-1:134540356
(tng)
现在Qroot用户没有密码了(jin)Q所以我可以重新启动计机Q在logind提示下,输入“root?对于密码提示只需要按回R键就可了(jin)Q没有密码)(j)。登录成功后Q可以立M用以下命令修改root密码Q?/p>
(tng)
passwd
有个例外Q尽在/etc/shadow删除?jin)密码,对于Debian的发行版本ƈ不允怽按“无密码”状态登录,在这U情况下Q你需要做的是用其他用P密码已经Q的加密后的密码取代root的密码,然后使用该密码重新登录?/p>
想给q程用户讄用户帐号Q用?sh)子邮g发送加密密码也是一个安全的办法Q“我正在帮你在我的计机上设|ftp帐号Q请把你的加密密码用?sh)子邮g发送给我”。等你收到加密密码后Q把它插入到/etc/shadow文g里。这P用户可以登录了(jin)Q因为只有她知道她的密码Q其他h不知道?/p>
Z(jin)让我的计机没有“Y盘访问”功能有炚w度,我喜Ƣ在没有软驱的情况下q行计算机。不q的是,Linux光盘现在是可以自启动的。我在BIOS里设|启动设备的序以保证系l从盘启动而不是Y驱或者光驱,然后lBIOS讄加上密码保护Q这样就没有其他够修改BIOS讄。但是,我还是很担心(j)BIOS的密码很Ҏ(gu)被破解,或者有人打开计算机盖把BIOS的电(sh)池放甉|重新讄BIOS。还可能有h把我的硬盘拿走然后在别的计算Z阅读J 。所以,我正在考虑在我的计机上安装一个现在已l有效的Linux“加密文件系l”,但是以其考虑q么多麻?ch)问题,我觉得还是干脆把计算机锁在屋里才是一个真正的好办法。这些听h头很大吧Q事实大概也是这L(fng)――这里我只是把一些计机的安全问题稍微罗列了(jin)一下,即在Linux下,如果黑客有潜在可能可以直接接触你的计机gQLinux也是不安全的?/p>
3.2.4 (tng) 忘记?jin)普通用户密码怎么?br /> (tng)
如果是普通用P非root用户Q忘记密码,q个不是什么大问题Q因为root可以修改M人的密码。D个例子(要求root用户Q?/p>
passwd barbara
按回车键后,提C入用户barbara的新密码Qroot用户不需要知道旧的密码)(j)。如果一个普通用h要修改自q密码Q该用户?x)被要求输入旧的密码Q这是一个安全特性,以避免当你离开你的坐位有h试图修改你的密码Q?/p>
3.2.5 (tng) 关闭或删除一个用?br /> (tng)
用户帐号可以被(f)时关闭或者永久删?/p>
(tng)
临时关闭Q锁定)(j)一个用户帐Pq不需要修改该用户的密码。只需要在/etc/shadow文g里属于该用户的行的第二个字段Q密码)(j)前面加上星号?”就可以?jin)。星号?”指的是该用户不允许d。当你想要把该用h复正常,只需要把星号?”去掉就可以?jin),用户可以恢复正常?/p>
(tng)
以下是一个在/etc/shadow关闭用户peter的例子:(x)
(tng)
peter:*$1$narMEFm6$fhA1puOU422HiSL5aggLI/:11193:0:99999:7:-1:-1:134539228
我也可以使用以下命o(h)来关闭用户帐P(x)
passwd peter –l
使用以下命o(h)重新释放该用P(x)
passwd peter –u
对于怹性(不可恢复Q的删除一个用户帐P我一般这样做Q?/p>
- 以rootd
- 把我的用h识改成要删除的那个用P(g)查是否有新的重要的电(sh)子邮Ӟ(x)
su doomed_user_login_name
logout
- 删除用户和用L(fng):
(tng)
userdel doomed_user_login_name
groupdel doomed_user_login_name
(tng)
- 然后把该用户从所属的其他用户l里面删?
usermod –G doomed_user_login_name doomed_user_login_name
- 强制删除该用L(fng)ȝ录和ȝ录下的所有文件和子目?
rm –fr /home/doomed_user_login_name
3.2.6 (tng) 文g的所有权和访问权
(tng)
LinuxQ还有其他UnixQ是一个安全,多用L(fng)操作pȝQ同Ӟq也产生?jin)文件访问权限的复杂性。没有设|好文g的访问权限可能会(x)D一些莫名其妙的问题。充分了(jin)解文件的讉K权限是管理Q何多用户操作pȝQLinux, Unix, Windows NTQ的最重要环节?/p>
我的是:(x)学习(fn)LinuxQ或者其他UnixQ的文g讉K权限的内容,你从来不?x)?f)此感到后(zhn)?/p>
文g拥有?/p>
每个文gQ或者目录)(j)从属于一个文件拥有者(一般是一个用户名Q和一个用L(fng)。文件拥有者一般来说就是生成(或者拷贝)(j)q个文g的用戗用L(fng)l常包含一个用P文g拥有者。用L(fng)通常有一个名字来标识该用P但是也不是必ȝ。一个文件只能被文g拥有者删除,或者是文g所属的用户l里的其他用P或者是root用户。对于其他用P如果被赋于适当的权限,也有可能修改或者删除该文g。文件所属的用户和用L(fng)可以通过命o(h)ls –lQ长文g名显C格式)(j)来显C:(x)
ls –l junk
屏幕输出如下:
-rwx------ 1 yogin inca 27 Apr 24 14:12 junk
该文件属于拥有者yogin和用L(fng)inca
文g的从属可以通过命o(h)chownQ修Ҏ(gu)件拥有者)(j)和chgrpQ修改用L(fng)Q,一般来说需要root用户:
chown peter junk
chgrp peter junk
ls –l junk
执行以上三条命o(h)后,命o(h)ls –l输出如下:
-rwx------ 1 peter peter 27 Apr 25 20:27 junk
当你以root用户w䆾为其他用户删除或者拷贝文件时Q修Ҏ(gu)件的从属可能是经常要做的事情Q在做完文g的整理工作后Q把文g的拥有者改成对应的用户?/p>
文g的权?/p>
文g的拥有者可以把文g的访问属性设成三U不同的模式: ?r)Q写(w)和运?x)和三个不同的用户U别: 文g拥有?u)Q所属的用户l?g)Q系l里的其他用?o)。你可以(g)查当前的文g讉K权限Q?/p>
ls –l filename
如果文g对于三种不同的用户都提供三种文g讉K模式Q输出结果看h应该?
-rwxrwxrwx
跌W一个字W??W一个字W显C文件的cd, ??表示普通文Ӟ?d?表示目录文gQ?l?表示链接文gQ“c”表C字W设备,“b”表C块讑֤Q“p”表C命名管道比如FIFO文gQF(tun)irst In First Out, 先进先出Q??f”表C堆栈文件比如LIFO文gQLast In First OutQ后q先出)(j)?/p>
W一个字W之后的W一个三位字W组表示对于文g拥有者对该文件的权限Q第二个三位字符l表C文件用L(fng)对该文g的权限,W三个三位字W组表示pȝ其他用户对该文g的权限。如果没有权限,一般显C“-”字W?/p>
以下是一个显CZ个属于root的文件用h限:(x)该文件的拥有者root拥有所有权限,但是用户l和其他用户只能阅读和执行?/p>
drwxr-xr-x 2 root root 21504 Apr 24 19:27 dev
W一个字Wd昄该文件是一个目录?/p>
你可以用chmod命o(h)来修改属于你的文件的讉K权限。D个例子,以下命o(h)把文gjunkl所有用户增加“只诠Z权限?/p>
Chmod a+r junk
在以上的命o(h)Q除?jin)用“a”表C所有用?all)Q我q可以用“u”表C用?user)Q“g”表C用L(fng)(group)Q“o”表C其他用?other users)。除?jin)加号?”增加权限,我还可以使用减号“-”删除权限,{于号?”设|权限。除?jin)“r”表C只L?read)Q我q可以用“w”表C写权限(write)Q“x”表C执行权?execute)?/p>
W二个例子,以下命o(h)删除其他用户对junk文g的执行权限:(x)
chmod o-x junk
除了(jin)字符Q也可以使用数字来设|权限。想知道是然后工作的Q看以下例子Q?/p>
(tng)
execute=1
write=2
read=4
对于指定的三U不同用L(fng)别ȝ如下:
0 Q?没有M权限 Q不能读Q不能写Q不能执行)(j) (tng) (tng) (tng) (tng) Q常见)(j)
1 Q?只能执行 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) Q看h不太正常Q?/p>
2 Q?只能写?tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)?Q看h不太正常Q?/p>
3 Q?只能写和执行 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) Q看h不太正常Q?/p>
4 Q?只读 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) Q常见)(j)
5 Q?只读和执行?tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)?Q常见)(j)
6 Q?d写?tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)?Q常见)(j)
7 Q?读,写和执行 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) Q常见)(j)
要给三个不同的用L(fng)别设|访问权限,只需要把三个数字_在一起就可以?jin)。D?
chmod 770 junk
给文g拥有者和所属用L(fng)所有权限(读,写和执行Q,而对于其他用h有Q何权限?/p>
chmod 666 junk
给所有用P文g拥有者,所属用L(fng)Q其他用P(j)d权限Q但是没有执行权限。请注意q个666权限讄里很l常用到Q有是整个LinuxQ或者其他Unix里)(j)的精髓所在?/p>
chmod 411 junk
给文g拥有者以只读权限Q对于所属用L(fng)和其他用户只有执行权限。这个看h好像没什么实际用处,但是对于北美的Linux用户可能?x)感到很有趣Q因?11?sh)话L(fng)是他们用来获得电(sh)话号码查号帮助的。如果对于权限设|,你还能想Z么好LQ别忘(sh)(jin)l我来电(sh)子邮件哦 Q可能是007Q)(j)Q?/p>
文g讉K权限的数字表C法叫做“八位组”因为是Z八进制的Q我们的日常计数pȝ是基于十q制Q。八q制有八个数g0?Q最大数字是7。对应的Q十q制有十个数字从0?Q最大数字是9。八q制表示法对于二q制的文件权限表C法的确非常方便Q每一个标志都可以通过讄?或?来表C“允许”或者“不允许”,如以下的例子Q?/p>
(tng)
用户U别Q?tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)?文g拥有者?tng) (tng) (tng)?用户l?tng) (tng) (tng) (tng) (tng) (tng) (tng)?其他用户
权限讄例子 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) rwx (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) rw- (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) r--
~省权限 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) --- (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) --x - (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) wx
权限的二q制表示法?tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)?111 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) 110 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) 100
权限的八q制表示法?tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)?7 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) 6 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) 4
目录权限
目录的访问权限和一般文件的讉K权限是不同的。对于一般文Ӟ(x)
r (tng) (tng) (tng) (tng) (tng) =允许L件内?/p>
w (tng) (tng) (tng) (tng) (tng) =允许修改文g内容
x (tng) (tng) (tng) (tng) (tng) =允许执行该文?/p>
对于目录而言Q?/p>
r (tng) (tng) (tng) (tng) (tng) =允许列出该目录下的文件和子目?/p>
w (tng) (tng) (tng) (tng) (tng) =允许生成和删除该目录下的文g
x (tng) (tng) (tng) (tng) (tng) =允许讉K该目?/p>
使用umask讄~省文g属?/p>
当一个文件生成时Q系l给以文件缺省的文g权限。在我的pȝ里,~省权限?
-rw-r--r--
q意味着p用户生成的文件能被该用户d写,而用L(fng)和其他用户只能读。还有,在我的Redhatpȝ里,用户不能d其他用户的主目录Q因为用户主目录的缺省权限是
drwx------
我可以用以下命令检查我刚生成的文g的缺省权限:(x)
(tng)
umask -S
(tng)
Q可选项QS代表“符号”告诉umask按容易阅ȝ格式昄文g权限Q而不是缺省的数字格式Q?/p>
我可以修Ҏ(gu)生成文g的缺省权?/p>
umask u=rw,g=,o=
对于新生成的文gQ以上命令将l文件拥有者以d写的权限Q而用L(fng)和其他用户将没有M讉K权限?br />在umask命o(h)里用数值来讄文g的缺省属性更加麻?ch)。因为数值显C的是从用户那里去除掉的权限Q刚好和chmod相反Q,比如Q?br />umask 000
对于新生成的文gQ你给所有h所有的权限。下一个例子给文g拥有者以d写的权限Q而其他用h有Q何权?
umask 177
Z(jin)让设|对pȝ怹有效Q在文g/etc/profile里修改对应的行?/p>
(tng)
如果机器作ؓ(f)开发用Q因为所有用L(fng)shell都有权限使用q些环境变量Q可能会(x)l系l带来不安全性的问题
在shell 的终端执行vim /etc/profile命o(h)在该文g的未属加入:(x)
JAVA_HOME=你的jdk 目录Q如果是radhat9和jdk1.5.2 好像装在usr/java 目录里面
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME,PATH,CLASSPATH
重新登陆既可?/p>
(tng)
二、修?bashrc文g
(tng) q种Ҏ(gu)更安全,它可把用L(fng)权限控制到用L(fng)别的l粒度,如果你需要给某个用户使用q些环境变量
(tng)你只需要修改其个h用户ȝ录下?bashrc文g可以了(jin)?br /> (tng)在shell的终端执行vim /home/peidw/.bashrc
(tng)?bashrc的后面添加环境变量即?/p>
JAVA_HOME=你的jdk 目录Q如果是radhat9和jdk1.5.2 好像装在usr/java 目录里面
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export (tng) CLASSPATH
三、直接在shell下修?/p>
不赞成用这U方法,因ؓ(f)换个shell你的讄便无效这U方法仅仅是临时使用Q以后要使用又要重新讄Q烦(ch)不胜?br />只需在shelll端执行以后命o(h)卛_?/p>
export JAVA_HOME=你的jdk 目录Q如果是radhat9和jdk1.5.2 好像装在usr/java 目录里面
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
(tng)
(tng)
(tng)
(tng)
pico untar
因ؓ(f)在我的当前工作目录里untar文g不存在,所有pico文本~辑器自动创个文Ӟ现在Q我输入以下内容Q?/p>
#!/bin/bash
echo this is the script file $0
echo untarring the file $1
# this calls tar with options -xvzf (extract,
# verbose, filter through gzip, input filename)
tar -xvzf $1
我?lt;CTRL>O保存q个文gQ然?lt;CTRL>X退出?/p>
脚本的第一行,以?!”开始是特别的提C-它告诉shell应该用哪一个程序来解释我的脚本。在q个例子里,我用bash shell /bin/bash。第一行必M用“#!”开_(d)否则脚本不会(x)q行Q系l认为是一个文本文Ӟ(j)。其他以?”开始的行是注释行只是给作者和读者用的Q计机蟩q这些行?br />在以上脚本里Q参?0, $1, $2…是传递到脚本里面的参数。D个例子,如果我运行我的脚本名“myscript”带七个参数如下Q?/p>
myscript a b c d e f g
那么Q参?0是myscript, $1是a, $2是bQ?3是cQ依此类推?/p>
脚本的第二行和第三行Qecho命o(h)输出所有在它后面同一行上的文本,然后扩展在脚本里对应的参?0?1。第四行和第五行是我写的注释文本Q提醒我在这个脚本里要做的事情。只有最后一行是真正起作用的?/p>
一旦脚本已l写好,我把文g属性改成对文g拥有者是“可执行”的:
chmod u+x untar
然后我的脚本可以这栯行了(jin)Q?/p>
./untar my_tar.tar.gz
Liunx脚本的确非常丰富Q灵z,功能强劲Q还可能有点复杂。然而,对于日常d~写一些简单脚本,它ƈ不需要什么特别高q知识。你可以把一些要用到的命令放在一P一个接一个,输入到文仉。我使用脚本很频J是因ؓ(f)我太懒了(jin)Q不想一ơ一ơ的输入相同的命令?/p>
一个最单的Ҏ(gu)Q可以把一l命令放在文本文仉然后使用source命o(h)传递给shell让它直接q行Q?/p>
source my_file
q个时候就不需要在文本W一行加上?!”的标志?jin)?/p>
3.4.6 (tng) 引号的含?br /> (tng)
一般来_(d)以下字符对于shell有特D的含义Q?/p>
\ ' " ` < > [ ] ? | ; # $ ^ & * ( ) = <Space> <Tab> <Newline>
q里有四U不同的W号Q反斜杠(\)Q单引号(?Q双引号(?Q反向单引号(`)?/p>
(tng)反斜?\)表示Q关闭后面字W的Ҏ(gu)含义 (tng)
(tng)单引??表示Q关闭在两个单引号之间所有字W的Ҏ(gu)含义 (tng)
(tng)双引??表示Q关闭在两个双引号之间所有字W的Ҏ(gu)含义除了(jin)$ ` \ (tng)
(tng)反向单引?`)表示Q告诉shell首先q行两个反向单引号之间的命o(h)Q然后把得到的结果再传递给两个单引号之外的命o(h)。同L(fng)功能也可以通过?command”命令来实现Q而且可能?x)更方便。?
举个例子Q我可以创徏一个奇怪的目录名叫做?”通过使用“\”或者“’”符P(x)
mkdir \*
mkdir ??/p>
q屏蔽了(jin)?”对于shell的特别含义。如果没有“\”,?”意味着当前目录下所有文件?/p>
3.4.7 (tng) 输入输出重定?br /> (tng)
有三个最重要的输入输出流Q标准输?stdin),标准输出(stdout),标准错误(stderr)。它们对于控制台Q“控制台”指的是键盘用于输入Q屏q用于输出)(j)来说是缺省的Q但是它们可以被重定向?/p>
重定向标准输出,可以使用?gt;”符P举例Q?/p>
dir my_dir > filelisting.txt
把dir命o(h)的标准屏q输出重定向到文本文?filelisting.txt文g里,所以屏q上没有M输出。这个文件可以用来编辑(比如使用pico文本~辑器)(j)或者合q到其他的文仉?/p>
重定向标准错误,可以使用l构?>”,举例Q?/p>
dir my_dir 2> errorlisting.txt
以上命o(h)送标准输出到屏幕上,如果没有错误信息Q将没有M信息写到errorlisting.txt文g里。如果出错,则没有什么东西输出到屏幕Q而文件errorlisting.txt包含错误信息。错误信息有可能是这L(fng)Q?/p>
dir: my_dir: (tng) Permission denied
最后,我也可以把标准输出和标准错误一赯出到同一个文仉Q?/p>
dir my_dir > file_and_error_listing.txt 2>&1
以上命o(h)先重定向标准输出到文本文仉Q然后再重定向标准错误到和标准输出同L(fng)位置。它如何实现可能看v来有点古怪,但是是可行的?/p>
在以上的例子里,如果重定向的文g已经存在Q该文g?x)被覆盖。如果你要追加到该文件的末尾Q可以用?gt;>”符P以上的例子就变成Q?/p>
dir my_dir >> filelisting.txt
dir my_dir 2>> errorlisting.txt
dir my_dir >> file_and_error_listing.txt 2 > &1
如果你对?>”感到很qhQ这里有一个简单的办法可以帮你理解Q标准流有标准的解析器:(x)?”代表标准输入,?”代表标准输出,?”代表标准错误?/p>
dir my_dir > file.txt
是以下命令的写方式:(x)
dir my_dir 1 > file.txt
那么以下命o(h)是用来输出标准错误:
dir my_dir 2 > file.txt
q有Q你q可以用符号“|”(道命o(h)Q把一个命令的标准输出送到另外一个命令的标准输入。在以下q个标准的例子里Qdir命o(h)的标准输出通过道输入到命令more里(输出满屏的时候自动暂停)(j):
dir | more
你还可以使用“tee”命令把标准输出同时写到文g和屏q,
dir | tee filelisting.txt
tee是“T型连接器”的模拟韻I在管道中的主要的用途是分流?/p>
q个部分q样都用来讲q标准输出重定向Q对于标准输入重定向不像标准输出重定向那么有用,但是它可以用以下方式实?
cat < my_file
q有一U叫做“直接插入式”的标准输出Q可以通过?lt;<”来实现。不要管它了(jin)Q看hҎ(gu)没有什么实际用处。不q,如果你真的想知道Q这里有一个例子(q里?gt;”式W二个提C符Q?/p>
cat << my_marker
> my_line_from_the_keyboard
> another_line_from_the_keyboard
> my_marker
除了(jin)重定向到常规文g和“过滤器”之外(如以上的例子所C)(j)Q你q可以重定向到设备和其他Ҏ(gu)文g。看下面q些例子?/p>
重定向到讑֤文g的例子。以下命令将昄文g列表到第四个文本l端Q?/p>
dir > /dev/tty4
以下是一个重定向C个特D的FIFO(先进先出)文g的例子。该命o(h)送信息”you are lucky”到叫做“lucky”的ICQ用户UIN 7777777 Q假定你已经用你的ICQE序q接到ICQF服务器上?jin)?j)
echo message 7777777 “y(c)ou are lucky?< ~/.licq/licq_fifo
以上的例子能够工作是因ؓ(f)在你licq目录下的文g“licq_fifo”是一个特别的FIFO序列文g。以上这个例子,Ҏ(gu)于在囑Ş用户界面下的ICQE序有什么特别有用的地方吗?举个例子Q你可以写一个短的脚本带上多个信息给你的那些ICQ伙伴们:(x)
#!/bin/bash
echo Messaging UIN: $1 Message: $2 Times: $3
# The next command puts puts your licq in the status "on-line, invisible".
echo 'status *online' > ~/.licq/licq_fifo
c=0
while [ $c -le $3]
do
echo message $1 $2 > ~/.licq/licq_fifo
c=`expr $c + 1`
echo $c " "
done
echo 'status offline' > ~/.licq/licq_fifo
echo "all done"
q个例子利用?jin)licq通信模型QF(tun)IFO文gQ和单的文g重定向功能,l你一个关于如?“自动化”licq的主意?/p>
3.4.8 (tng) Shell的特D字W?metacharacters)
(tng)
一般来_(d)q些字符对于shell有特别的含义Q?/p>
\ ' " ` < > | ; <Space> <Tab> <Newline> ( ) [ ] ? # $ ^ & * =
以下是这些字W的含义Q?/p>
\ ????主要用来注释Q前面已l描q过 (参见 3.4.6)?/p>
< ?> 主要用来输入和输出重定向
| 是管道命令,道左边的标准输出是道双的标准输?/p>
; 用于间隔在同一命o(h)行上的几个命?/p>
<Space> ?<Tab> 间用于分开命o(h)的字W和单词
<Newline> 完成一条命令或者一l命?/p>
( ) 用于装需要用不同的shell启动的命令, 比如 ( dir )
{ } 用于装要用当前shell启动的一l命令,比如 { dir }Q需要空格间?/p>
& 使当前命令在后台q行Q有它自q立的q程Q,所以下一条命令不需要等待前一条命令结束才能开始?/p>
* 当搜索文件时Q它匚w除了(jin)以?”开头的所有文?/p>
Q当搜烦(ch)文gӞ它匹配Q何单个字W?/p>
[ ] 当搜索文件时Q它匚wM在[]里面的单个字W?/p>
&& 是用于连接两个命令的“与操作”,
command1 && command2Q?只有当command1退出状态ؓ(f)0Ӟ没有错误Q,command2才会(x)被执行。比如, cat file1 && cat file2 只有当file1正常昄Ӟ file2才能被显C?/p>
|| (tng) 是用于连接两个命令的“或操作?/p>
command1 || command2Q?只有当command1退出状态非0Ӟ有错误)(j)Qcommand2才会(x)被显C。比如:(x)cat file1 || cat file2 只有当显Cfile1出错Ӟfile2才能被显C?/p>
= 指定值给变量
举例Q命令me=blahblah讑֮值“blahblah”给变量“me”,我可以输出变量名:
echo $me
$ (tng) (tng) (tng) (tng) (tng) 预处理扩展变量名
变量可以使用?”来讑֮|也可以通过预先变量讑֮来设|?/p>
$0 (tng) (tng) (tng) (tng) 被执行的shell脚本的名U?/p>
$# (tng) (tng) (tng) (tng) 按位|对应的命o(h)输入参数, $1W一个参赛, $2W二个参敎ͼ $3W三个参数…直?9
$* (tng) (tng) (tng) (tng) 扩展所有的位置参数l命?/p>
$@ (tng) (tng) (tng) (tng) 扩展所有的位置参数l命令,但是当?@”用时Q参C别标?/p>
(tng)