linux常見命令

<script src="http://wz.csdn.net/javascripts/vote.js" type="text/javascript"></script>

2004年10月04日

用wget下載整個網站的方法

wget -r -p -np -k http://202.38.75.11/~jbhuang/blog/

kingpaul @ 06:40 PM 發表於 linux | 編輯 | 留言 (0) | TrackBack (0)

2004年09月23日

Linux下配置DHCP服務器

http://www.codesky.com/info/5144.htm

配置DHCP

  Redhat使用dhcpd進程提供DHCP服務,啓動時dhcpd自動讀它的配置文件/etc/dhcpd.conf。dhcpd將客戶的租用信息保存在/var/lib/dhcp/dhcpd.leases文件中,該文件不斷被更新,從這裏面可以查到IP地址分配的情況。

  dhcpd爲了向一個子網提供服務,需要知道子網的網絡地址和網絡掩碼,並且還要知道地址分配的範圍,下面給出一個簡單的dhcpd.conf文件:

  subnet 192.168.100.0 netmask 255.255.255.0 {

  range 192.168.100.10 192.168.100.253;

  }

  此例中,dhcpd將給192.168.100.0網絡分配192.168.100.10到192.168.100.253的IP地址。

  租期時間可以從0秒到無限長,可以根據需要來定。缺省的租期時間爲一天,即86400秒。可以爲主機定義兩個租期長度:

  default-lease-time 默認租期時間;

  max-lease-time 用戶可以獲得的最長租期時間。

  下面的配置將缺省的租期時間設置爲10分鐘,最長租用時間爲1小時:

  subnet 192.168.100.0 netmask 255.255.255.0 {

   range 192.168.100.10 192.168.100.253;

   default-lease-time 600;

   max-lease-time 3600;

  }

  DHCP還可以向客戶提供更多的參數,這些參數可以用option來指定,例如:

  subnet 192.168.100.0 netmask 255.255.255.0 {

  range 192.168.100.10 192.168.100.253;

   default-lease-time 600;

   max-lease-time 3600;

   option subnet-mask 255.255.255.0;

   option routers 192.168.100.254; 默認路由

   option domain-name-servers 202.102.134.68; DNS服務器

  }

現在大家對DHCP配置應該有個瞭解了,其實過程就是這麼簡單,中間就隔了一層窗戶紙。

  實際演練

  接下來給大家一個示例,把我的redhat9.0配置成一臺DHCP服務器。

  vi /etc/dhcpd.conf

  配置後,我的機器的該文件內容如下(註釋的部分都已經刪除掉了,至於原文,大家可以對照/usr/share/doc/

  dhcp-3.0pl1/dhcpd.conf.sample文件):

  [root@rh9 test]# more /etc/dhcpd.conf

  ddns-update-style interim;

  ignore client-updates;

  subnet 192.168.0.0 netmask 255.255.255.0 {

   option routers 192.168.0.1;

   option subnet-mask 255.255.255.0;

   option broadcast-address 192.168.0.255;

   option domain-name-servers

  202.96.199.133, 202.96.133.134;

   range dynamic-bootp 192.168.0.1 192.168.0.255;

   default-lease-time 21600;

   max-lease-time 43200;

  }


這兒我解釋一下配置部分,首先subnet定義了網絡的地址,然後option routers定義了網關地址;subnet-mask定義子網掩碼;broadcast-address定義廣播地址;domain-name-servers定義DNS NAMESERVER的地址;dynamic-bootp是給客戶端分配的地址,定義的是192.168.0.1-- 192.168.0.255整個網段地址;最後2行是講分配出的地址的缺省租期時間設置爲10分鐘,最長租用時間爲1小時。這樣,一個DHCP服務器就配置好了。

  我們可以測試一下結果:在另外一個redhat linux7.2上,把IP設置成DHCP主機的IP地址,通過netconfig命令配置。

  檢查配置:

  [root@rh72 root]# more /etc/sysconfig/ network-scripts/ifcfg-eth0

  DEVICE=eth0

  ONBOOT=yes

  BOOTPROTO=dhcp

  [root@rh72 root]#

  確定網卡已經是DHCP的了。

  [root@rh72 root]# ifconfig

  eth0 Link encap:Ethernet HWaddr 00:0C:29:A3:C6:71

   inet addr:192.168.0.254 Bcast:192.168.0.255 Mask:255.255.255.0

  查看地址,發現ETH0已經分配了一個254的地址,說明DHCP服務器配置成功。

  小結

  至此,我們已經完成了一臺Linux DHCP服務器的安裝和配置工作。在實際的使用過程中,上述操作步驟應該可以滿足一般應用的需求,但是我們還需要經常研究具體的命令參數,讓DHCP服務器能更好地爲我們服務

kingpaul @ 05:13 PM 發表於 linux | 編輯 | 留言 (0) | TrackBack (0)

2004年09月16日

VNC

  VNC(Virtual Network Computing,虛擬網絡計算),是用來顯示遠程計算機整個桌面的輕量型遠程控制程序。
1. 下載:http://www.uk.research.att.com/vnc
2. 使用方法:
1) 服務器端:
#vncserver
$vncserver
注意到每個用戶都可以啓動自己的vncserver,每個用戶可以啓動多個vncserver,用顯示端口號:1,:2,:3等等來標識。
2) 客戶端:
a)在linux下,運行vncviewer命令即可,服務器地址的寫法形如192.168.3.119:1
b)在windows下,運行windows版本的vncviewer即可,用法與linux下相近。
c)用瀏覽器(平臺無關),作爲java applet來實現,以形如http://192.168.3.119:5801的方式來啓動
3) 密碼修改:
第一次啓動vncserver會提示輸入密碼,以後要修改的話,運行:
#vncpassword
4) 停止vnc server:
#vncserver -kill :1
#vncserver -kill :2
注意到vncserver只能由啓動它的用戶來關閉,即時是root也不能關閉其它用戶開啓的vncserver,除非用kill命令暴力殺死進程。
5) 指定顯示端口號啓動VNC server:
#vncserver :3
$vncserver :6
6) 設置VNC server分辨率:
#vncserver -geometry 800x600
#vncserver -geometry 640x480
7) 設置vncserver的色深:
8位爲256色,16位爲64k色
#vncserver -depth 8
#vncserver -depth 16
8) 穩定性設置:
vncserver默認在多個客戶機連接同一個vncserver的顯示端口時,vncserver端口舊連接,而爲新連接服務,可通過-dontdisconnect拒絕新連接請求而保持舊的連接。
9) 設置vncserver的同一個顯示端口可以連接多個客戶機
#vncserver -alwaysshared


10) vnc的反向連接
大多數情況下,vncserver總處於監聽狀態,vnc client主動向服務器發出請求從而建立連接。然而在一些特殊的場合,需要讓vnc客戶機處於監聽狀態,vncsrever主動向客戶機發出連接請求,此謂vnc的反向連接。主要步驟:
a) 啓動vnc client,使vncviewer處於監聽狀態
#vncviewer -listen
b) 啓動vncserver
#vncserver
c) 在vncserver端執行vncconnect命令,發起server到client的請求
#vncconnect -display :1 192.168.3.69

 

kingpaul @ 02:00 PM 發表於 linux | 編輯 | 留言 (0) | TrackBack (0)

Linux 系統中的Samba配置(轉)

http://www.ccw.com.cn/htm/app/salon/01_8_8_2.asp

前言:
爲了實現windows 和 Linux以及其他操作系統之間的資源共享,軟件商推出nfs 和samba兩種解決方式。由於市場上缺乏象pc-nfs那樣的客戶端工具,使得Linux和windows的資源共享變得複雜。Samba的出現解決了這一問題,它以其簡潔、實用、靈活配置的特點受到越來越多人們的廣泛關注。
Windows利用SMB協議來實現操作系統間文件和打印機共享,而Samba本身具備SMB協議,它實現局域網內和Windows系列計算機的資源共享。
本文就Samba在Linux系統下的配置爲重點,討論局域網內windows 與 Linux 的資源共享。

一、Samba 介紹
1、SMB協議
SMB (Server Message Block,服務信息塊) 協議,是局域網上的共享文件/打印機的一種協議,它可以爲網絡內部的其他windows和linux 機器提供文件系統、打印服務。SMB的工作原理是讓NetBIOS和SMB運行在TCP/IP之上,且使用NetBIOS的nameserver讓linux機器可以在windows 網絡鄰居里被瀏覽。

2、Samba
Samba是用來實現SMB的一種軟件,由澳大利亞的Andew Tridgell開發,是一種在Linux 環境裏運行的自由軟件。它可以完成如下功能:
文件服務和打印服務,實現Windows和Linux的資源共享。
登錄服務器,可以作爲局域網的服務器。
作爲主域控制器。
WINS服務器。
支持SSL。
支持SWAT。

二、 Samba服務
1、 核心進程
Samba 有兩個守護進程:smbd 和nmbd,它們是Samba的核心進程。nmbd進程使其他計算機瀏覽Linux服務器,Smbd進程在SMB服務請求到達時對它們進行處理,並且爲使用或共享的資源進行協調。

2、 啓動服務
Samba 有兩種啓動方式:Daemon形式和Inetd形式。
(1)Daemon形式 建立啓動腳本:rc.samba
smbd -D -d1
nmbd -D -d1

-D 表示以Daemon形式執行;-d1 表示除錯記錄級別
執行腳本文件rc.samba

(2)Inetd形式
設置文件:/etc/services
netbios -ssn 139/ tcp
netbios -ns 137/ udp

設置文件:/etc/inetd.conf
netbios -ssn stream tcp nowait root /usr/sbin/smbd smbd
netbios -ns dgram udp wait root /usr/sbin/nmbd nmbd

重啓動Inetd daemon
# kill -HUP 1

3、 客戶工具 smbclient
Smbclient命令用來存取遠程Samba服務器上的資源。其命令形式與ftp相似。
命令語法是:#smbclient [password] [option]
(1) 解釋:servicename是要連接的資源名稱,資源名稱的形式如下:
//server/service server 是遠程服務器的NetBIOS名字,對於windows服務器而言,就是出現在網上鄰居中的名字。
Service是各server所提供的資源的名字。
pssword 是存取該資源所需的口令
option 各種命令選項,其中 -L 用於列出遠程服務器提供的所有資源
-I 指定遠程服務器的IP地址。此時,servicesname 中的NetBIOS名部分將被忽略。

(2)多種smbclient命令:
執行smbclient命令成功後,進入smbclient環境,出現提示符: smb:/>
這裏有許多命令和ftp命令相似,如cd 、lcd、get、megt、put、mput等。通過這些命令,我們可以訪問遠程主機的共享資源。

4、 Samba系統裝載與卸載
(1) 裝載其他主機的資源
我們可以利用Samba提供的smbmount命令,裝載其他主機的共享資源。
Smbmount的命令語法:# smbmount
其中 servicename 是資源名,mount-point是安裝點。

例如: # smbmount "//server/tmp" -c ' mount /mnt'
表示:把名字爲“server”的計算機上的共享資源“tmp”的內容裝載到本地的 /mnt
目錄下。

(2) 卸載資源
卸載一個已經裝載的SMB文件系統,使用smbunmount命令,同時指定要卸載的裝載點。 例如: # smbunmount / mnt

三、Samba配置
Samba組件的配置文件是 /etc/smb.conf ,該文件幾乎包含了Samba系統程序運行時所需的所有配置信息。

1、 配置選項
配置文件中有比較重要的幾個節:[gloabal]、[homes]、[printers],下面分別給與說明。
(1)[gloabal]節 在全局參數中,參數的設置直接影響samba系統。
NetBIOS name:設置主機名稱
Workgroup:用來指定主機所在網絡上所屬的NT域名或者工作組名稱。格式是
Workgroup= Nt Domain-Name or workgroup-name
Server string:用來設置本機描述,缺省是 Samba Server
Host Allow:它允許設置哪些領域的機器可以訪問它的Samba服務器
Load printers:允許自動加載打印機列表,而不需要單獨設置每一臺打印機。
Interface:配置Samba使用多個網絡界面。
Domain controller: 僅當網絡中有一臺在安裝時設置爲主域控制器時使用此選項。
Security: 設置安全參數,定義安全模式。Samba 的安全模式有四種
Share、 user、 server 、domain
encrypt passwords 、smb passwd file:用於適用加密口令。

下面是一段參數配置例子:
[global]
smb passwd file = /etc/smbpasswd
remote announce = 172.18.158.234 172.18.153.55 172.18.153.255
dns proxy = no
security = user
encrypt passwords = yes
server string = Ftp Server
workgroup = turing
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
log file = /var/log/samba/log.%m
load printers = yes
guest account = dscan
remote browse sync = 172.18.158.234 172.18.153.55 172.18.153.255
printcap name = /etc/printcap
max log size = 50
hosts allow = 172.18.158. 172.18.153. 127.
... ...

(2)[homes]節 所有使用者的home目錄
當任何一個客戶訪問Samba服務器時,在網絡資源中都能出現自己的home目錄共享。其配置如下:
[homes]
comment = Hnnw Directories
browseable = no
writable = yes
(3)用戶共享目錄
用來指定某一特定用戶組或者用戶擁有訪問權限的目錄配置,下列參數配置僅有hnnw組的用戶有權訪問目錄/home/samba。
[public]
comment = Public Hnnw
path = /home/samba
public = yes
writable = yes
printable = no
write list = @hnnw

2、 用戶映射
全局參數“username map”用來控制用戶映射,它允許管理員指定一個映射文件,該文件包含了在客戶機和服務器之間進行用戶映射的信息。
如:username map= /etc/smbuser
用戶映射經常在windows 和linux 主機間進行。 兩個系統擁有不同的用戶賬號,用戶映射的目的是將不同的用戶映射成爲一個用戶,便於共享文件。
下面是一個映射文件的例子:
# Map Windows admin to root
root=admin administrator
;Map the member of developer to studio
studio = @developer

等號左邊是單獨的Linux賬號,等號右邊是要映射的賬號列表。
服務器逐行分析映射文件,如果提供的賬號和某行有右側列表中的賬號匹配,就把它
替換爲等號左邊的賬號。

3、 使用加密口令
新版本的windows 95以及windows98、winnt(sp3以上版本),在網絡傳輸中僅傳遞加密口令作爲用戶認證的信息。這類客戶機和不支持加密口令並且以user安全級運行的Samba服務器通訊時,會出現故障。爲了正常的通訊,samba服務器使用加密口令。下面討論如何在samba中使用加密口令。
(1) 口令文件 /etc/smbpasswd
爲了使用加密口令,samba 需要一份口令文件(/etc/smbpasswd),並且該文件應該和Linux的口令文件(/etc/passwd)保持同步。下面是生成文件命令:

# cat /etc/password | mksmbpasswd > /etc/smbpasswd

smbpasswd 是需要的口令文件,其權限是0600,所有者是root
smbpasswd和passwd文件的記錄對應,密碼部分不同。密碼有兩部分組成,每部分
是32個"X",前部分用於和Lanman通訊,後部分和Windows NT通訊。
Root用戶可以使用smbpasswd命令爲每個用戶設定samba口令。

(2) 修改配置文件 /etc/smb.conf
要使Samba使用加密口令,需要在配置文件smb.conf中加入如下參數。
Encrypt passwords=yes
Smb passwd file= /etc/smbpasswd
第一行通知samba使用加密口令,第二行給出口令文件的位置。

(3) 重啓動samba 服務。
修改完配置文件後,需要重新啓動samba服務,可用如下命令:
# /usr/sbin/samba restart

4、windows系統中的明碼口令使用
Samba系統中使用明碼口令作爲連接SMB的默認設置。當SMB服務器對協商協議做出響應時,響應信息包含了一位,以說明服務器是否支持詢問或者響應加密。隨着win95的網絡重定向更新程序的發佈,Microsoft修改了默認值,這樣,windows客戶就不會向不支持加密的服務器發送明碼口令了。
在這種情況下,有兩種解決辦法:
(1)設置Samba服務器使用加密口令
(2)讓windows客戶使用明碼口令
這裏選用第2種解決辦法,通過修改註冊表來實現。下面對win95/win98、winnt用戶分別給與說明。
(1)win98/win95系統用戶
在註冊表中加入下列註冊字,並重新啓動機器:
[HKLM/System/CurrentCntrolSet/Services/VxD/VNETSUP]
“EnablePlainTextPAssword”= dword:00000001

(2)Winnt系統用戶
修改註冊表,加入下列註冊表項,並重新啓動機器:
[HKLM/System/CurrentCntrolSet/Services/Rdr/Parameters]
“EnablePlainTextPAssword”= dword:00000001

四、Samba應用
1、 windows資源共享與使用
(1)windows資源共享
a. 使用TCP/IP協議作爲網絡默認通訊協議
b. 修改網絡配置,設置文件和打印機共享。
c. 設置好計算機名和所屬工作組
d.共享系統資源

(2)在windows系統中使用Linux共享資源
a. 登錄進入windows網絡
b. 通過網上鄰居查看、使用共享資源。
c. 命令行下工具使用共享資源
使用命令行下的net.txt工具來查看、使用共享資源:
net use 命令的語法: c:>net use X://servername/sharename
在這裏,X:是共享的驅動器盤符,//servername/sharename是到共享的UNC的網絡路徑。
例如: c:/>net use h://hey/myfile
表示:將hey機器上的myfile共享資源映射爲本地的h盤

2、Linux資源共享與使用
(1)將Linux 的資源共享
通過編輯Samba配置文件,添加需要共享的Linux資源。同時可以設定訪問此資源的用戶羣及其訪問權限。下面是一段例子,將本機的 /public/data 目錄共享,所有人都有讀寫權限。
[data]
comment = Public Data
path = /public/data
public = yes
writable = yes
printable = no

(2)在Linux中使用共享資源
可以使用smbclient命令,訪問所有的Samba資源。具體使用方法見前述。

五、Samba應用程序
smbclient :訪問所有共享資源
smbstatus: 列出當前所有的samba連接狀態
smbpasswd:修改samba用戶口令、增加samba用戶。
Nmblookup:用於查詢主機的NetBIOS名,並將其映射爲IP地址
Testparam: 用於檢查配置文件中的參數設置是否正確

Linux 系統中的Samba配置

kingpaul @ 11:25 AM 發表於 linux | 編輯 | 留言 (0) | TrackBack (0)

linux下操作光盤的幾條命令

1. 從光盤中製作iso文件:
#cp /dev/cdrom ISO文件名
同理可以把上面的/dev/cdrom換成/dev/fd0、/dev/sda1等移動存儲設備的設備文件名製作軟盤、U盤的iso映象文件
2. 使用目錄文件製作iso文件
#mkisofs -r -o ISO文件名 路徑名
3. 刻錄光盤
先檢測光盤刻錄機的參數:
#cdrecord -scanbus
……
scsibus0:
  0,0,0 0)'SAMSUNG' 'CDRW/DVD DATA-348B' 'T501' Removable CDROM
……
然後刻錄:
#cdrecord -v speed=刻錄速度 dev=刻錄機設備號 ISO文件名
如:
#cdrecord -v speed=8 dev=0,0 /home/share/data.iso

kingpaul @ 10:44 AM 發表於 linux | 編輯 | 留言 (0) | TrackBack (0)

2004年09月14日

關於NFS的東東

1. 安裝包爲portmap和nfs-utils
2. 配置文件爲/etc/exports,格式:
/home/share *(sync,ro) 192.168.3.69(sync,rw)
/home/ftp 192.168.1.0/24(sync,ro)
/home/public *.test.com(sync,rw)
3. nfs啓動:
#service portmap start
#service nfs start
4. showmount命令:
showmount:顯示連接到指定NFS服務器的所有主機
showmount -e [NFS服務器主機地址]:顯示指定NFS服務器的輸出目錄列表
showmount -d [NFS服務器主機地址]:顯示指定NFS服務器中已被客戶端連接的所有輸出目錄
showmount -a [NFS服務器主機地址]:顯示指定NFS服務器的所有客戶端主機及其所連接的目錄
5. exportfs命令:
exportfs -rv:使NFS服務器重新讀取exports文件中的設置而不需要重新啓動NFS服務器
exportfs -auv:停止當前主機中NFS服務器的所有目錄輸出
exportfs -av:輸出當前主機中NFS服務器的所有共享目錄
5. 掛/卸載NFS服務器中的共享目錄
#showmount -e 192.168.3.69
[root@jbhuangRH root]# showmount -e 192.168.3.119
Export list for 192.168.3.119:
/writable ns.infonet.org
[root@jbhuangRH root]# mount 192.168.3.119:/writable /mnt/nfs
[root@jbhuangRH root]# ls /mnt/nfs
qterm qterm-0.3.6.tar.gz
[root@jbhuangRH root]# umount /mnt/nfs

kingpaul @ 08:27 PM 發表於 linux | 編輯 | 留言 (0) | TrackBack (0)

2004年09月09日

apache+named配置虛擬主機

系統:Mandrake10.0,RH9下面的named一直搞不定,下午再看看。
1. apache的安裝和配置:
到64.123或者apache的官方主頁上下載一個httpd-2.0.50.tar.gz,依次
#tar xvzf httpd-2.0.50.tar.gz
#./configure --prefix=/www/apache;make;make install
編輯/www/apache/conf/httpd.conf,做了其它基本配置之後,到文件的section3,修改如下,添加兩個虛擬主機:
#
# Use name-based virtual hosting.
#
NameVirtualHost *:80

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for requests without a known
# server name.
#
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /www/apache/htdocs
ServerName kingpaul.infonet.org
ErrorLog logs/kingpaul.infonet.org-error_log
CustomLog logs/kingpaul.infonet.org-access_log common
</VirtualHost>

<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /www/apache/sunshinedocs
ServerName sunshine.infonet.org
ErrorLog logs/sunshine.infonet.org-error_log
CustomLog logs/sunshine.infonet.org-access_log common
</VirtualHost>

保存退出,然後在/www/apache/htdocs和/www/apache/sunshinedocs添加不同的主頁文件,最後:
#/www/apache/bin/apachectl start
啓動httpd
2. named的安裝配置
我的linux是ftp安裝的,因此只要用下面這條命令就給我把named裝上了,很簡單。
#urpmi name
編輯/etc/named.conf,在options字段添加:
forward first;
forwarders {
202.38.64.1;
};
再添加如下語句:
zone "infonet.org" {
type master;
file "name2ip.db";
allow-update {localhost;};
};

保存退出。然後在/var/named/下添加一文件name2ip.db,編輯內容爲:
$TTL 86400
@ IN SOA kingpaul.infonet.org. root.kingpaul.infonet.org. (
2001111601
28800
14400
3600000
86400
)

IN NS kingpaul.infonet.net
IN A 192.168.3.153

kingpaul IN A 192.168.3.153
sunshine IN A 192.168.3.153
jbhuang IN A 192.168.3.69
lab IN A 192.168.3.1
localhost A 127.0.0.1

然後,編輯/etc/resolv.conf,添加字段
search infonet.org
servername 192.168.3.153
最後:
#serice named restart
啓動named

3. 在另外一臺機器上,將DNS服務器設置爲192.168.3.153,nslookup kingpaul.infonet.org和nslookup sunshine.infonet.org發現兩者地址是一樣的,打開IE,地址敲kingpaul.infonet.org和sunshine.infonet.org,可打開不同的主頁,虛擬主機設置成功。

kingpaul @ 02:09 PM 發表於 linux | 編輯 | 留言 (1) | TrackBack (0)

2004年08月31日

proftpd安裝與配置

xinetd模式:
http://www.17lan.com/mc_631.html
standalone模式:
http://www.fanqiang.com/a6/b2/20011020/0905001485.html
一個proftpd配置例子:
http://blog.csdn.net/swordzjj/archive/2004/06/30/30490.aspx

kingpaul @ 10:09 AM 發表於 linux | 編輯 | 留言 (0) | TrackBack (0)

2004年08月30日

與openssh有關的東東

一、安裝和配置openssh server:
1 安裝軟件包(略)。
2 OpenSSH服務器配置文件:/etc/ssh/sshd_config
3 penSSH服務器狀態:#service sshd status
4 啓動/停止/重啓enSSH server:#service sshd start/stop/restart
5 設置OpenSSH server默認啓動:
#chkconfig --level 35 sshd on
#ls /etc/rc3.d/|grep sshd
二、scp:從遠程主機複製文件到本機
#scp [email protected]:/etc/passwd .
三、sftp:使用ssh協議的ftp

kingpaul @ 03:23 PM 發表於 linux | 編輯 | 留言 (0) | TrackBack (0)

(筆記)linux配置telnet服務器

1. 安裝telnet-server軟件包。(略)
2. 設置telnet-server的啓動運行
  telnet server不作爲獨立的服務器程序運行,而是受xinetd程序的控制,啓動配置文件爲/etc/xinetd.d/telnet,默認xinetd程序並不啓動該服務,可在chkconfig --list看出telnet是關閉的,/etc/xinetd.d/telnet中disable=yes可通過下面的方式啓動telnet server:
 1) chkconfig telnet on  //該命令修改了/etc/xinetd.d/telnet的配置,設置disable=no
 2) service xinetd restart
 再次chkconfig --list看到telnet server已經啓動。

kingpaul @ 11:19 AM 發表於 linux | 編輯 | 留言 (0) | TrackBack (0)

2004年08月27日

GRUB入門

LILO 需要知道你的內核在驅動器上的實際位置,但是GRUB
卻不需要,它不僅能讀文件系統還能識別內核映像,而且它還支持最新的 2.4.1 內核所帶的 Reiser 日誌文件系統。這意味着你不必在更新內核或者改變配置文件之後重新安裝GRUB。如果BIOS 支持LBA 的話,也沒有1024 柱面的問題。另外還支持網絡啓動和無盤客戶機。

然而,或許我們對LILO 太熟悉了吧,也或許GRUB 還有很多需要完善?總之,安裝 GRUB 看起來並不是一件很輕鬆的事情。下面我們就詳細介紹GRUB 的安裝和配置。


安裝

在 /tmp 目錄下解開文件:

# tar zxvf grub-0.5.96.1.tar.gz

進入 "grub-0.5.96.1" 目錄,編譯程序:

# ./configure
# make
# make install

配置:

和許多我們平常看到的多重啓動管理程序一樣,GRUB
提供一個菜單界面(LILO 不是菜單界面的)。GRUB的
缺省安裝位置爲 /boot/grub ,配置文件也放在這個目錄下。缺省的配置文件名爲 menu.lst,這個文件的功能就像和 lilo.conf
一樣,定義多重啓動選項以及磁盤映像。

我們來看一個 menu.lst 文件的示範例子:

timeout 5
color black/yellow yellow/black
default 0
password freeos

title My Mandrake
kernel (hd0,1)/vmlinuz root=/dev/hda3 idebus=66

title My Red Hat
kernel (hd0,6)/boot/vmlinuz root=/dev/hda7 idebus=66

title W2K Pro
root (hd0,0)
makeactive
chainloader +1

讓我們詳細分析一下各個選項的含義:

timeout - 缺省入口的顯示延遲時間(秒)
color - 菜單顯示的顏色組合,第一組顏色爲前景色和背景色,
第二組爲高亮時的組合。
default - 定義缺省的啓動入口,這裏的 0 就是使用定義的第一個入口。
password - 定義進入GRUB 高級特性時需要的口令。GRUB 利用其能讀取文件系統的特色,提供十分強大的功能。例如用戶可以在grub 的啓動提示符下輸 'cat /etc/shadow' 來讀包含加密口令的文件,而不需要進入你的系統!所以,爲你的系統設置一個口令十分重要。

下面分析啓動入口,每一個入口都應該以一個 'title' 的關鍵字開始,後面跟上對該啓動入口的描述。接下來就是 'kernel' 入口,

kernel (hd0,1)/vmlinuz root=/dev/hda3 hdc=ide-scsi

根據 GRUB 對設備的命名規則,我們可以很容易的理解上面這行的含義:軟驅設備名爲 fdx ,硬盤爲 hdx,需要記住的是 GRUB 從0 開始計數,所以第一臺硬盤爲 hd0 而不是 hd1。設備名用括號括起來,硬盤上的分區用逗號連接。例如 (hd0,1) 表示第一臺硬盤上的第二個分區,而 (hd1,5) 就表示第二臺硬盤上的第一個邏輯分區。

GRUB 能讀取大多數文件系統,上面這一行指定 GRUB 尋找
位於第一臺硬盤上第二基本分區上的 /vmlinuz 文件,你也需要指定 'root=/dev/hda3' (假設你的根文件系統位於/dev/hda3),否則內核就不能掛接上根文件系統,之後就是你自己想加入的其他參數了。這些參數就和LILO 啓動時傳遞給內核的參數一樣,或者說和 lilo.conf 中 append 後面的參數一樣。

另外一個比較特別的入口是啓動Windows 2000 的入口,root 入口指向 Windows 2000 的安裝位置(C:/),接下來的入口設置分區的激活標誌,最後的入口告訴 GRUB 搜索分區的第一個扇區來啓動那裏的操作系統。

以上是對GRUB 的一個典型的多重啓動設置的分析,在正式開始安裝GRUB 之前,建議你手頭有一張LILO 啓動盤或者一張應急啓動盤,以防不測。

以root 登錄,輸入"grub"命令以後,就會看到如下的畫面:

GRUB version 0.5.96.1 (640K lower / 3072K upper memory)

[ Minimal BASH-like line editing is supported. For the first word, TAB lists possible command completions. Anywhere else TAB lists the possible completions of a device/filename. ]

grub>

以上看到的就是 grub 提示符,我們要在這個提示符下面安裝GRUB。

grub> install (hd0,1)/boot/grub/stage1 d (hd0) (hd0,1)/boot/grub/stage2 p (hd0,1)/boot/grub/menu.lst

GRUB 分爲兩個主要的步驟, stage1 和 stage2。Stage1 是一段嵌入MBR 的迷你代碼。Stage2 是主要部分,在 stage1 把控制權傳遞給它後,就由它來接管所有事情。

install 後面指定stage1 的位置,我們不僅說明了其分區
位置:(hd0,1),因爲 GRUB 能讀取文件系統,所以還說
明瞭分區上目錄位置:/boot/grub/stage1,d 參數表示 stage1 將尋找 stage2 所在的磁盤。接着就是 GRUB 的安裝位置:(hd0) ,這裏就是指安裝在MBR。後面的參數指定 stage2 的位置:(hd0,1),和 stage1 的定義一樣。p 參數指定 menu.lst 文件的位置。

對於 /boot 作爲單獨的分區的例子,需要採用下面的命令行:

grub> install (hd0,1)/grub/stage1 d (hd0) (hd0,1)/boot/grub/stage2 p (hd0,1)/grub/menu.lst

以上例子假設 /boot 位於 (hd0,1) (也就是hda2),而 / 位於(hd0,2) (也就是 hda3) ,我們不能用 '(hd0,2)/boot/grub/stage1' ,因爲GRUB 不知道 (hd0,1) 是 /boot ,所以必須首先指向掛接爲 /boot 的分區,然後把目錄指向那裏。

重新啓動系統以後,就可以看到 GRUB 菜單了。看起來似乎很繁瑣,這麼長的命令行,是的!對於那些 LILO 能正常使用的人來說,或許沒有必要來玩這個危險遊戲。但是,對於那些想使用 GRUB 增強功能的人來說,試一下 GRUB 或許會有意想不到的驚喜。我的朋友告訴我說他不能用 LILO 識別 1G 內存,希望 GRUB 能幫助辦到。本文旨在拋磚引玉,
GRUB 還有很多的功能有待您的開發。

如果在配置和安裝中遇到了麻煩,爲什麼不使用
info grub 或者 man grub 來尋求幫助呢?或者乾脆上
GRUB 的官方網站

http://www.gnu.org/software/grub/

尋找 FAQ 和其他文檔呢?

GRUB 的下載地點:
ftp://alpha.gnu.org:/gnu/grub/
截止到寫稿時的最新版本爲:0.5.96.1

kingpaul @ 08:16 PM 發表於 linux | 編輯 | 留言 (0) | TrackBack (0)

2004年08月23日

掃盲——/etc/fstab釋疑

轉載,不完全版:
http://www.mhdn.net/o/2002-01-19/4337.html

1 fstab文件的作用
文件/etc/fstab存放的是系統中的文件系統信息。當正確的設置了該文件,則可以通過"mount /directoryname"命令來加載一個文件系統,每種文件系統都對應一個獨立的行,每行中的字段都有空格或tab鍵分開。同時fsck、mount、umount的等命令都利用該程序。

2. fstab文件格式
下面是/etc/fatab文件的一個示例行:
fs_spec   fs_file  fs_type   fs_options  fs_dump fs_pass 
/dev/hda1   /        ext2     defaults      1       1 

fs_spec - 該字段定義希望加載的文件系統所在的設備或遠程文件系統,對於一般的本地塊設備情況來說:IDE設備一般描述爲/dev/hdaXN,X是IDE設備通道(a, b, or c),N代表分區號;SCSI設備一描述爲/dev/sdaXN。對於NFS情況,格式一般爲:,例如:`knuth.aeb.nl:/'。對於procfs,使用`proc'來定義。

fs_file - 該字段描述希望的文件系統加載的目錄點,對於swap設備,該字段爲none;對於加載目錄名包含空格的情況,用40來表示空格。

fs_type - 定義了該設備上的文件系統,一般常見的文件類型爲ext2 (Linux設備的常用文件類型)、vfat(Windows系統的fat32格式)、NTFS、iso9600等。
 
fs_options - 指定加載該設備的文件系統是需要使用的特定參數選項,多個參數是由逗號分隔開來。對於大多數系統使用"defaults"就可以滿足需要。其他常見的選項包括:
選項              含義
ro      以只讀模式加載該文件系統
sync    不對該設備的寫操作進行緩衝處理,這可以防止在非正常關機時情況下破壞文件系統,但是卻降低了計算機速度
user    允許普通用戶加載該文件系統
quota   強制在該文件系統上進行磁盤定額限制
noauto  不再使用mount -a命令(例如系統啓動時)加載該文件系統

fs_dump - 該選項被"dump"命令使用來檢查一個文件系統應該以多快頻率進行轉儲,若不需要轉儲就設置該字段爲0

fs_pass - 該字段被fsck命令用來決定在啓動時需要被掃描的文件系統的順序,根文件系統"/"對應該字段的值應該爲1,其他文件系統應該爲2。若該文件系統無需在啓動時掃描則設置該字段爲0

3. 示例文件
# /etc/fstab
/dev/hda9       swap        swap        defaults    0   0
/dev/hda1       /           ext2        defaults    1   1
/dev/hda5       /home       ext2        defaults    1   1
/dev/hda6       /usr        ext2        defaults    1   1
/dev/hda7       /usr/local  ext2        defaults    1   1
/dev/hda8       /var        ext2        defaults    1   1
/dev/hdb        /cdrom      iso9660     noauto,user 0   0
none            /proc       proc        defaults    0   0
none            /dev/pts    devpts  gid=5,mode=620  0   0 

kingpaul @ 10:22 PM 發表於 linux | 編輯 | 留言 (0) | TrackBack (0)

2004年08月07日

some links about unix/linux

什麼是Unix:
http://www.mhdn.net/o/2002-01-20/4345.html
什麼是linux:
http://www.kingsoft.com/c/2004/06/09/116860.shtml
http://www.kingsoft.com/c/2004/06/09/116861.shtml
開放源碼發展史上的重要事件:
http://www.kingsoft.com/c/2004/06/09/116850.shtml
http://www.kingsoft.com/c/2004/06/09/116851.shtml

kingpaul @ 04:29 PM 發表於 linux | 編輯 | 留言 (1) | TrackBack (0)

2004年07月11日

(科普)什麼是 GNU

whats-gnu-sm.jpg

 

在這張圖片中的兩個橫幅都包含了一個 GNU,其中一個讀作 "What's GNU?" ,另外一個則讀作 "GNU's Not Unix!" 。在中間,則是一個類似 由於超越其他人而感到自豪 的 GNU 頭像的表情。

我們感謝 Etienne Suvasa 繪製這件 What's GNU 藝術品。

在這個網站上用來描述 GNU 是什麼的頁面包括:

這張圖片有下列數種格式可以取得:

在 GNU 藝廊中的 其他的藝術品

 

由於專利問題因此沒有 gif 格式圖檔。

 


返回 GNU 首頁

請將有關 自由軟體基金會(FSF) & GNU 的 查詢 & 問題 發送到 [email protected]
也可以通過 其他聯繫方法 聯繫自由軟體基金會(FSF)。

請將有關網頁的建議發送到 [email protected]
其他問題發送到 [email protected]

Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA

全文在保證完整性的前提下可以在任意媒體轉載 - 須保留此標註。

中文譯者: 馬 雪萍。
驗證讀者: 劉 昭宏。
本文翻譯自 英文版: $20 Mar 2000 tower$

最後修改日期: 2002 年 05 月 09 日。

kingpaul @ 09:55 PM 發表於 linux | 編輯 | 留言 (0) | TrackBack (0)

(科普)Linux 是什麼?

http://202.38.75.11/~jbhuang/blog/archives/Linux.htm

kingpaul @ 08:48 PM 發表於 linux | 編輯 | 留言 (0) | TrackBack (0)

(掃盲)rpm命令參數列表

1.安裝一個包
# rpm -ivh
2.升級一個包
# rpm -Uvh
3.移走一個包
# rpm -e
4.安裝參數
--force 即使覆蓋屬於其它包的文件也強迫安裝
--nodeps 如果該RPM包的安裝依賴其它包,即使其它包沒裝,也強迫安裝。
5.查詢一個包是否被安裝
# rpm -q < rpm package name>
6.得到被安裝的包的信息
# rpm -qi < rpm package name>
7.列出該包中有哪些文件
# rpm -ql < rpm package name>
8.列出服務器上的一個文件屬於哪一個RPM包
#rpm -qf
9.可綜合好幾個參數一起用
# rpm -qil < rpm package name>
10.列出所有被安裝的rpm package
# rpm -qa
11.列出一個未被安裝進系統的RPM包文件中包含有哪些文件?
# rpm -qilp < rpm package name>
(http://www.fanqiang.com)

RPM命令手冊
本文出自:http://www.chinaunix.net [Linux]版 作者:wind521 (2002-05-20 06:02:01)
一、安裝

命令格式:

rpm -i ( or --install) options file1.rpm ... fileN.rpm

參數:

file1.rpm ... fileN.rpm 將要安裝的RPM包的文件名

詳細選項:

-h (or --hash) 安裝時輸出hash記號 (``#'')
--test 只對安裝進行測試,並不實際安裝。
--percent 以百分比的形式輸出安裝的進度。
--excludedocs 不安裝軟件包中的文檔文件
--includedocs 安裝文檔
--replacepkgs 強制重新安裝已經安裝的軟件包
--replacefiles 替換屬於其它軟件包的文件
--force 忽略軟件包及文件的衝突
--noscripts 不運行預安裝和後安裝腳本
--prefix 將軟件包安裝到由 指定的路徑下
--ignorearch 不校驗軟件包的結構
--ignoreos 不檢查軟件包運行的操作系統
--nodeps 不檢查依賴性關係
--ftpproxy 作爲 FTP代理
--ftpport 指定FTP的端口號爲

通用選項

-v 顯示附加信息
-vv 顯示調試信息
--root 讓RPM將 指定的路徑做爲"根目錄",這樣預安裝程序和後安
裝程序都會安裝到這個目錄下
--rcfile 設置rpmrc文件爲
--dbpath 設置RPM 資料庫存所在的路徑爲

二、刪除

命令格式:

rpm -e ( or --erase) options pkg1 ... pkgN

參數

pkg1 ... pkgN :要刪除的軟件包

詳細選項

--test 只執行刪除的測試
--noscripts 不運行預安裝和後安裝腳本程序
--nodeps 不檢查依賴性

通用選項

-vv 顯示調試信息
--root 讓RPM將 指定的路徑做爲"根目錄",這樣預安裝程序和後安裝
程序都會安裝到這個目錄下
--rcfile 設置rpmrc文件爲
--dbpath 設置RPM 資料庫存所在的路徑爲

三、升級

命令格式

rpm -U ( or --upgrade) options file1.rpm ... fileN.rpm

參數

file1.rpm ... fileN.rpm 軟件包的名字

詳細選項

-h (or --hash) 安裝時輸出hash記號 (``#'')
--oldpackage 允許"升級"到一個老版本
--test 只進行升級測試
--excludedocs 不安裝軟件包中的文檔文件
--includedocs 安裝文檔
--replacepkgs 強制重新安裝已經安裝的軟件包
--replacefiles 替換屬於其它軟件包的文件
--force 忽略軟件包及文件的衝突
--percent 以百分比的形式輸出安裝的進度。
--noscripts 不運行預安裝和後安裝腳本
--prefix 將軟件包安裝到由 指定的路徑下
--ignorearch 不校驗軟件包的結構
--ignoreos 不檢查軟件包運行的操作系統
--nodeps 不檢查依賴性關係
--ftpproxy 作爲 FTP代理
--ftpport 指定FTP的端口號爲

通用選項

-v 顯示附加信息
-vv 顯示調試信息
--root 讓RPM將 指定的路徑做爲"根目錄",這樣預安裝程序和後安裝程序都會安裝到這個目錄下
--rcfile 設置rpmrc文件爲
--dbpath 設置RPM 資料庫存所在的路徑爲

四、查詢

命令格式:

rpm -q ( or --query) options

參數:

pkg1 ... pkgN :查詢已安裝的軟件包

詳細選項

-p (or ``-'') 查詢軟件包的文件
-f 查詢屬於哪個軟件包
-a 查詢所有安裝的軟件包
--whatprovides 查詢提供了 功能的軟件包
-g 查詢屬於 組的軟件包
--whatrequires 查詢所有需要 功能的軟件包

信息選項

顯示軟件包的全部標識
-i 顯示軟件包的概要信息
-l 顯示軟件包中的文件列表
-c 顯示配置文件列表
-d 顯示文檔文件列表
-s 顯示軟件包中文件列表並顯示每個文件的狀態
--scripts 顯示安裝、卸載、校驗腳本
--queryformat (or --qf) 以用戶指定的方式顯示查詢信息
--dump 顯示每個文件的所有已校驗信息
--provides 顯示軟件包提供的功能
--requires (or -R) 顯示軟件包所需的功能

通用選項

-v 顯示附加信息
-vv 顯示調試信息
--root 讓RPM將 指定的路徑做爲"根目錄",這樣預安裝程序和後安裝程序都會安裝到這個目錄下
--rcfile 設置rpmrc文件爲
--dbpath 設置RPM 資料庫存所在的路徑爲

五、校驗已安裝的軟件包

命令格式:

rpm -V ( or --verify, or -y) options

參數

pkg1 ... pkgN 將要校驗的軟件包名

軟件包選項

-p Verify against package file
-f 校驗所屬的軟件包
-a Verify 校驗所有的軟件包
-g 校驗所有屬於組 的軟件包

詳細選項

--noscripts 不運行校驗腳本
--nodeps 不校驗依賴性
--nofiles 不校驗文件屬性

通用選項

-v 顯示附加信息
-vv 顯示調試信息
--root 讓RPM將 指定的路徑做爲"根目錄",這樣預安裝程序和後安裝程序都會安裝到這個目錄下
--rcfile 設置rpmrc文件爲
--dbpath 設置RPM 資料庫存所在的路徑爲

六、校驗軟件包中的文件

語法:

rpm -K ( or --checksig) options file1.rpm ... fileN.rpm

參數:

file1.rpm ... fileN.rpm 軟件包的文件名

Checksig--詳細選項

--nopgp 不校驗PGP簽名

通用選項

-v 顯示附加信息
-vv 顯示調試信息
--rcfile 設置rpmrc文件爲


七、其它RPM選項

--rebuilddb 重建RPM資料庫
--initdb 創建一個新的RPM資料庫
--quiet 儘可能的減少輸出
--help 顯示幫助文件
--version 顯示RPM的當前版本
(http://www.fanqiang.com)

kingpaul @ 02:47 PM 發表於 linux | 編輯 | 留言 (0) | TrackBack (0)

(掃盲)chsh

名稱
chsh - 更換你登入時所用的shell

語法
chsh [ -s shell ] [ -l ] [ -u ] [ -v ] [ username ]

描述
chsh 用來更換你登入時所用的shell 。在命令列沒指定shell。 chsh 會提示一個給你。

有效的shell

chsh
可用指定路徑全名的方式來指定任何一個可執行的檔案。 然而,如果此 shell並沒紀錄在 /etc/shells 檔上,則chsh會提出警告訊息。

選項
-s, --shell 變更你的登入shell.
-l, --list-shells
列出紀錄在 /etc/shells 的shell。
-u, --help
使用短訊。
-v, --version
版本資訊

相關文件
login(1) , passwd(5) , shells(5)

作者
Salvatore Valente (BP 1.0)

kingpaul @ 02:21 PM 發表於 linux | 編輯 | 留言 (0) | TrackBack (0)

2004年07月10日

介紹linux基本操作的一個網站

http://www.cngnu.org/technology/c496e65787.html

kingpaul @ 07:09 PM 發表於 linux | 編輯 | 留言 (0) | TrackBack (0)

Linux關機命令詳解

在linux下一些常用的關機/重啓命令有shutdown、halt、reboot、及init,它們都可以達到重啓系統的目的,但每個命令的內部工作過程是不同的。

   1.shutdown

shutdown命令安全地將系統關機。 有些用戶會使用直接斷掉電源的方式來關閉linux,這是十分危險的。因爲linux與windows不同,其後臺運行着許多進程,所以強制關機可能會導致進程的數據丟失﹐使系統處於不穩定的狀態﹐甚至在有的系統中會損壞硬件設備。

而在系統關機前使用shutdown命令﹐系統管理員會通知所有登錄的用戶系統將要關閉。並且login指令會被凍結﹐即新的用戶不能再登錄。直接關機或者延遲一定的時間才關機都是可能的﹐還可能重啓。這是由所有進程〔process〕都會收到系統所送達的信號〔signal〕決定的。這讓像vi之類的程序有時間儲存目前正在編輯的文檔﹐而像處理郵件〔mail〕和新聞〔news〕的程序則可以正常地離開等等。

shutdown執行它的工作是送信號〔signal〕給init程序﹐要求它改變runlevel。Runlevel 0被用來停機〔halt〕﹐runlevel 6是用來重新激活〔reboot〕系統﹐而runlevel 1則是被用來讓系統進入管理工作可以進行的狀態﹔這是預設的﹐假定沒有-h也沒有-r參數給shutdown。要想了解在停機〔halt〕或者重新開機〔reboot〕過程中做了哪些動作﹐你可以在這個文件/etc/inittab裏看到這些runlevels相關的資料。

   shutdown 參數說明:
   [-t] 在改變到其它runlevel之前﹐告訴init多久以後關機。
   [-r] 重啓計算器。
   [-k] 並不真正關機﹐只是送警告信號給每位登錄者〔login〕。
   [-h] 關機後關閉電源〔halt〕。
   [-n] 不用init﹐而是自己來關機。不鼓勵使用這個選項﹐而且該選項所產生的後果往往不總是你所預期得到的。
   [-c] cancel current process取消目前正在執行的關機程序。所以這個選項當然沒有時間參數﹐但是可以輸入一個用來解釋的訊息﹐而這信息將會送到每位使用者。
   [-f] 在重啓計算器〔reboot〕時忽略fsck。
[-F] 在重啓計算器〔reboot〕時強迫fsck。
   [-time] 設定關機〔shutdown〕前的時間。
     

2.halt----最簡單的關機命令
   其實halt就是調用shutdown -h。halt執行時﹐殺死應用進程﹐執行sync系統調用﹐文件系統寫操作完成後就會停止內核。
   參數說明:
   [-n] 防止sync系統調用﹐它用在用fsck修補根分區之後﹐以阻止內核用老版本的超級塊〔superblock〕覆蓋修補過的超級塊。
   [-w] 並不是真正的重啓或關機﹐只是寫wtmp〔/var/log/wtmp〕紀錄。
   [-d] 不寫wtmp紀錄〔已包含在選項[-n]中〕。
   [-f] 沒有調用shutdown而強制關機或重啓。
   [-i] 關機〔或重啓〕前﹐關掉所有的網絡接口。
   [-p] 該選項爲缺省選項。就是關機時調用poweroff。
  
3.reboot
reboot的工作過程差不多跟halt一樣﹐不過它是引發主機重啓﹐而halt是關機。它的參數與halt相差不多。

4.init
init是所有進程的祖先﹐它的進程號始終爲1﹐所以發送TERM信號給init會終止所有的用戶進程﹑守護進程等。shutdown 就是使用這種機制。init定義了8個運行級別(runlevel),init 0爲關機﹐init 1爲重啓。關於init可以長篇大論﹐這裏就不再敘述。另外還有telinit命令可以改變init的運行級別﹐比如﹐telinit -iS可使系統進入單用戶模式﹐並且得不到使用shutdown時的信息和等待時間。

kingpaul @ 06:17 PM 發表於 linux | 編輯 | 留言 (0) | TrackBack (0)

2004年06月29日

Linux服務器的一些基本應用

http://www.ebcom.cn/news/main/home/ns_detail.php?id=277&nowmenuid=6&cpath=0048:&catid=48

***************************************************************
Linux服務器的一些基本應用 作者:Xchen[[email protected]] 2002.8

***************************************************************

玩linux也有有一段時間了,作爲一個初學者,遇到的麻煩實在不少。所幸這是個網絡時代,在衆多好心大哥幫助下,我跛子般一關一關闖了過來,其間酸甜苦辣實在讓人回味。向這世界上千千萬萬偉大的linux程序員致敬,是他們讓我們能有這麼優秀的操作系統可用。這篇東西主要是給剛接觸linux的而又急切想配一個服務器的朋友看的,由於鄙人水平有限,錯誤有所難免,歡迎大家指證。
現就以本公司的網絡架構爲例,來說一下linux服務器的配置。在正式配置之前先說一下這個服務器所要實現的功能:

1. 數據共享
2. 打印共享
3. 模擬NT域
4. ADSL共享
5. 內部DNS服務
6. DHCP服務
7. FTP服務
8. WWW服務
9. OPENSSH
10. 磁盤配額
11. 動態域名

網絡架構如下:[如下圖]

www.linuxsir.org/photo/Xchen.gif

Network:10.10.0.0
Server IP:10.10.1.1
Server Subnet-mask:255.255.0.0
Client IP:10.10.1.10-10.10.1.100
Client Subnet-mask:255.255.0.0
Client getway:10.10.1.1
Client DNS:10.10.1.2,202.96.134.133

一、準備工作:

1. RedHat linux 7.2光盤一套
2. 以太ADSL拔號器及您的ADSL接入帳號
3. 兩張網卡,最好是即插即用的,免跳線的請察明irq和io。
4. 當然啦,除本機以外的其它機器

二、 RedHat linux 7.2安裝:

1.初學者建議用圖形界面,請用定製安裝。

2系統分區如下(10G):
swap:500M
/:2G
/var:1G
/home:2G
/tools:500M
/data:4G
分區的合理化請參考相關文章。

3.若是即插用網卡,系統能檢測到,請設置好ip地址,子網掩碼等,請分別設爲10.10.1.1和10.10.1.2,subnet-mask爲255.255.0.0;若是免跳線網卡,那就等裝好系統再設置吧。

4.軟件包選擇,要全選上也沒關係,只要你有空間,若是空間有限有話,不妨定製一下軟件包,下面是我的選擇,僅供參考:
Printing Support
Network Support
Dialup Support
SMB:windows file server
WWW:web server
DNS:DNS name server
Software Development

5.好了,現在就next一路安裝下去吧,最後不要忘了做一張啓動盤。

三、linux網絡環境配置

1]重啓機器進入系統以後,去掉一些不必要的服務吧,留着它們啓動速度慢,而且也不安全,下面是我機器剛安裝好以後所保留的一些服務:
gpm/iptables/netfs/network/nfs/nfslock/portmap/syslog/xfs/xinetd
至其它的服務,等我們配置好再加載吧。

2]安裝linuxconf,配置網絡。
放入光盤1
mount /dev/cdrom /mnt/cdrom
cd /mnt/cdrom/RedHat/RPMS
rpm –ivh linuxconf-1.25r7-3.i386.rpm
請用setup/system services或是chkconfig –levlel 3 linuxconf on將linuxconf設置爲系統自啓動服務。
netconf選擇Host name and IP network devices進行主機名及網絡設置:
Host name + domain:cxserver
------第一張網卡----------
config mode:Manual
primary name + domain:abc
Ip address:10.10.1.2
Netmask:255.255.0.0
Net device:eth0
Kernel Module:ne
I/O port:0x300
Irq:3
------第二張網卡----------
config mode:Manual
primary name + domain:cxserver
Ip address:10.10.1.1
Netmask:255.255.0.0
Net device:eth0
Kernel Module:ne
I/O port:0x320
Irq:5
選擇Accept退出,重新啓動就會看到eth0和eth1兩網卡啓動成功,進入系統後可用ifconfig命令查看狀態,用ping命令測試其連通性,比如ping一部windows機器。

四、DNS服務器配置

爲了讓局域網內部用戶訪問服務器方便一點,配置一個DNS服務器是十分有必要的,畢竟一個名字總比一串數字好記,下面我將服務器10.10.1.1配一個域名www.cx.com,ftp.cx.com,好,開始行動:
需要配置的文件:
/etc/named.conf
/etc/resolv.conf
/var/named/named.hosts
/var/named/named.local
/var/named/named.10.10

1]配置/etc/named.conf文件。此文件是dns引導文件,named進程在啓動時要讀取它。
vi /etc/named.conf
// generated by named-bootconf.pl
options {
directory "/var/named";
// query-source address * port 53;
};

zone "." IN {
type hint;
file "named.ca";
};
//----------------------手工添加如下兩節------------------------------
zone "cx.com" IN {
type master;
file "named.hosts";
};

zone "10.10.in-addr.arpa" IN {
type master;
file "named.10.10";
};
//------------------------------------------------------------------------------
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
};

// include "/etc/rndc.key";

以下的三個文件是DNS數據庫文件,具體參數不作詳解,請參考相關資料。

2]vi /var/named/named.local

$TTL 86400
@ IN SOA ns.cx.com. root.ns.cx.com. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS ns.cx.com.

1 IN PTR localhost.

3]vi /var/named/named.hosts
@ IN SOA ns.cx.com. root.ns.cx.com. (
2002042302; serial
28800; refresh
14400; retry
3600000; expire
86400; minimu
)
IN NS ns.cx.com.
cx IN A 10.10.1.1
cx1 IN A 10.10.1.223
www IN CNAME ns.cx.com.
ftp IN CNAME cx

4]vi /var/named/named.10.10
@ IN SOA ns.cx.com. root.ns.cx.com. (
2002042302; serial
28800; refresh
14400; retry
3600000; expire
86400; minimu
)
IN NS ns.cx.com.
1 IN PTR ns.cx.com.
2 IN PTR ns1.cx.com.

5]編輯/etc/resolv.conf文件
vi /etc/resolv.conf
domain cx.com
nameserver 10.10.1.1

好,讓我們來啓動服務吧:
/etc/rc.d/init.d/named start
chkconfig –level 3 named on #將dns服務設置成系統服務,開機自啓動
測試:ping cx.cx.com
ping www.cx.com
ping ftp.cx.com
或用nslookup,用法請參考nslookup –help。

五、 DHCP服務器配置

1]安裝dhcp。
放入光盤1或是光盤2
mount /dev/cdrom /mnt/cdrom
cd /mnt/cdrom/RedHat/RPMS
rpm –ivh dhcp-2.0p15-8.i386.rpm
請用setup/system services或是chkconfig –levlel 3 linuxconf on將linuxconf設置爲系統自啓動服務。

2]配置dhcpd.conf文件。
Vi /etc/dhcpd.conf
subnet 10.10.0.0 netmask 255.255.0.0{
range dynamic-bootp 10.10.2.0 10.10.2.100; #IP地址分配範圍
option routers 10.10.1.1; #默認網關
option subnet-mask 255.255.0.0; #默認子網掩碼
option domain-name "cx.com"; #默認域名
option domain-name-servers 10.10.1.1,202.96.134.133;
}
#最後一行:DNS服務器設置,之所以把10.10.1.1放在前面是想讓客戶機在作域名解析的時候優先選擇內部dns服務器,若域名不能解析,則用下一個dns服務器解析,202.96.134.133是深圳地區ADSL上網用戶主DNS服務器.用下一個dns服務器解析,202.96.134.133是深圳地區ADSL上網用戶主DNS服務器。

3]啓動服務:/etc/rc.d/init.d/dhcpd start

4]使用:不論Win9x還是2K都使用自動獲取IP地址,其它什麼都不用設。

六、 ADSL及防火牆配置

1]下載軟件:http://www.roaringpenguin.com/pppoe/rp-pppoe-3.5.tar.gz

2]安裝軟件:
tar zxvf rp-pppoe-3.5.tar.gz
cd rp-pppoe-3.5
./go #開始安裝軟件

3]軟件安裝好後,會運行設置程序adsl-setup

USER NAME
>>> Enter your PPPoE user name (XXX):________ #此處填寫ADSL用戶帳號

INTERFACE
(default eth0):_____ #以太接口,eth0或者eth1

>>> Enter the demand value (default no): #可以不填

DNS
>>> Enter the DNS information here: 202.96.134.133 #本地電信提供的主域名服務器
>>> Enter the secondary DNS server address here: #本地電信提供的輔助域名服務器

PASSWORD
>>> Please enter your PPPoE password:
>>> Please re-enter your PPPoE password: #密碼

FIREWALLING
0 - NONE: This script will not set any firewall rules. You are responsible
for ensuring the security of your machine. You are STRONGLY
recommended to use some kind of firewall rules.
1 - STANDALONE: Appropriate for a basic stand-alone web-surfing workstation
2 - MASQUERADE: Appropriate for a machine acting as an Internet gateway
for a LAN
>>> Choose a type of firewall (0-2): 0
防火牆設置,選擇2可使主機設成局域網的internet網關,將客戶機網關設爲本機IP,DNS設爲電信提供的DNS服務器IP即可上網了,它是由ipchains之ip僞裝實現的,而rh7.2中的ipchains已經沒有了ip_masq_ftp模塊,所以客戶機無法使用FTP服務,因此我們在這裏不用防火牆,選擇0。在rh72中已經有了iptables,它是ipchains的替代品,功能也更爲強大了,呆會兒我們寫一個腳本,用它來實現ADSL共享。

>>> Accept these settings and adjust configuration files (y/n)? y #保存設置

4]接下來,我們編寫一個腳本/etc/rc.d/firewall
vi /etc/rc.d/firewall
#!/bin/sh
echo "Start iptables rules..."
/etc/rc.d/init.d/iptables stop
echo 1 > /proc/sys/net/ipv4/ip_forward
modprobe ip_tables
modprobe ip_nat_ftp
modprobe ip_conntrack
modprobe ip_conntrack_ftp

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

iptables -N mine
iptables -A mine -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A mine -m state --state NEW -i ! ppp0 -j ACCEPT
//允許外部訪問我的www服務器
iptables -A mine -p tcp --dport 80 -i ppp0 -j ACCEPT
//允許外部使用openssh服務,openssh相當於telnet,但是它的數據傳輸是加密的,
//所以更安全,強烈推薦使用。
iptables -A mine -p tcp --dport 22 -i ppp0 -j ACCEPT
//允許外部訪問我的ftp服務器
iptables -A mine -p tcp --dport ftp -i ppp0 -j ACCEPT
iptables -A mine -p tcp --dport ftp-data -i ppp0 -j ACCEPT
//禁止外部ping我
iptables -A mine -p icmp --icmp-type echo-request -i ppp0 -j DROP
//
iptables -A mine -i ppp0 -m limit -j LOG --log-prefix "Bad packet from ppp0:"
iptables -A mine -i ! ppp0 -m limit -j LOG --log-prefix "Bad packet not from ppp0:"
iptables -A mine -j DROP

iptables -A INPUT -j mine
iptables -A FORWARD -j mine

//iptables功能十分強大,這裏不作詳解,使用方法請參考相關資料。

5]將這個腳加入到/etc/rc.d/rc.local裏去,讓它開機時自動運行。
chmod 700 /etc/rc.d/firewall #將firewall設爲可執行文件
echo firewall >> /etc/rc.d/rc.local
當然也可以用vi編輯/etc/rc.d/rc.local文件,在尾部加入一行firewall即可。

6]chkconfig –level 3 iptables on #開機時啓動iptables

7]好,重啓,用root登錄系統
用adsl-start命令連接網絡,幾秒以後出現.Connected,OK,網絡已經連通,好!我們來測試:前提:前面寫的防火牆腳本已經運行,內部局域網已經連通,DHCP服務已經運行,將客戶端tcp/ip設置爲自動獲取IP地址,其它的什麼都不用填,重啓登錄以後,試試www/ftp/qq等服務吧,速度奇快,爽死你,哈哈。

8]存在的問題:
ping一下前面我們設置的域名服務器吧,ping [urlwww.cx.com[/url],你會發現ping不通,爲什麼呢?你應該還記得我們在安裝設置adsl的時候,填入了本地電信dns服務器地址,哈,就是它惹的禍。我們在運行adsl-start的時候,會調用adsl-connect腳本,而它會重寫/etc/resolv.conf文件:
原來的:cat /etc/resolv.conf
domain cx.com
nameserver 10.10.1.0
現在的:cat /etc/resolv.conf
nameserver 202.96.134.133
在這種情況下DNS服務器要是運行起來了,那才稀奇了,呵呵。
解決方法:
修改/etc/resolv.conf文件:
vi /etc/resolv.conf
domain cx.com
nameserver 10.10.1.1
nameserver 202.96.134.133
修改/usr/sbin/adsl-connect腳本文件:
vi /usr/sbin/adsl-connect
找到下面幾行,並將其註釋掉:
---------------------------------------------------------------------------
if test "$DNSTYPE" = "SERVER" ; then
# Sorry, dude...
rm -f /etc/resolv.conf
ln -s /etc/ppp/resolv.conf /etc/resolv.conf
elif test "$DNSTYPE" = "SPECIFY" ; then
# Sorry, dude...
rm -f /etc/resolv.conf
echo "nameserver $DNS1" > /etc/resolv.conf
if test -n "$DNS2" ; then
echo "nameserver $DNS2" >> /etc/resolv.conf
fi
fi
-----------------------------------------------------------------------------

9]重啓,ADSL連接成功,DNS服務器正常,OK,繼續前進吧!

七、文件(打印)服務器、模擬NT域的實現。

1]編輯/etc/samba/smb.conf文件
vi /etc/samba/smb.conf
[global]
workgroup = CX #把它當成NT登錄域吧
server string = Samba Server
netbios name = cxserver #服務器的netbios名字
hosts allow = 10.10.1. 10.10.2. 127. #只允許10.10.1.0、10.10.2.0網段訪問
printcap name = /etc/printcap
load printers = yes
printing = lprng
log file = /var/log/samba/%m.log
max log size = 0
security = user #安全等級爲user級,訪問資源需要身份驗證
encrypt passwords = yes
smb passwd file = /etc/samba/smbpasswd
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
domain master = yes
preferred master = yes
domain logons = yes #可以登錄
dns proxy = no

[homes] #登錄後可以看到用戶home目錄
comment = Home Directories
browseable = no
writable = yes
valid users = %S
create mode = 0664
directory mode = 0775

[printers] #若有打印機,在//mineserver中可看到打印機,右鍵安裝
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes

[public] #共享/mnt/data/public文件夾,共享名爲public,admin組有寫權限
comment = software
path = /mnt/data/public
public = yes
wirte list = @admin

2]用testparm測試/etc/samba/smb.conf文件中語法是否正確

3]/etc/rc.d/init.d/smb start啓動服務,並用smbclient –L localhost測試服務器是否正常,若是提示輸入密碼,回車以後看到服務器信息,則服務器正常。

4]添加用戶和組
useradd test
groupadd admin
gpasswd –a test admin

5]設置smb用戶密碼
smbpasswd –a test
輸入密碼並驗證

6]用setup之Printer configuration配置一本地打印機,其過程請參考相關資料,這裏不過多贅述。

7]測試:
請設置windows機器的網絡屬性,登錄方式爲網絡用戶登錄,直接登錄到NT域,NT域爲cx,重啓後用前面添加的test帳號登錄,密碼爲smbpasswd –a test時設置的密碼,進行系統後用控制面板之”用戶及密碼”可修改登錄密碼。
打開網上鄰居,看是否能瀏覽到cxserver,亦可用//cxserver訪問。
最後設置:chkconfig –level 3 smb on #讓smb開機自動運行

八、磁盤配額

前面我們在配置文件共享的時候,有一個共享資源爲homes,如aa登錄,在//cxserver中有一個aa文件夾,aa用戶對這個文件夾具讀寫權限,

如若我們不限制aa的話,他有可能會將硬盤塞滿,任何一個管理員都不希望看到這種事情,下面我們用quota來實現對用戶使用磁盤空間的限制。

1]首先明白一個概念,quota是針對分區的,所以我們在前面安裝linux的時候單獨分了一個/home區。

2]而所有的用戶home目錄都在/home下,現在開始在home目錄下建立兩個文件:
cd /home
touch quota.user
touch quota.group
chmod 600 quota.user //只允許root對這兩個文件讀寫
chmod 600 quota.group

3]在/etc/rc.d/rc.local文件尾部加入quota啓動腳本:
if [ -x /sbin/quotacheck ]
then
echo "Checking quotas. This may take some time..."
/sbin/quotacheck -avug
echo "Done"
fi
if [ -x /sbin/quotaon ]
then
echo "Turning on quota"
/sbin/quotaon -avug
echo "OK"
fi

4]修改/etc/fstab文件中定義/home分區的那一行:
原內容: /dev/hda3 /home ext3 defaults 1 2
新內容: /dev/hda3 /home ext3 defaults,usrquota,grpquota 1 2
看得出來只是在defaults後面加了usrquota,grpquota而已。
注意啊,是usrquota而不是userquota,若是錯了,後果難以預料。

5]重啓,在啓動過程中會出錯,主要是因爲quota在/home目錄下打不到aquota.user和aquota.group兩個文件,沒關係,咱們進了系統以再慢慢收拾它。

6]用root登錄,然後我們生成aquota.user和aquota.group兩個文件:
convertquota -u /home
convertquota –g /home
若以上步驟不出錯的話,我們用ls /home –al就會看到aquota.user,aquota.group兩
個文件了

7]再重啓,注意觀察,不會再出錯了。進入系統後就可以對用戶home目錄進行限制了。比如現在有一個test用戶,我們對他進行限制:
edquota –u test #此命令將進入一個vi編輯模式,其內容如下:
Filesystem blocks soft hard inodes soft hard
/dev/hda3 0 0 0 0 0 0
註解標識: A B C D E F
在講解各參數之前先說說限制的兩種方式:soft,hard
soft:又稱軟限制,當用戶到達這個限制以後,系統會給予警告,但仍可寫入。
hard:又稱硬限制,到達這個限制,就完全禁止任何寫入啦。
ABC爲磁盤空間的限制設置,而DEF爲總文件個數的限制
A:已使用空間,無需要設置
B:用戶空間使用限制,爲軟限制,需要設置。
C:用戶空間使用限制,爲硬限制,需要設置。
D:已有文件總數,無需要設置。
E:文件總數限制,爲軟限制,需要設置。
F:文件總數限制,爲硬限制,需要設置。

我們要限制test用戶使用空間100M,最多不能超過120M,文件總數爲2000個,
最多不能超過2500個,設置如下:
Filesystem blocks soft hard inodes soft hard
/dev/hda3 0 102400 122880 0 2000 2500
注:空間限制是以k爲單位的。

8]測試:進入自己的home目錄,然後拷貝文件,若是超過120M,就不允許再寫入了。

9]其它命令的使用:
複製相同調協至其它用戶:
edquota –p test –u username1 username2 username3 username4……
顯示某個用戶當前磁盤使用情況:
quota –v username
顯示所有用戶當前磁盤使用情況:
repquota –a
其它的一些命令請參考相關資料。

九、FTP服務器:

Rh72自帶了wu_ftp,但是由於其毛病不少,所以我們不用它,我們用性能及安全性能均優於它的proftpd來代替它。

1]下載軟件:ftp://ftp.proftpd.org/distrib/sourc...pd-1.2.5.tar.gz

2]安裝:
tar zxvf proftpd-1.2.5.tar.gz
cd proftpd-1.2.5
./configure –prefix=/usr/local/proftpd //指定安裝在/usr/local/proftpd目錄下
make
make install
cp contrib/dist/rpm/proftpd.init.d /etc/rc.d/init.d/proftpd
chmod 700 /etc/rc.d/init.d/proftpd
chkconfig –level 3 proftpd on //設置爲系統自啓動服務
cp /usr/local/proftpd/sbin/proftpd /usr/sbin //將proftpd拷至/usr/sbin目錄下,讓系
統能自動搜索到,也免得再去加一個搜索路徑

3]配置/usr/local/proftpd/etc/proftpd.conf文件:
vi /usr/local/proftpd.conf
ServerName "Xchen FTP server" //服務器登錄提示
ServerType standalone
DefaultServer on
Port 21
Umask 022
MaxInstances 30
User nobody
Group nobody //原來爲nogroup,請改成nobody
RequireValidShell off //手動添加此名,重要
//限定test組用戶只能訪問自己的home目錄,而不能向上瀏覽
DefaultRoot ~ test
//限定test組用戶只能訪問自己的/home/ftp目錄,不能向上瀏覽
DefaultRoot ~/ftp test
//限定music組用戶只能訪問/home/music目錄,不能向上瀏覽
DefaultRoot /home/ftp music
//除music組中bb用戶外都能訪問/home/music目錄,不能向上瀏覽
DefaultRoot /home/ftp music,!bb
//上面組需要自己建立:groupadd test,gpasswd –a username test
ServerIdent off //登錄時不顯示版本信息

AllowOverwrite on

// /home/ftp爲匿名用戶登錄目錄
User ftp
Group ftp
UserAlias anonymous ftp
MaxClients 10
DisplayLogin welcome.msg
DisplayFirstChdir .message

DenyAll

4]啓動服務:/etc/rc.d/init.d/proftpd start

5]測試,在客戶端用FTP軟件或命令行FTP程序進行訪問ftp.cx.com。

6]proftpd技豈只此,還有很多高級應用,請參考相關資料,這裏就不多贅述。

十、WWW服務

www服務用apache來實現,步驟極其簡單,當然,這裏說的是初級應用。因爲我們要實現的是簡單的www服務,所以只需更改下面幾個參數即可:

1]Vi /etc/httpd/conf/httpd.conf
ServerName www.cx.com
DocumentRoot ”/var/www”

2]拷貝網頁文件到/var/www目錄

3]啓動服務:/etc/rc.d/init.d/httpd start
將httpd設置爲系統自啓動服務:chkconfig –level 3 httpd on

4]測試:在ie中用http://www.cx.com測試。

爲什麼把www服務講得這麼簡單呢,主要是因爲這種單一類型的網頁文件服務用得較少,現在大多數都要用cgi,asp,php,還有數據庫等,關於這方面配置還請參考相關資料,這裏不作詳解。

十一、動態域名服務
動態域名這個叫法不大妥當,應該叫動態ip for 域名纔對。到現在爲止,ftp和www服務我們都實現了,在局域網內可以用www.cx.com來訪問,但是我們已經用ADSL連通了internet,我們怎樣讓外部訪問我們的ftp,www服務器呢,總不成每都通知對方服務器的IP吧,所以就要用到動態域名服務,大致原理是每次ADSL拔號時將自身IP更新到外部DNS服務器數據庫中所對應的那個域名,所以我們每次訪問這個域名就可以了,在這裏討論一下www.3322.org提供的動態服務的實現。
1]登錄www.3322.org網站,註冊一個用戶,並申請一個動態域名xxxx.3322.org。
2]下載linux客戶端軟件:
http://www.3322.org/dyndnspage/ez-i...-linux-i386.tgz
3]安裝軟件:
tar zxvf ez-ipupdate-3.0.10-linux-i386.tgz
mv ez-ipupdate-3.0.10-linux-i386 /usr/local/ezip
4]編輯/usr/local/ezip/qdns.conf文件:
vi /usr/local/qdns.conf
service-type=qdns
user=username:password //用戶名及密碼,用冒號隔開
host=xxxxx.3322.org //你申請的域名
interface=ppp0 //接口爲ppp0
max-interval=2073600
cache-file=/tmp/ez-ipupdate.cache

5]將當前ip現新到我們申請的域名:
cd /usr/local/ezip
ez-ipupdate –c qdns.conf
系統會提示數據更新成功,好,我們來ping一下xxxx.3322.org,哈,果然是ppp0
的IP,再用http://xxx.3322.org試一下,一切OK,爽。

6]問題又來了,難道我們每次啓動ADSL都要用手動更新一次嗎,你可能會想到用crontab讓它每隔幾分鐘更新一次,建議不錯,不過爲了ip更新而啓用crond服務
似乎有點小題大做,我的方法,修改/usr/sbin/adsl-start腳本:
vi /usr/sbin/adsl-start
找到倒數25行”tty –s && $ECHO “ Connected ! “,在其下增加一行:
/usr/local/ezip/ez-ipupdate –c /usr/local/ezip/qdns.conf
存盤退出,OK,我們讓ADSL拔號完成以後自動更新,爽吧!

7]測試一下:
adsl-start
. Connected!
ez-ipupdate Version 3.0.10
Copyright (C) 1999-2000 Angus Mackay.
connected to members.3322.org (202.108.36.139) on port 80.
request successful
OK,數據更新成功。

好,現在你隨時隨地都可以用xxxx.3322.org訪問你的服務了,不錯吧。


十二、openssh的設置
如果你在家裏或者其它地方,怎樣控制你的服務器,你可能會想到用telnet,本來是可以的,但是由於telnet用的是明碼傳輸,容易給那些不懷好意者可乘之機,所以我們用openssh來代替telnet。

1]卸載原來的2.9x版,2.9x版有bug,不安全:
rpm –e openssh

2]最新軟件包下載:

ftp://ftp.openbsd.org/pub/OpenBSD/O...sh-3.4p1.tar.gz

3]安裝軟件:
tar zxvf openssh-3.4p1.tar.gz
cd openssh-3.41
./configure --prefix=/usr/local/ssh /
--sysconfdir=/etc/ssh /
--with-tcp-wrappers /
--with-ipv4-default /
--with-md5-passwords
make
make install
注:安裝完成以後,會自動生成主機密鑰,還會提示需要sshd用戶帳號,可用useradd加一個sshd用戶。
install /contrib/redhat/sshd.pam /etc/pam.d/sshd
cp contrib/redhat/sshd.init /etc/rc.d/init.d/sshd
chkconfig --level 3 sshd on ;配置成系統服務

4]配置openssh之/etc/ssh/ssh_config文件
vi /etc/ssh/ssh_config
Host *
ForwardAgent no
ForwardX11 no
RhostsAuthentication no
RhostsRSAAuthentication no
RSAAuthentication yes
PasswordAuthentication yes
BatchMode no
CheckHostIP yes
StrictHostKeyChecking ask
IdentityFile ~/.ssh/identity
Port 22
Cipher 3des
EscapeChar ~

5]配置openssh之/etc/ssh/sshd_config文件
vi /etc/ssh/sshd_config
Port 22
ListenAddress 0.0.0.0
ListenAddress ::
HostKey /etc/ssh/ssh_host_key
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
KeyRegenerationInterval 3600
ServerKeyBits 768
SyslogFacility AUTH
LogLevel INFO
LoginGraceTime 600
#PermitRootLogin yes #還是不要讓root直接登錄爲妙!
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes
RhostsAuthentication no
IgnoreRhosts yes
RhostsRSAAuthentication no
HostbasedAuthentication no
IgnoreUserKnownHosts no
PasswordAuthentication yes
PermitEmptyPasswords no
Subsystem sftp /usr/local/ssh/libexec/sftp-server

6]配置用戶的加密密鑰
useradd test
passwd test
su test
ssh-keygen -d
出現提示請回車並輸入passwd,再次輸入passwd。
注:這個密碼是系統加密運算時用到的,登錄時還用原來密碼。

7]啓動服務
/etc/rc.d/init.d/sshd start

8]在客戶端用test帳號進行測試。


亂七八糟寫了一大篇,也該收尾了,冰凍三尺非一日之寒,要多練多問多看多寫,前進吧,朋友!

2002.8/sz/cx
[email protected]

kingpaul @ 04:12 PM 發表於 linux | 編輯 | 留言 (0) | TrackBack (0)

linux經典問題之基礎篇

http://www.ebcom.cn/news/main/home/ns_detail.php?id=236&nowmenuid=6&cpath=0048:&catid=48
好像old了,好像以前這裏我就轉過。

0001
修改主機名
vi /etc/sysconfig/network,修改HOSTNAME一行爲HOSTNAME=主機名,重啓後也能生效

0002
Ret Hat Linux啓動到文字界面(不啓動xwindow)
將/etc/inittab中 id:5:initdefault: 一行中的5改爲3

0003
redhat的自動升級更新問題(hutuworm)
在www.redhat.com/corp/support/errata/找到補丁,6.1以後的版本帶有一個工具up2date,它能夠測定哪些rpm包需要升級,然後自動從redhat的站點下載並完成安裝。
升級除kernel外的rpm: up2date -u
升級包括kernel在內的rpm: up2date -u -f

0004
windows下看linux分區的軟件
Paragon.Ext2FS.Anywhere.2.5.rar和explore2fs-1.00-pre4.zip

0005
mount用法(sakulagi)
fat32的分區 mount -o codepage=936,iocharset=cp936 /dev/hda7 /mnt/cdrom
ntfs的分區 mount -o iocharset=cp936 /dev/hda7 /mnt/cdrom
iso文件 mount -o loop /abc.iso /mnt/cdrom
軟盤 mount /dev/fd0 /mnt/floppy
USB閃存 mount /dev/sda1 /mnt/cdrom
所有/etc/fstab內容 mount -a
可以指定文件格式"-t 格式", 格式可以爲vfat, ext2, ext3等.

0006
在vmware的LINUX中使用本地硬盤的FAT分區
將本地的FAT分區共享,然後在VMWARE中使用SMBFS掛上。可以將如下的行放到/etc/fstab中:
//win_ip/D$ /mnt/d smbfs defaults,auto,username=win_name,password=win_pass,codepage=936,iocharest=gb2312 0 0
其中win_ip是你的windows的IP地址;
D$是你的windows裏面共享的D盤的共享名;
/mnt/d是要將該分區mount到linux的目錄;
win_name和win_pass是你的WINDOWS裏面可以讀取該分區的用戶,比如你的管理員名和密碼。
如果你運行了/etc/rc.d/init.d/netfs,那麼在啓動的時候就會自動掛載這個分區。


0007.a
刪除名爲-a的文件
rm ./-a
rm -- -a 告訴rm這是最後一個選項,參見getopt
ls -i 列出inum,然後用find . -inum inum_of_thisfile -exec rm {} /;

0007.b
刪除名爲/a的文件
rm //a

0007.c
刪除名字帶的/和‘/0文件
這些字符是正常文件系統所不允許的字符,但可能在文件名中產生,如unix下的NFS文件系統在Mac系統上使用
1.解決的方法,把NFS文件系統在掛到不過濾/字符的系統下刪除含特殊文件名的文件。
2.也可,將錯誤文件名的目錄其它文件移走,ls -id 顯示含該文件目錄的inum,umount 文件系統,
clri清除該目錄的inum,fsck,mount,check your lost+found,rename the file in it.
最好是通過WINDOWS FTP過去就可以刪除任何文件名的文件了!

0007.d
刪除名字帶不可見字符的文件
列出文件名並轉儲到文件:ls -l >aaa
然後編輯文件的內容加入rm命令使其內容成爲刪除上述文件的格式:
vi aaa
[rm -r *******
]
把文件加上執行權限 chmod +x aaa
執行 $aaa

0007.e
刪除文件大小爲零的文件
rm -i `find ./ -size 0`
find ./ -size 0 -exec rm {} /;
find ./ -size |xargs rm -f &非常有效
for file in * #自己定義需要刪除的文件類型
do
if [ ! -s ${file} ]
then

rm ${file}
echo "rm $file Success!"
fi
done

0008
redhat設置滾輪鼠標(mc1011)
進入X後,選擇鼠標的配置,選擇wheel mouse(ps/2)就可以了,
如果鼠標表現異常,重啓計算機即可。

0009
加裝xwindow
用linux光盤啓動,選擇升級,然後單獨選擇包,安裝即可

0010
刪除linux分區
做一張partition magic的啓動軟盤,啓動後刪除. 或者用win2000的啓動光盤啓動,然後刪除.

0011
如何退出man
q

0012
不編譯內核,mount ntfs分區
原裝rh8,未升級或編譯內核
1. 上google.com搜索並下載 kernel-ntfs-2.4.18-14.i686.rpm
2. rpm -ivh kernel-ntfs-2.4.18-14.i686.rpm
3. mkdir /mnt/c
4. mount -t ntfs /dev/hda1 /mnt/c

0013
redhat 8.0中用xmms聽mp3
下載www.gurulabs.com/files/xmms-mp3-1.2.7-13.p.i386.rpm
rpm -Uvh xmms-mp3-1.2.7-13.p.i386.rpm

0014
找回忘記了的root口令(lilo/grub)
三種辦法:
1.在系統進入單用戶狀態,直接用passwd root去更改
2.用安裝光盤引導系統,進行linux rescue狀態,將原來/分區掛接上來,作法如下:
cd /mnt
mkdir hd
mount -t auto /dev/hdaX(原來/分區所在的分區號) hd
cd hd
chroot ./
passwd root
這樣可以搞定
3.將本機的硬盤拿下來,掛到其他的linux系統上,採用的辦法與第二種相同
rh8中
一. lilo
1. 在出現 lilo: 提示時鍵入 linux single

畫面顯示 lilo: linux single
2. 回車可直接進入linux命令行
3. #vi /etc/shadow
將第一行,即以root開頭的一行中root:後和下一個:前的內容刪除,
第一行將類似於
root::......
保存
4. #reboot重啓,root密碼爲空
二. grub
1. 在出現grub畫面時,用上下鍵選中你平時啓動linux的那一項(別選dos喲),然後按e鍵
2. 再次用上下鍵選中你平時啓動linux的那一項(類似於kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/),然後按e鍵
3. 修改你現在見到的命令行,加入single,結果如下:
kernel /boot/vmlinuz-2.4.18-14 single ro root=LABEL=/
4. 回車返回,然後按b鍵啓動,即可直接進入linux命令行
5. #vi /etc/shadow
將第一行,即以root開頭的一行中root:後和下一個:前的內容刪除,
第一行將類似於
root::......
保存
6. #reboot重啓,root密碼爲空

0015

使ctrl + alt + del失效
vi /etc/inittab
將ca::ctrlaltdel:/sbin/shutdown -t3 -r now這行註釋掉,就可以了

0016
如何看出redhat的版本是7還是8(hutuworm)
cat /proc/version或者cat /etc/redhat-release或者cat /etc/issue

0017
文件在哪個rpm中(無雙)
上www.rpmfind.net上搜,或者rpm -qf 文件名得到

0018
把man或info的信息存爲文本文件
以 tcsh 爲例:
man tcsh | col -b > tcsh.txt
info tcsh -o tcsh.txt -s

0019
利用現存兩個文件,生成一個新的文件
1. 取出兩個文件的並集(重複的行只保留一份)
2. 取出兩個文件的交集(只留下同時存在於兩個文件中的文件)
3. 刪除交集,留下其他的行
1. cat file1 file2 | sort | uniq
2. cat file1 file2 | sort | uniq -d
3. cat file1 file2 | sort | uniq -u

0020
設置com1口,讓超級終端通過com1口進行登錄
確認有/sbin/agetty,編輯/etc/inittab,添加
7:2345:respawn:/sbin/agetty /dev/ttyS0 9600
9600bps是因爲聯路由器缺省一般都是這種速率,也可以設成
19200、38400、57600、115200

修改/etc/securetty,添加一行:ttyS0,確保root用戶能登錄
重啓機器,就可以拔掉鼠標鍵盤顯示器(啓動時最好還是要看看輸出信息)了

0021
刪除目錄下所有文件包括子目錄
rm -rf 目錄名

0022
查看系統信息
cat /proc/cpuinfo - CPU (i.e. vendor, Mhz, flags like mmx)
cat /proc/interrupts - 中斷
cat /proc/ioports - 設備IO端口
cat /proc/meminfo - 內存信息(i.e. mem used, free, swap size)
cat /proc/partitions - 所有設備的所有分區
cat /proc/pci - PCI設備的信息
cat /proc/swaps - 所有Swap分區的信息
cat /proc/version - Linux的版本號 相當於 uname -r
uname -a - 看系統內核等信息


0023
去掉多餘的回車符
sed s/^M// test.sh > back.sh, 注意^M是敲ctrl_v ctrl-m得到的
或者 dos2unix filename

0024
切換X桌面(lnx3000)
switchdesk KDE或者switchdesk GNOME

0025
通用的聲卡驅動程序(lnx3000)
OSS www.opensound.com/ ALSA www.alsa-project.org/

0026
改變redhat的系統語言/字符集(beming/mc1011)
修改 /etc/sysconfig/i18n 文件,如
LANG="en_US",xwindow會顯示英文界面,
LANG="zh_CN.GB18030",xwindow會顯示中文界面。
還有一種方法
cp /etc/sysconfig/i18n $HOME/.i18n
修改 $HOME/.i18n 文件,如
LANG="en_US",xwindow會顯示英文界面,
LANG="zh_CN.GB18030",xwindow會顯示中文界面。
這樣就可以改變個人的界面語言,而不影響別的用戶

0027
把屏幕設置爲90列
stty cols 90

0028
使用md5sum文件
md5sum isofile > hashfile, 將 md5sum 檔案與 hashfile 檔案內容比對, 驗證雜湊值
是否一致 md5sum –c hashfile

0029
一次解壓多個zip文件
unzip "*",注意引號不能少

0030
看pdf文件
使用xpdf或者安裝acrobat reader for linux

0031
查找權限位爲S的文件
find . -type f /( -perm -04000 -o -perm -02000 /) -exec ls -lg {} /;


0032
裝中文輸入法
以redhat8爲例,xwindow及其終端下的不用說了吧,缺省就安裝了,用ctrl-space呼出。
現在討論純console,請下載zhcon.gnuchina.org/download/src/zhcon-0.2.1.tar.gz,
放在任一目錄中,tar xvfz zhcon-0.2.1.tar.gz, cd zhcon-0.2.1, ./configure,
make, make install。安裝結束,要想使用,請運行zhcon,想退出,運行exit。

0033
把彈出的光盤收回來(beike)
#eject -t

0034
cd光盤做成iso文件(弱智)
cp /dev/cdrom xxxx.iso

0035
快速觀看開機的硬件檢測(弱智)
dmesg | more

0036
查看硬盤的使用情況
df -k 以K爲單位顯示
df -h 以人性化單位顯示,可以是b,k,m,g,t..

0037
查看目錄的大小

du -sh dirname
-s 僅顯示總計
-h 以K、M、G爲單位,提高信息的可讀性。KB、MB、GB是以1024爲換算單 位, -H以1000爲換算單位。

0038
查找或刪除正在使用某文件的進程(wwwzc)
fuser filename
fuser -k filename

0039
安裝軟件
rpm -ivh aaa.rpm
tar xvfz aaa.tar.gz; cd aaa; ./configure; make; make install

0040
字符模式下設置/刪除環境變量
bash下
設置:export 變量名=變量值
刪除:unset 變量名
csh下
設置:setenv 變量名 變量值
刪除:unsetenv 變量名

0041
ls如何看到.開頭的文件
ls -a

0042
rpm中的文件安裝到哪裏去了

rpm -qpl aaa.rpm

0043
使用src.rpm
rpmbuild --rebuild *.src.rpm

0044
vim中顯示顏色或不顯示顏色
vi ~/.vimrc; 如果有syntax on,則顯示顏色,syntax off,則不顯示顏色

0045
linux是實時還是分時操作系統
分時

0046
make bzImage -j的j是什麼意思(wind521)
-j主要是用在當你的系統硬件資源比較大的時候,比較富裕的時候,用這個可以來加快編譯的速度,如-j 3

0047
源碼包怎麼沒有
你沒有安裝源代碼,你把你光盤上rpm -i *kernel*source*.rpm裝上,就可以看到你的源代碼了。

0048
修改系統時間
date -s “2003-04-14 cst”,cst指時區,時間設定用date -s 18:10

0049
開機就mount上windows下的分區
自動將windows的d盤掛到/mnt/d上,用vi打開/etc/fstab,加入以下一行
/dev/hda5 /mnt/d vfat defaults,codepage=936,iocharset=cp936 0 0
注意,先得手工建立一個/mnt/d目錄

0050
linux怎麼用這麼多內存
爲了提高系統性能和不浪費內存,linux把多的內存做了cache,以提高io速度

0051
FSTAB 最後的配置項裏邊最後兩個數字是什麼意思(lnx3000)
第一個叫fs_freq,用來決定哪一個文件系統需要執行dump操作,0就是不需要;
第二個叫fs_passno,是系統重啓時fsck程序檢測磁盤的順序號
1 是root文件系統,2 是別的文件系統。fsck按序號檢測磁盤,0表示該文件系統不被檢測
dump 執行ext2的文件系統的備份操作
fsck 檢測和修復文件系統

0052
linux中讓用戶的密碼必須有一定的長度,並且符合複雜度(eapass)
vi /etc/login.defs,改PASS_MIN_LEN

0053
linux中的翻譯軟件
星際譯王 xdict

0054
不讓顯示器休眠
setterm -blank 0
setterm -blank n (n爲等待時間)

0055
用dat查詢昨天的日期(gadfly)
date --date=yesterday

0056
xwindow下如何截屏
Ksnapshot或者gimp

0057
解壓小全
tar xvfj example.tar.bz2
tar xvfz example.tar.gz
tar xvfz example.tgz
tar xvf example.tar
unzip example.zip

0058
在多級目錄中查找某個文件的方法(青海湖)
find /dir -name filename.ext
du -a | grep filename.ext
locate filename.ext

0059
不讓普通用戶自己改密碼(myxfc)
[root@xin_fc etc]# chmod 511 /usr/bin/passwd
又想讓普通用戶自己改密碼
[root@xin_fc etc]# chmod 4511 /usr/bin/passwd

0060
顯卡實在配不上怎麼辦(win_bigboy)
去 http://www.redflag-linux.com/,下了xfree86 4.3安裝就可以了.

0061
超強刪除格式化工具(弱智)
比PQMagic安全的、建立刪除格式化的小工具:sfdisk.exe for msdos
http://www.wushuang.net/soft/sfdisk.zip

0062
如何讓xmms播放列表裏顯示正確的中文(myxfc)
-*-*-*-*-*-iso8859-1,-misc-simsun-medium-r-normal--12-*-*-*-*-*-gbk-0,*-r-
把這個東西完全拷貝到你的字體裏面
操作方法:
右鍵單擊xmms播放工具的任何地方
會看到一個"選項",然後選擇"功能設定"選擇"fonts"
然後把上面的字體完整的拷貝到"播放清單"和 "user x font

0063
linux下聽MP3(hehhb)
redhat光盤原帶的xmms不能播放MP3(無聲), 要下載安裝一個RPM包:xmms-mp3-1.2.7-13.p.i386.rpm安裝即可.打開xmms,ctl-p,在font欄中
先在上半部的小框內打勾,再選擇 “fixed(misc) gbk-0 13”號字
體即可顯示中文歌曲名。在音頻輸出插件中選擇 "開放音頻系統驅動
程序 1.2.7 [lioOSS.so]即可正常播放MP3文件.

0064
安裝中文字體(hehhb)
先下載 http://freshair.netchina.com.cn/~George/sm.sh
(參考文獻: http://www.linuxeden.com/edu/doctext.php?docid=2679)
SimSun18030.ttc在微軟網站可下載,http://www.microsoft.com/china/windows2000/downloads/18
030.asp 它是個msi文件,在 mswindows中安裝用的,裝好後在windows目錄下的fonts
目錄裏面就可以找到它。把simsun.ttc,SimSun18030.ttc,tahoma.ttf,tahomabd.ttf
拷貝到/usr/local/temp,然後下載的shell文件也放到這個目錄裏,然後打開終端
cd /usr/local/temp
chmod 755 sm.sh
./sm.sh

0065
裝載windows分區的FAT32、FAT16文件系統(hehhb)
以root身份進入KDE,點擊桌面上的“起點”圖標,在/mnt目錄下建立如下文件夾:c,d,e,f,g,usb.分別用作windows下各分區和usb閃盤。
  用文本編輯器打開/etc/fstab 文件.加入如下:
/dev/hda1 /mnt/c vfat iocharset=gb2312,umask=0,codepage=936 0 0
/dev/hda5 /mnt/d vfat iocharset=gb2312,umask=0,codepage=936 0 0
/dev/hda6 /mnt/e vfat iocharset=gb2312,umask=0,codepage=936 0 0
/dev/hda7 /mnt/f vfat iocharset=gb2312,umask=0,codepage=936 0 0
/dev/hda8 /mnt/g vfat iocharset=gb2312,umask=0,codepage=936 0 0
/dev/cdrom /mnt/cdrom udf,iso9660 noauto,iocharset=gb2312,owner,kudzu,ro 0 0
/dev/sda1 /mnt/usb vfat iocharset=gb2312,umask=0,codepage=936 0 0
存盤退出. 重新啓動後即可正常訪問FAT32或FAT16格式分區,解決顯示WINDOWS分區下和光盤中文文件名亂碼
問題.其中共六列,每列用Tab鍵分開。注意此方法只能mount上Fat 分區格式.sda1是閃盤。

0066
在X下使用五筆和拼音,區位輸入法(hmkart)
從http://www.fcitx.org/上下載fcitx的rpm包安裝即可

0067
在Linux下如何解壓RAR文件(hmkart)
http://www.linuxeden.com/download/softdeta....php?softid=883
下載RAR for Linux 3.2.0,解壓揭開後make
然後可以用unrar e youfilename.rar解壓rar文件

0068
硬盤安裝後怎麼添加/刪除rpm包(sakulagi)
redhat-config-packages --isodir=
可以指定iso文件所在的目錄

0069
字符下控制音量(grub007)
aumix


0070
用dd做iso(grub007)
dd if=/dev/cdrom of=/tmp/aaa.iso

0071
刪除幾天以前的所有東西(包括目錄名和目錄中的文件)(shally5)
find . -ctime +3 -exec rm -rf {} /;

find ./ -mtime +3 -print|xargs rm -f -r

0072
用戶的crontab在哪裏(hutuworm)
/var/spool/cron/下以用戶名命名的文件


0073
以不同的用戶身份運行程序
su - username -c "/path/to/command"
有時候需要運行特殊身份的程序, 就可以讓su來做

0074
如何清空一個文件()
> filename

0075
爲什麼OpenOffice下不能顯示中文(allen1970)
更改字體設置
tools->options->font replacement
Andale Sans UI -> simsun

0076
如何備份Linux系統(Purge)
Symantec Ghost 7.5以後的版本支持Ext3 native複製

0077
linux上的partition magic(wwwzc)
Linux下一個有用的分區工具: parted
可以實時修改分區大小, 刪除/建立分區.

0078
/proc/sys/sem中每項代表什麼意思? (sakulagi)
/proc/sys/sem內容如下
250 32000 32 128
這4個參數依次爲SEMMSL(每個用戶擁有信號量最大數量),SEMMNS(系統信號量最大數量),SEMOPM(每次semop系統調用操作數),SEMMNI(系統信號量集最大數量)

0079
Grub 引導菜單裏 bigmem smp up 都是什麼意思?(lnx3000)
smp: (symmetric multiple processor)對稱多處理器模式
bigmem: 支持1G 以上內存的優化內核
up:(Uni processor) 單處理器的模式

0080
Oracle的安裝程序爲什麼顯示亂碼?(lnx3000)
現在Oracle的安裝程序對中文的支持有問題,只能使用英文界面來安裝,在執行runinstaller之前,執行:export LANG=C;export LC_ALL=C

0081
linux下文件和目錄的顏色代表什麼(sakulagi,弱智)
藍色表示目錄;綠色表示可執行文件;紅色表示壓縮文件;淺藍
色表示鏈接文件;灰色表示其它文件;紅色閃爍表示鏈接的文件有問題了;黃色是設備文件,包括block, char, fifo。
用dircolors -p看到缺省的顏色設置,包括各種顏色和“粗體”,下劃線,閃爍等定義。

0082
mysql的數據庫存放在什麼地方
1. 如果使用rpm包安裝,應該在/var/lib/mysql目錄下,以數據庫名爲目錄名
2. 如果源碼安裝在/usr/local/mysql中,應該在/usr/local/mysql/var中,以數據庫名爲目錄名

0083
如何新增一塊硬盤(好好先生)
一、關機,物理連接硬盤
如果是IDE硬盤,注意主、從盤的設置;如果是SCSI硬盤,注意選擇一個沒有被使用的ID號。
二、開機,檢查硬盤有沒有被linux檢測到
dmesg |grep hd*(ide硬盤)
dmesg |grep sd*(SCSI硬盤)
或者 less /var/log/dmesg
如果你沒有檢測到你的新硬盤,重啓,檢查連線,看看bios有沒有認出它來。
三、分區
你可以使用fdisk,Sfdisk或者parted(GNU分區工具,linux下的partition magic)
四、格式化
mkfs
五、修改fstab
vi /etc/fstab

0084
linux下怎麼看分區的卷標啊 (q1208c)
e2label /dev/hdxn, where x=a,b,c,d....; n=1,2,3...

0085
RH8,9中安裝後如何添加新的語言包(好好先生)
一.8.0中
1.放入第一張光盤
2.cd /mnt/cdrom/Redhat/RPMS
3.rpm -ivh ttfonts-ZH_CN-2.11-29.noarch.rpm(簡體中文,你可以用tab鍵來補齊後面的部分,以免輸入有誤)
4.rpm -ivh ttfonts-ZH_TW-2.11-15.noarch.rpm(繁體中文)
如果你還想裝日文、韓文,試試第二張光盤上的ttfonts*.rpm.
二.9.0中
9.0不在第一張盤上,在第三張盤上.rpm包名分別爲:
ttfonts-zh_CN-2.12-1.noarch.rpm(簡體中文)
ttfonts-zh_TW-2.11-19.noarch.rpm (繁體中文)

kingpaul @ 04:10 PM 發表於 linux | 編輯 | 留言 (0) | TrackBack (0)

linux經典問題之網絡篇

http://www.ebcom.cn/news/main/home/ns_detail.php?id=237&nowmenuid=6&cpath=0048:&catid=48

0001
讓apache的默認字符集變爲中文
如果是1.*,vi httpd.conf
找到 AddDefaultCharset ISO8859-1 一行,改爲AddDefaultCharset GB2312
如果是2.*的話,需要改動一個地方,vi httpd.conf
AddDefaultCharset ISO-8859-1 改爲 AddDefaultCharset off

0002
永久更改ip
ifconfig eth0 新ip
然後編輯/etc/sysconfig/network-scripts/ifcfg-eth0,修改ip

0003
從Linux上遠程顯示Windows桌面(lnx3000)
安裝rdesktop包

0004
手動添加默認網關
以root用戶,執行: route add default gw 網關的IP
想更改網關

1 vi /etc/sysconfig/network-scripts/ifcfg-eth0
更改GATEWAY
2 /etc/init.d/network restart

0005
redhat 8.0上msn和qq
下載Gaim 0.58版:
www.linuxsir.org/gaim/gaim-0.58-2.i386.rpm
下載QQ插件 for gcc2.9版:
www.linuxsir.org/gaim/libqq-0.0.3-ft-0.58-gcc296.so.gz
將下載的文件放入/temp目錄,然後將系統中已有的Gaim刪除,即在終端仿真器中鍵入命令:rpm -e gaim。
開始安裝
打開終端仿真器,繼續執行下列命令安裝Gaim 0.58版,即:
cd /temp         (進入temp目錄)
rpm -ivh gaim-0.58-2.i386.rpm (安裝軟件)
當安裝成功後,你就可以在GNOME或KDE桌面建立Gaim圖標了。
繼續安裝QQ插件,即鍵入命令:
gunzip libqq-0.0.3-ft-0.58-gcc296.so.gz (解壓縮文件)
cp libqq-0.0.3-ft-0.58-gcc296.so /usr/lib/gaim (複製插件到gaim庫目錄中)
軟件設置
首次啓動Gaim 0.85版時,會出現的登錄界面。先選擇“插件”,在插件對話框中點擊“加載”,分別將
libmsn.so和libqq-0.0.3-ft-0.58-gcc296.so文件裝入,確認後關閉。然後再選擇“所有帳號”,在
出現的帳號編輯器中繼續點擊“增加”,當出現的修改帳號頁面時,我們就可以輸入自己的QQ或MSN號
了,登錄名填寫QQ號碼或MSN郵箱,密碼填寫對應的QQ或MSN密碼,Alias填寫自己的暱稱,協議選擇
相應的QQ或MSN,其他的設置按默認的即可。當全部設置完成後就可以登錄使用了。

0006
查出22端口現在運行什麼程序
lsof -i :22


0007
查看本機的IP,gateway, dns
IP:
以root用戶登錄,執行ifconfig。其中eth0是第一塊網卡,lo是默認的設備
Gateway:
以root用戶登錄,執行netstat -rn,以0.0.0.0開頭的一行的Gateway即爲默認網關
也可以查看/etc/sysconfig/network文件,裏面有指定的地址!
DNS:
more /etc/reslov.conf,內容指定如下:
nameserver 202.96.69.38
nameserver 202.96.64.38

0008
RH8.0命令行下輕鬆改變ping 的TTL值(cgweb)
#sysctl -w net.ipv4.ip_default_ttl=N
(N=0~255),若N>255,則ttl=0

0009
RH8.0命令行下輕鬆改變系統配置默認值(houaq)
編輯/etc/sysctl.conf, 例如,將
net.ipv4.ip_forward = 0
變爲
net.ipv4.ip_forward = 1
重啓後生效,用sysctl -a查看可知

0010
mount局域網上其他windows機器共享出的目錄
mount -t smbfs -o username=guest,password=guest //machine/path /mnt/cdrom

0011
允許|禁止root通過SSH登陸(Fun-FreeBSD)
修改sshd_config:PermitRootLogin no|yes

0012
讓root直接telnet登陸
編輯/etc/pam.d/login,去掉
auth required /lib/security/pam_securetty.so 這句話

0013
在linux接adsl設備
需要一個運轉正常的Linux + 至少一塊網卡 + 寬帶設備已經申請完畢,同時已經開通
前市場上大概有幾種ADSL設備,他們工作的方式有一些細微的差別。
就是通過虛擬撥號來完成上網的這一過程,也就是利用pppoe設備來進行虛擬撥號的
叫作全向貓,就是一種加電後自動的進行撥號的工作,然後留給我們的接口是RJ45,
大連地區一般留給我們的網關都是10.0.0.2,這種設備最容易對付,最後是直接分配
給用戶一個固定的IP,相對大家來說也比較容易對付
1.第一種需要進行撥號:
這幾種設備都是通過eth接口與計算機進行通訊的,所以先將硬件設備的連接作好,尤
其是寬帶貓的,一定要確認無誤(否則一會兒要不去可不算我的事情)
然後啓動系統,確認系統上是否安裝rp-pppoe這個軟件(通過rpm -qa|grep pppoe來查
找),如沒有安裝的用戶,在光盤裏或是到網上去down一個來,安裝上後,以root用戶
執行adsl-setup,這樣就進入了adsl的資料的設定狀態,要求輸入申請寬帶的用戶名以
及其他一些信息,確認沒有問題,接受直至最後(裏面都是E文,但是一看即能懂,比
較簡單,有關一個防火牆的設置,我一般都不用,選0,大家可以具體考慮)。
配置完成後,以root用戶執行adsl-start,這樣將進行adsl的撥號工作,正常就會一下
上線,如有什麼具體問題,去看一下日誌(/var/log/messages)裏面告訴你什麼了。
停掉adsl,執行adsl-stop就可以了(很簡單的)
2.另外兩種比較容易對付:
全向貓:只要將你的網卡的IP設置成一個10網段的IP,然後網關指到全向貓的IP
上(10.0.0.2),基本上不有太大的問題
 固定IP:就像配置本地兒的網卡一樣,將IP,網關,DNS都按申請來的填寫上就可以搞定了

0014
讓linux自動同步時間(shunz)

vi /etc/crontab
加上一句:
00 0 1 * * root rdate -s time.nist.gov

0015
linux的網上資源有哪些
國外
http://lwn.net/
http://www.tldp.org/
http://www.yolinux.com/(flying-dance big big pig)
http://www.justlinux.com/
http://www.linuxtoday.com/
http://www.linuxquestions.org/
http://www.fokus.gmd.de/linux/
http://www.linux-tutorial.info/
http://public.www.planetmirror.com/
http://www.freebsdforums.org/forums/
http://www.netfilter.org/documentation/
http://www-106.ibm.com/developerworks/linux/

國內
http://www.fanqiang.com/
http://www.linuxsir.com/
http://www.chinaunix.net/
http://www.linuxfans.org/(deadcat)
http://www.linuxeden.com/
http://www.linuxforum.net/
http://www.linuxaid.com.cn/
http://freesoft.online.sh.cn/
http://www-900.ibm.com/developerWorks/cn/l...nux/index.shtml
http://www.neweasier.com/software.html
http://www.blueidea.com/bbs/archivecontent...?id=635906(sqh)

0016
北京的培訓點
http://www.milkyway.com.cn/

0017
改變telnet的端口
/etc/services這個文件裏你可修改想要的端口號.重啓守護進程

0018
終端模式有問題(sakulagi)
export TERM=vt100

0019
模仿超級終端,LINUX裏什麼程序連接路由器和交換機(alstone)
minicom

0020
ssh上來能不能不自動斷線(wind521)
那是timetou的設置,修改TMOUT變量值

0021
用什麼工具做入侵檢測
snort

0022
Linux下檢測程序內存泄漏的工具
cchecker或是efence庫都可以

0023
linux下如何監視所有通過本機網卡的數據
tcpdump iptraf

0024
爲什麼root執行好多命令都說command not found
你一定是telnet上來d,然後su成root的吧,改改你的su命令格式,應該是su - root

0025
關閉用戶的POP3權限(tiansgx)
把POP3的端口關了就可以了。 在文件/etc/services中找到這一行 pop-3 110/tcp 把這一行前加個#,把它註釋掉就可以了。

0026
linux下播放flash動畫(myxfc)
linux下播放flash動畫用這個東西,不會造成瀏覽器的關閉(其他的插件不好用)
首先下載flash播放動畫在linux的插件
http://www.collaborium.org/onsite/jos2000/...sh_linux.tar.gz
tar zxvf flash_linux.tar.gz
打開包之後,會看到Linux文件夾
在linux文件頰裏有兩個文件libflashplayer.so 和shockwaveflash.class,把這兩個文件拷貝到你的瀏覽器裏的插件裏(瀏覽器不一樣,插件的位置可能也不一樣)
/usr/lib/mozilla-1.0.1/plugins,就可以了

0027
鎖定wu-ftp用戶目錄(wangla)
編輯ftpaccess文件
restricted-uid *
這一句很重要,限制了ftp用戶在自己的目錄裏。

0028
服務器怎麼不讓telnet(知秋一葉)
服務器上必須啓動telnet服務 && 服務器的防火牆優先級應該設爲低

0029
防止任何人使用su命令成爲root(xiaohu0)
1.vi /etc/pam.d/su
auth sufficient /lib/security/pam_rootok.so debug
auth required /lib/security/pam_wheel.so group=wheel
2.在/etc/pam. d/su配置文件中定義了wheel組.

0030
如何使lynx瀏覽器能夠瀏覽中文網頁(Ghost_Vale)
瀏覽簡體中文網頁就的修改如下設置
Save options to disk: [X]
Display and Character Set
Display character set : [Chinese________________________]
Assumed document character set(!): [iso-8859-1______]
CJK mode (!) : [ON_]
然後移到最下面的 Accept Changes 按下 Enter 保存就可以了
當然你的系統要支持簡體中文纔可以

0031
網卡激活了,卻上不了網,怎麼辦?(Slock )
trace一下,看看到底是在那一塊被阻住的。
1.Ping自己
2.Ping網關
3.Ping DNS
4.trace DNS
If All=ok
then nslookup www.sina.com.cn
Ping sinas address
Tra sina address
基本上就可以知道結果了

0032
在redhat9下配samba,win2000能訪問,win98不能訪問?(squall2003)
如果是wind98必需修改註冊表:HKEY_LOCAL_MACHINE/system/correntcontrolset/services/Vxd/VNETSUP下建個D值:EnablePlainTextpasswd,鍵值1

0033
如何得到網卡的MAC地址
arp -a | awk {print $4}

0034
如何得到網卡的IP地址(mb)
ifconfig eth0 |awk /inet addr/ {split($2,x,":");print x[2]}

kingpaul @ 04:06 PM 發表於 linux | 編輯 | 留言 (0) | TrackBack (0)

LINUX遠程管理工具SSH指南

http://www.ebcom.cn/news/main/home/ns_detail.php?id=235&nowmenuid=6&cpath=0048:&catid=48

OpenSSH

OpenSSH 是 SSH (Secure SHell) 協議的免費開源實現。它用安全、加密的網絡連接工具代替了 telnet、ftp、 rlogin、rsh 和 rcp 工具。OpenSSH 支持 SSH 協議的版本 1.3、1.5、和 2。自從 OpenSSH 的版本 2.9 以來,默認的協議是版本 2,該協議默認使用 RSA 鑰匙。

1. 爲什麼使用 SSH?
使用 OpenSSH 工具將會增進你的系統安全性。 所有使用 OpenSSH 工具的通訊,包括口令,都會被加密。 telnet 和 ftp 使用純文本口令,並被明文發送。這些信息可能會被截取,口令可能會被檢索,然後未經授權的人員可能會使用截取的口令登錄進你的系統而對你的系統造成危害。你應該儘可能地使用 OpenSSH 的工具集合來避免這些安全問題。
另一個使用 OpenSSH 的原因是,它自動把 DISPLAY 變量轉發給客戶機器。換一句話說,如果你在本地機器上運行 X 窗口系統,並且使用 ssh 命令登錄到了遠程機器上,當你在遠程機器上執行一個需要 X 的程序時,它會顯示在你的本地機器上。如果你偏愛圖形化系統管理工具,卻不能夠總是親身訪問該服務器,這就會爲你的工作大開方便之門。

2. 配置 OpenSSH 服務器
要運行 OpenSSH 服務器,你必須首先確定你安裝了正確的 RPM 軟件包。openssh-server 軟件包是必不可少的,並且它依賴於 openssh 軟件包的安裝與否。
OpenSSH 守護進程使用 /etc/ssh/sshd_config 配置文件。Red Hat Linux 9 安裝的默認配置文件在多數情況下應該足以勝任。如果你想使用沒有被默認的 sshd_config 文件提供的方式來配置守護進程,請閱讀 sshd 的說明書(man)頁來獲取能夠在配置文件中定義的關鍵字列表。
要啓動 OpenSSH 服務,使用 /sbin/service sshd start 命令。要停止 OpenSSH 服務器,使用 /sbin/service sshd stop 命令。如果你想讓守護進程在引導時自動啓動,請參閱相關資料來獲取關於如何管理服務的信息。
如果你重新安裝了 Red Hat Linux 系統,任何在它被重裝前使用 OpenSSH 工具連接到這個系統上的客戶在它被重裝後將會看到下列消息:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.

重裝後的系統會爲自己創建一組新的身份標識鑰匙;因此客戶會看到 RSA 主機鑰匙改變的警告。如果你想保存系統原有的主機鑰匙,備份 /etc/ssh/ssh_host*key* 文件,然後在系統重裝後恢復它。該過程會保留系統的身份。當客戶機在該系統重裝後試圖連接它,它們就不會看到以上的警告信息。(還有一種解決方法見:http://chinaunix.net/forum/viewtopic.php?t=109562&start=0)

3. 配置 OpenSSH 客戶
要從客戶機連接到 OpenSSH 服務器上,你必須在客戶機器上裝有 openssh-clients 和 openssh 軟件包。

3.1. 使用 ssh 命令
ssh 命令是 rlogin、rsh 和 telnet 命令的安全替換。它允許你在遠程機器上登錄並在其上執行命令。
使用 ssh 來登錄到遠程機器和使用 telnet 相似。要登錄到一個叫做 penguin.example.net 的遠程機器,在 shell 提示下鍵入下面的命令:
ssh penguin.example.net
第一次使用 ssh 在遠程機器上登錄時,你會看到和下面相仿的消息:
The authenticity of host penguin.example.net cant be established.
DSA key fingerprint is 94:68:3a:3a:bc:f3:9a:9b:01:5d:b3:07:38:e2:11:0c.
Are you sure you want to continue connecting (yes/no)?
鍵入 yes 來繼續。這會把該服務器添加到你的已知主機的列表中,如下面的消息所示:
Warning: Permanently added penguin.example.net (RSA) to the list of known hosts.
下一步,你會看到向你詢問遠程主機口令的提示。在輸入口令後,你就會在遠程主機的 shell 提示下了。如果你沒有指定用戶名,你在本地客戶機器上登錄用的用戶名就會被傳遞給遠程機器。如果你想指定不同的用戶名,使用下面的命令:
ssh [email protected]
你還可以使用 ssh -l username penguin.example.net。
ssh 命令可以用來在遠程機器上不經 shell 提示登錄而執行命令。它的語法格式是: ssh hostname command。譬如,如果你想在遠程主機 penguin.example.net 上執行 ls /usr/share/doc 命令,在 shell 提示下鍵入下面的命令:
ssh penguin.example.net ls /usr/share/doc
在你輸入了正確的口令之後, /usr/share/doc 這個遠程目錄中的內容就會被顯示,然後你就會被返回到你的本地 shell 提示下。

3.2. 使用 scp 命令
scp 命令可以用來通過安全、加密的連接在機器間傳輸文件。它與 rcp 相似。
把本地文件傳輸給遠程系統的一般語法是:
scp localfile username@tohostname:/newfilename
localfile 指定源文件,username@tohostname:/newfilename 指定目標文件。
要把本地文件 shadowman 傳送到你在 penguin.example.net 上的賬號內,在 shell 提示下鍵入(把 username 替換成你的用戶名):
scp shadowman [email protected]:/home/username
這會把本地文件 shadowman 傳輸給 penguin.example.net 上的 /home/username/shadowman 文件。
把遠程文件傳輸給本地系統的一般語法是:
scp username@tohostname:/remotefile /newlocalfile
remotefile 指定源文件,newlocalfile 指定目標文件。
源文件可以由多個文件組成。譬如,要把目錄 /downloads 的內容傳輸到遠程機器 penguin.example.net 上現存的 uploads 目錄,在 shell 提示下鍵入下列命令:
scp /downloads/* [email protected]:/uploads/

3.3. 使用 sftp 命令
sftp 工具可以用來打開一次安全互動的 FTP 會話。它與 ftp 相似, 只不過,它使用安全、加密的連接。它的一般語法是:sftp [email protected]。一旦通過 驗證,你可以使用一組和使用 FTP 相似的命令。請參閱 sftp 的說明書頁(man)來獲取這些 命令的列表。要閱讀說明書頁,在 shell 提示下執行 man sftp 命令。sftp 工具只在 OpenSSH 版本 2.5.0p1 以上纔有。

3.4. 生成鑰匙對
如果你不想每次使用 ssh、scp 或 sftp 時都要輸入口令來連接遠程機器,你可以生成一對授權鑰匙。
鑰匙必須爲每個用戶生成。要爲某用戶生成鑰匙,用想連接到遠程機器的用戶身份來遵循下面的步驟。如果你用根用戶的身份完成了下列步驟,就只有根用戶才能使用這對鑰匙。
從 OpenSSH 版本 3.0 開始,~/.ssh/authorized_keys2、~/.ssh/known_hosts2 和 /etc/ssh_known_hosts2 就會過時。SSH 協議 1 和 2 共享 ~/.ssh/authorized_keys、~/.ssh/known_hosts 和 /etc/ssh/ssh_known_hosts 文件。
Red Hat Linux 9 默認使用 SSH 協議 2 和 RSA 鑰匙。
竅門
如果你重裝了 Red Hat Linux,但是想保留現有的鑰匙對,備份你的主目錄中的 .ssh 目錄。重裝後,把該目錄複製回主目錄。該進程可爲系統上的所有用戶進行,包括根用戶。

3.4.1. 爲版本 2 生成 RSA 鑰匙對
使用下列步驟來爲 SSH 協議的版本 2 生成 RSA 鑰匙對。從 OpenSSH 2.9 開始,它已成爲默認設置。
1. 要生成 RSA 鑰匙對與協議的版本 2 合作,在 shell 提示下鍵入下列命令:
ssh-keygen -t rsa
接受 ~/.ssh/id_rsa 的默認位置。輸入一個與你的帳號口令不同的口令句,再輸入一次來確認。
公鑰被寫入 ~/.ssh/id_rsa.pub。密鑰被寫入 ~/.ssh/id_rsa。決不能把密鑰出示給任何人。
2. 使用 chmod 755 ~/.ssh 命令改變你的 .ssh 目錄的許可權限。
3. 把 ~/.ssh/id_rsa.pub 的內容複製到你想連接的機器上的 ~/.ssh/authorized_keys 文件中。如果 ~/.ssh/authorized_keys 不存在,你可以把 ~/.ssh/id_rsa.pub 文件複製到那個機器上的 ~/.ssh/authorized_keys 文件中。
4. 如果你運行的是 GNOME,跳到第 3.4.4 節。如果你沒在運行 X 窗口系統,跳到第 3.4.5 節。

3.4.2. 爲版本 2 生成 DSA 鑰匙對
使用下面的步驟來爲 SSH 協議的版本 2 生成 DSA 鑰匙對。
1. 要生成用於協議的版本 2 的 DSA 鑰匙對,在 shell 提示下鍵入下面的命令:
ssh-keygen -t dsa
接受 ~/.ssh/id_dsa 的默認位置。輸入一個與你的帳號口令不同的口令句,再輸入一次來確認。
竅門
口令句是用來驗證用戶的一串詞彙和字符。 口令句和一般口令的不同之處在於:在口令句中你可以使用空格或製表符。口令句通常比一般口令長,因爲它們通常使用短語而不僅僅用一個詞。
公鑰被寫入 ~/.ssh/id_dsa.pub。密鑰被寫入 ~/.ssh/id_dsa。決不能把密鑰出示給任何人,這一點很重要。
2. 使用 chmod 755 ~/.ssh 命令改變你的 .ssh 目錄的許可權限。
3. 把 ~/.ssh/id_dsa.pub 的內容複製到你想連接的機器中的 ~/.ssh/authorized_keys 文件中。如果文件 ~/.ssh/authorized_keys 不存在,你可以把 ~/.ssh/id_dsa.pub 文件複製到那個機器上的 ~/.ssh/authorized_keys文件中。
4. 如果你運行的是 GNOME,跳到第 3.4.4 節。如果你沒在運行 X 窗口系統,跳到 第 3.4.5 節。

3.4.3. 爲版本 1.3 和 1.5 生成 DSA 鑰匙對
使用下面的步驟來生成用於 SSH 協議版本 1 的 RSA 鑰匙對。如果你只在使用 DSA 的系統間連接,則不需要 RSA 版本 1.3 或 RSA 版本 1.5 鑰匙對。
1. 要生成 RSA (版本 1.3 和 1.5 協議)鑰匙對,在 shell 提示下鍵入下列命令:
ssh-keygen -t rsa1
接受默認的位置 (~/.ssh/identity)。輸入和你的帳號口令不同的口令句。再輸入一次來確認。
公鑰被寫入 ~/.ssh/identity.pub。密鑰被寫入 ~/.ssh/identity。不要把你的密鑰出示給任何人。
2. 使用 chmod 755 ~/.ssh 和 chmod 644 ~/.ssh/identity.pub 命令改變你的 .ssh 目錄和密鑰的許可權限。
3. 把 ~/.ssh/identity.pub 的內容複製到你想連接的機器中的 ~/.ssh/authorized_keys 文件中。如果文件 ~/.ssh/authorized_keys 不存在,你可以把 ~/.ssh/identity.pub 文件複製到遠程機器上的 ~/.ssh/authorized_keys 文件中。
4. 如果你運行的是 GNOME,跳到第 3.4.4 節。如果你沒在運行 GNOME, 跳到第 3.4.5 節。

3.4.4. 在 GNOME 中配置 ssh-agent
ssh-agent 工具可以用來保存你的口令句,因此你不必在每次引發 ssh 或 scp 連接時都輸入口令。如果你在使用 GNOME,openssh-askpass-gnome 工具可以用來在你登錄到 GNOME 時提示你輸入口令句,並把它一直保留到你從 GNOME 中註銷之時。你不必爲本次 GNOME 會話中任何 ssh 或 scp 連接輸入口令或口令句。如果你不打算使用 GNOME,請參閱第 3.4.5 節。
要在 GNOME 會話中保存口令句,遵循下列步驟:
1. 你需要安裝 openssh-askpass-gnome 軟件包;你可以使用 rpm -q openssh-askpass-gnome 命令來判定該軟件包是否已被安裝。如果它沒有被安裝,從你的 Red Hat Linux 光盤集合、Red Hat FTP 鏡像站點、或使用 Red Hat 網絡 來安裝它。
2. 點擊「主菜單」(在面板上)=> 「首選項」 => 「更多首選項」 => 「會話」。然後點擊「啓動程序」標籤。點擊「增加」,在「啓動命令」文本字段內輸入 /usr/bin/ssh-add。把它的優先級設爲比任何現存命令都高的數字以確保它最後才執行。ssh-add 的優先級數字最好是 70 或更高。優先級數字越高,優先級越低。如果你列出了其它程序,該程序的優先級應該最低。點擊「關閉」來退出該程序。
3. 註銷後再登錄進 GNOME;換一句話說,重新啓動 X 服務器。在 GNOME 啓動後,一個提示你輸入口令句的對話框就會出現。輸入要求的口令句。如果你把 DSA 和 RSA 兩者都配置了,你會被提示兩者都輸入。從現在起,你就不會被 ssh、 scp 或 sftp 提示輸入口令了。

3.4.5. 配置 ssh-agent
ssh-agent 可以用來儲存你的口令句,因此你在每次使用 ssh 或 scp 連接時就不必總是輸入它。如果你不在運行 X 窗口系統,則在 shell 提示中遵循這些步驟。如果你在運行 GNOME,但是不想配置它來在你登錄時提示你輸入口令(參閱第 3.4.4 節),這個過程可以在類似 xterm 的終端窗口中進行。如果你在運行 X 卻不是 GNOME,這個過程可以在終端中進行。可是,你的口令只能在該終端窗口中被記住,它不是全局設置。
1. 在 shell 提示下,鍵入下面的命令:
exec /usr/bin/ssh-agent $SHELL
2. 然後,鍵入下面的命令:
ssh-add
接着,輸入你的口令。如果你配置了不止一個鑰匙對,你會被提示輸入每個口令。
3. 當你註銷後,口令句就會被忘記。你必須在每次登錄到虛擬控制檯或打開終端窗口時都執行這兩條命令。

4. 其它資料
OpenSSH 和 OpenSSL 工程處於不斷地開發中,因此關於它們的最新信息通常位於它們的官方網站中。OpenSSH 和 OpenSSL 工具的說明書(man)頁也是個獲取詳細信息的好地方。

4.1. 安裝了的文檔
* ssh、scp、sftp、sshd 和 ssh-keygen 的說明書(man)頁 — 關於它們的說明書頁包括如何使用這些命令的信息,以及所有能與它們一起使用的參數。

4.2. 有用的網站
* http://www.openssh.com — OpenSSH FAQ 網頁、錯誤報告、郵件列表、工程宗旨、以及關於安全功能的更技術性的解釋。
* http://www.openssl.org — OpenSSL FAQ 網頁、郵件列表、以及對於工程宗旨的描述。
* http://www.freessh.org — 用於其它平臺的 SSH 客戶軟件。

kingpaul @ 04:02 PM 發表於 linux | 編輯 | 留言 (0) | TrackBack (0)

linux指令大全

http://www.ebcom.cn/news/main/home/ns_detail.php?id=232&nowmenuid=6&cpath=0048:&catid=48

名稱:cat
使用權限:所有使用者
使用方式:cat [-AbeEnstTuv] [--help] [--version] fileName
說明:把檔案串連接後傳到基本輸出(螢幕或加 > fileName 到另一個檔案)
參數:
-n 或 --number 由 1 開始對所有輸出的行數編號
-b 或 --number-nonblank 和 -n 相似,只不過對於空白行不編號
-s 或 --squeeze-blank 當遇到有連續兩行以上的空白行,就代換爲一行的空白行
-v 或 --show-nonprinting

範例:
cat -n textfile1 > textfile2 把 textfile1 的檔案內容加上行號後輸入 textfile2 這個檔案裏
cat -b textfile1 textfile2 >> textfile3 把 textfile1 和 textfile2 的檔案內容加上行號(空白行不加)之後將內容附加到 textfile3

名稱 : cd
使用權限 : 所有使用者

使用方式 : cd [dirName]

說明 : 變換工作目錄至 dirName。 其中 dirName 表示法可爲絕對路徑或相對路徑。若目錄名稱省略,則變換至使用者的 home directory (也就是剛 login 時所在的目錄)。

另外,"~" 也表示爲 home directory 的意思,"." 則是表示目前所在的目錄,".." 則表示目前目錄位置的上一層目錄。

範例 : 跳到 /usr/bin/ :
cd /usr/bin

跳到自己的 home directory :
cd ~

跳到目前目錄的上上兩層 :
cd ../..

 

指令名稱 : chmod
使用權限 : 所有使用者

使用方式 : chmod [-cfvR] [--help] [--version] mode file...

說明 : Linux/Unix 的檔案存取權限分爲三級 : 檔案擁有者、羣組、其他。利用 chmod 可以藉以控制檔案如何被他人所存取。

把計 :

mode : 權限設定字串,格式如下 : [ugoa...][[+-=][rwxX]...][,...],其中u 表示該檔案的擁有者,g 表示與該檔案的擁有者屬於同一個羣體(group)者,o 表示其他以外的人,a 表示這三者皆是。
+ 表示增加權限、- 表示取消權限、= 表示唯一設定權限。
r 表示可讀取,w 表示可寫入,x 表示可執行,X 表示只有當該檔案是個子目錄或者該檔案已經被設定過爲可執行。
-c : 若該檔案權限確實已經更改,才顯示其更改動作
-f : 若該檔案權限無法被更改也不要顯示錯誤訊息
-v : 顯示權限變更的詳細資料
-R : 對目前目錄下的所有檔案與子目錄進行相同的權限變更(即以遞迴的方式逐個變更)
--help : 顯示輔助說明
--version : 顯示版本

範例 :將檔案 file1.txt 設爲所有人皆可讀取 :
chmod ugo+r file1.txt

將檔案 file1.txt 設爲所有人皆可讀取 :
chmod a+r file1.txt

將檔案 file1.txt 與 file2.txt 設爲該檔案擁有者,與其所屬同一個羣體者可寫入,但其他以外的人則不可寫入 :
chmod ug+w,o-w file1.txt file2.txt

將 ex1.py 設定爲只有該檔案擁有者可以執行 :
chmod u+x ex1.py

將目前目錄下的所有檔案與子目錄皆設爲任何人可讀取 :
chmod -R a+r *

此外chmod也可以用數字來表示權限如 chmod 777 file
語法爲:chmod abc file

其中a,b,c各爲一個數字,分別表示User、Group、及Other的權限。

r=4,w=2,x=1
若要rwx屬性則4+2+1=7;
若要rw-屬性則4+2=6;
若要r-x屬性則4+1=7。

範例:
chmod a=rwx file


chmod 777 file

效果相同
chmod ug=rwx,o=x file


chmod 771 file

效果相同

 

 

若用chmod 4755 filename可使此程式具有root的權限


指令名稱 : chown
使用權限 : root

使用方式 : chmod [-cfhvR] [--help] [--version] user[:group] file...

說明 : Linux/Unix 是多人多工作業系統,所有的檔案皆有擁有者。利用 chown 可以將檔案的擁有者加以改變。一般來說,這個指令只有是由系統管理者(root)所使用,一般使用者沒有權限可以改變別人的檔案擁有者,也沒有權限可以自己的檔案擁有者改設爲別人。只有系統管理者(root)纔有這樣的權限。

把計 :

user : 新的檔案擁有者的使用者 IDgroup : 新的檔案擁有者的使用者羣體(group)-c : 若該檔案擁有者確實已經更改,才顯示其更改動作-f : 若該檔案擁有者無法被更改也不要顯示錯誤訊息-h : 只對於連結(link)進行變更,而非該 link 真正指向的檔案-v : 顯示擁有者變更的詳細資料-R : 對目前目錄下的所有檔案與子目錄進行相同的擁有者變更(即以遞迴的方式逐個變更)--help : 顯示輔助說明--version : 顯示版本

範例 :
將檔案 file1.txt 的擁有者設爲 users 羣體的使用者 jessie :
chown jessie:users file1.txt

將目前目錄下的所有檔案與子目錄的擁有者皆設爲 users 羣體的使用者 lamport :
chmod -R lamport:users *


名稱:cp
使用權限:所有使用者

使用方式:

cp [options] source dest
cp [options] source... directory

說明:將一個檔案拷貝至另一檔案,或將數個檔案拷貝至另一目錄。

把計

-a 儘可能將檔案狀態、權限等資料都照原狀予以複製。
-r 若 source 中含有目錄名,則將目錄下之檔案亦皆依序拷貝至目的地。
-f 若目的地已經有相同檔名的檔案存在,則在複製前先予以刪除再行復制。
範例:
將檔案 aaa 複製(已存在),並命名爲 bbb :
cp aaa bbb

將所有的C語言程式拷貝至 Finished 子目錄中 :
cp *.c Finished

 

名稱:cut

使用權限:所有使用者

用法:cut -cnum1-num2 filename

說明:顯示每行從開頭算起 num1 到 num2 的文字。

範例:

shell>> cat example
test2
this is test1
shell>> cut -c0-6 example ## print 開頭算起前 6 個字元
test2
this i


名稱 : find
用法 : find
使用說明 :

將檔案系統內符合 expression 的檔案列出來。你可以指要檔案的名稱、類別、時間、大小、權限等不同資訊的組合,只有完全相符的纔會被列出來。

find 根據下列規則判斷 path 和 expression,在命令列上第一個 - ( ) , ! 之前的部份爲 path,之後的是 expression。如果 path 是空字串則使用目前路徑,如果 expression 是空字串則使用 -print 爲預設 expression

expression 中可使用的選項有二三十個之多,在此只介紹最常用的部份。

-mount, -xdev : 只檢查和指定目錄在同一個檔案系統下的檔案,避免列出其它檔案系統中的檔案
-amin n : 在過去 n 分鐘內被讀取過
-anewer file : 比檔案 file 更晚被讀取過的檔案
-atime n : 在過去 n 天過讀取過的檔案
-cmin n : 在過去 n 分鐘內被修改過
-cnewer file :比檔案 file 更新的檔案
-ctime n : 在過去 n 天過修改過的檔案
-empty : 空的檔案-gid n or -group name : gid 是 n 或是 group 名稱是 name
-ipath p, -path p : 路徑名稱符合 p 的檔案,ipath 會忽略大小寫
-name name, -iname name : 檔案名稱符合 name 的檔案。iname 會忽略大小寫
-size n : 檔案大小 是 n 單位,b 代表 512 位元組的區塊,c 表示字元數,k 表示 kilo bytes,w 是二個位元組。-type c : 檔案類型是 c 的檔案。
d: 目錄
c: 字型裝置檔案
b: 區塊裝置檔案
p: 具名貯列
f: 一般檔案
l: 符號連結
s: socket
-pid n : process id 是 n 的檔案

你可以使用 ( ) 將運算式分隔,並使用下列運算。
exp1 -and exp2
! expr
-not expr
exp1 -or exp2
exp1, exp2
範例:
將目前目錄及其子目錄下所有延伸檔名是 c 的檔案列出來。
# find . -name "*.c"


將目前目錄其其下子目錄中所有一般檔案列出
# find . -ftype f


將目前目錄及其子目錄下所有最近 20 分鐘內更新過的檔案列出
# find . -ctime -20

 

名稱:less

使用權限:所有使用者

使用方式:

less [Option] filename

說明:
less 的作用與 more 十分相似,都可以用來瀏覽文字檔案的內容,不同的是 less 允許使用者往回捲動
以瀏覽已經看過的部份,同時因爲 less 並未在一開始就讀入整個檔案,因此在遇上大型檔案的開啓時,會比一般的文書編輯器(如 vi)來的快速。


範例:


指令名稱 : ln
使用權限 : 所有使用者

使用方式 : ln [options] source dist,其中 option 的格式爲 :

[-bdfinsvF] [-S backup-suffix] [-V {numbered,existing,simple}]
[--help] [--version] [--]
說明 : Linux/Unix 檔案系統中,有所謂的連結(link),我們可以將其視爲檔案的別名,而連結又可分爲兩種 : 硬連結(hard link)與軟連結(symbolic link),硬連結的意思是一個檔案可以有多個名稱,而軟連結的方式則是產生一個特殊的檔案,該檔案的內容是指向另一個檔案的位置。硬連結是存在同一個檔案系統中,而軟連結卻可以跨越不同的檔案系統。
ln source dist 是產生一個連結(dist)到 source,至於使用硬連結或軟鏈結則由參數決定。

不論是硬連結或軟鏈結都不會將原本的檔案複製一份,只會佔用非常少量的磁碟空間。


-f : 鏈結時先將與 dist 同檔名的檔案刪除-d : 允許系統管理者硬鏈結自己的目錄-i : 在刪除與 dist 同檔名的檔案時先進行詢問-n : 在進行軟連結時,將 dist 視爲一般的檔案-s : 進行軟鏈結(symbolic link)-v : 在連結之前顯示其檔名-b : 將在鏈結時會被覆寫或刪除的檔案進行備份-S SUFFIX : 將備份的檔案都加上 SUFFIX 的字尾-V METHOD : 指定備份的方式--help : 顯示輔助說明--version : 顯示版本
範例 :
將檔案 yy 產生一個 symbolic link : zz
ln -s yy zz

將檔案 yy 產生一個 hard link : zz
ln yy xx

 

名稱:locate
使用權限:所有使用者
使用方式: locate [-q] [-d ] [--database=]
locate [-r ] [--regexp=]
locate [-qv] [-o ] [--output=]
locate [-e ] [-f ] <[-l ] [-c]
<[-U ] [-u]>
locate [-Vh] [--version] [--help]
說明:
locate 讓使用者可以很快速的搜尋檔案系統內是否有指定的檔案。其方法是先建立一個包括系統內所有檔案名稱及路徑的資料庫,之後當尋找時就只需查詢這個資料庫,而不必實際深入檔案系統之中了。

在一般的 distribution 之中,資料庫的建立都被放在 contab 中自動執行。一般使用者在使用時只要用

# locate your_file_name

的型式就可以了。 參數:
-u
-U

建立資料庫,-u 會由根目錄開始,-U 則可以指定開始的位置。

-e


排除在尋找的範圍之外。

-l
如果 是 1.則啓動安全模式。在安全模式下,使用者不會看到權限無法看到的檔案。這會始速度減慢,因爲 locate 必須至實際的檔案系統中取得檔案的權限資料。

-f
將特定的檔案系統排除在外,例如我們沒有到理要把 proc 檔案系統中的檔案放在資料庫中。

-q
安靜模式,不會顯示任何錯誤訊息。

-n
至多顯示 個輸出。

-r
使用正規運算式 做尋找的條件。

-o
指定資料庫存的名稱。

-d

指定資料庫的路徑

-h
顯示輔助訊息

-v
顯示更多的訊息

-V
顯示程式的版本訊息 範例:

locate chdrv : 尋找所有叫 chdrv 的檔案
locate -n 100 a.out : 尋找所有叫 a.out 的檔案,但最多隻顯示 100 個
locate -u : 建立資料庫


名稱 : ls
使用權限 : 所有使用者

使用方式 : ls [-alrtAFR] [name...]

說明 : 顯示指定工作目錄下之內容(列出目前工作目錄所含之檔案及子目錄)。


-a 顯示所有檔案及目錄 (ls內定將檔案名或目錄名稱開頭爲"."的視爲隱藏檔,不會列出)
-l 除檔案名稱外,亦將檔案型態、權限、擁有者、檔案大小等資訊詳細列出
-r 將檔案以相反次序顯示(原定依英文字母次序)
-t 將檔案依建立時間之先後次序列出
-A 同 -a ,但不列出 "." (目前目錄) 及 ".." (父目錄)
-F 在列出的檔案名稱後加一符號;例如可執行檔則加 "*", 目錄則加 "/"
-R 若目錄下有檔案,則以下之檔案亦皆依序列出

範例:
列出目前工作目錄下所有名稱是 s 開頭的檔案,愈新的排愈後面 :
ls -ltr s*

將 /bin 目錄以下所有目錄及檔案詳細資料列出 :
ls -lR /bin

列出目前工作目錄下所有檔案及目錄;目錄於名稱後加 "/", 可執行檔於名稱後加 "*" :
ls -AF

名稱:more
使用權限:所有使用者
使用方式:more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..]
說明:類似 cat ,不過會以一頁一頁的顯示方便使用者逐頁閱讀,而最基本的指令就是按空白鍵(space)就往下一頁顯示,按 b 鍵就會往回(back)一頁顯示,而且還有搜尋字串的功能(與 vi 相似),使用中的說明文件,請按 h 。
參數:-num 一次顯示的行數
-d 提示使用者,在畫面下方顯示 [Press space to continue, q to quit.] ,如果使用者按錯鍵,則會顯示 [Press h for instructions.] 而不是 嗶 聲
-l 取消遇見特殊字元 ^L(送紙字元)時會暫停的功能
-f 計算行數時,以實際上的行數,而非自動換行過後的行數(有些單行字數太長的會被擴展爲兩行或兩行以上)
-p 不以捲動的方式顯示每一頁,而是先清除螢幕後再顯示內容
-c 跟 -p 相似,不同的是先顯示內容再清除其他舊資料
-s 當遇到有連續兩行以上的空白行,就代換爲一行的空白行
-u 不顯示下引號 (根據環境變數 TERM 指定的 terminal 而有所不同)
+/ 在每個檔案顯示前搜尋該字串(pattern),然後從該字串之後開始顯示
+num 從第 num 行開始顯示
fileNames 欲顯示內容的檔案,可爲複數個數
範例:
more -s testfile 逐頁顯示 testfile 之檔案內容,如有連續兩行以上空白行則以一行空白行顯示。
more +20 testfile 從第 20 行開始顯示 testfile 之檔案內容。


名稱:mv
使用權限:所有使用者

使用方式:

mv [options] source dest
mv [options] source... directory
說明:將一個檔案移至另一檔案,或將數個檔案移至另一目錄。
參數:-i 若目的地已有同名檔案,則先詢問是否覆蓋舊檔。

範例:

將檔案 aaa 更名爲 bbb :
mv aaa bbb

將所有的C語言程式移至 Finished 子目錄中 :
mv -i *.c

 

名稱:rm
使用權限:所有使用者

使用方式:rm [options] name...

說明:刪除檔案及目錄。

把計

-i 刪除前逐一詢問確認。
-f 即使原檔案屬性設爲唯讀,亦直接刪除,無需逐一確認。
-r 將目錄及以下之檔案亦逐一刪除。
範例:
刪除所有C語言程式檔;刪除前逐一詢問確認 :
rm -i *.c

將 Finished 子目錄及子目錄中所有檔案刪除 :
rm -r Finished

 

名稱:rmdir
使用權限:於目前目錄有適當權限的所有使用者

使用方式: rmdir [-p] dirName

說明: 刪除空的目錄。

參數: -p 是當子目錄被刪除後使它也成爲空目錄的話,則順便一併刪除。

範例:

將工作目錄下,名爲 AAA 的子目錄刪除 :
rmdir AAA

在工作目錄下的 BBB 目錄中,刪除名爲 Test 的子目錄。若 Test 刪除後,BBB 目錄成爲空目錄,則 BBB 亦予刪除。
rmdir -p BBB/Test

 

名稱:split
使用權限:所有使用者

使用方式:split [OPTION] [INPUT [PREFIX]]

說明:

將一個檔案分割成數個。而從 INPUT 分割輸出成固定大小的檔案,其檔名依序爲 PREFIXaa, PREFIXab...;PREFIX 預設值爲 ****x。若沒有 INPUT 檔或爲 ****-,則從標準輸入讀進資料。

匡兜

-b, --bytes=SIZE

SIZE 值爲每一輸出檔案的大小,單位爲 byte。
-C, --line-bytes=SIZE

每一輸出檔中,單行的最大 byte 數。
-l, --lines=NUMBER

NUMBER 值爲每一輸出檔的列數大小。
-NUMBER

與 -l NUMBER 相同。
--verbose

於每個輸出檔被開啓前,列印出偵錯資訊到標準錯誤輸出。
--help

顯示輔助資訊然後離開。
--version

列出版本資訊然後離開。
SIZE 可加入單位: b 代表 512, k 代表 1K, m 代表 1 Meg。

範例:

PostgresSQL 大型資料庫備份與回存:

因 Postgres 允許表格大過你係統檔案的最大容量,所以要將表格 dump 到單一的檔案可能會有問題,使用 split進行檔案分割。


% pg_dump dbname | split -b 1m - filename.dump.

 

重新載入


% createdb dbname
% cat filename.dump.* | pgsql dbname

 

名稱:touch
使用權限:所有使用者

使用方式:
touch [-acfm]
[-r reference-file] [--file=reference-file]
[-t MMDDhhmm[[CC]YY][.ss]]
[-d time] [--date=time] [--time={atime,access,use,mtime,modify}]
[--no-create] [--help] [--version]
file1 [file2 ...]


說明:
touch 指令改變檔案的時間記錄。 ls -l 可以顯示檔案的時間記錄。


參數:
a 改變檔案的讀取時間記錄。
m 改變檔案的修改時間記錄。
c 假如目的檔案不存在,不會建立新的檔案。與 --no-create 的效果一樣。
f 不使用,是爲了與其他 unix 系統的相容性而保留。
r 使用參考檔的時間記錄,與 --file 的效果一樣。
d 設定時間與日期,可以使用各種不同的格式。
t 設定檔案的時間記錄,格式與 date 指令相同。
--no-create 不會建立新檔案。
--help 列出指令格式。
--version 列出版本訊息。


範例:


最簡單的使用方式,將檔案的時候記錄改爲現在的時間。若檔案不存在,系統會建立一個新的檔案。

touch file
touch file1 file2

將 file 的時間記錄改爲 5 月 6 日 18 點 3 分,公元兩千年。時間的格式可以參考 date 指令,至少需輸入 MMDDHHmm ,就是月日時與分。

touch -c -t 05061803 file
touch -c -t 050618032000 file

將 file 的時間記錄改變成與 referencefile 一樣。

touch -r referencefile file

將 file 的時間記錄改成 5 月 6 日 18 點 3 分,公元兩千年。時間可以使用 am, pm 或是 24 小時的格式,日期可以使用其他格式如 6 May 2000 。

touch -d "6:03pm" file
touch -d "05/06/2000" file
touch -d "6:03pm 05/06/2000" file
名稱 : at
使用權限 : 所有使用者

使用方式 : at -V [-q queue] [-f file] [-mldbv] TIME

說明 : at 可以讓使用者指定在 TIME 這個特定時刻執行某個程式或指令,TIME 的格式是 HH:MM其中的 HH 爲小時,MM 爲分鐘,甚至你也可以指定 am, pm, midnight, noon, teatime(就是下午 4 點鍾)等口語詞。

如果想要指定超過一天內的時間,則可以用 MMDDYY 或者 MM/DD/YY 的格式,其中 MM 是分鐘,DD 是第幾日,YY 是指年份。另外,使用者甚至也可以使用像是 now + 時間間隔來彈性指定時間,其中的時間間隔可以是 minutes, hours, days, weeks

另外,使用者也可指定 today 或 tomorrow 來表示今天或明天。當指定了時間並按下 enter 之後,at 會進入交談模式並要求輸入指令或程式,當你輸入完後按下 ctrl+D 即可完成所有動作,至於執行的結果將會寄回你的帳號中。

把計 :

-V : 印出版本編號
-q : 使用指定的佇列(Queue)來儲存,at 的資料是存放在所謂的 queue 中,使用者可以同時使用多個 queue,而 queue 的編號爲 a, b, c... z 以及 A, B, ... Z 共 52 個
-m : 即使程式/指令執行完成後沒有輸出結果, 也要寄封信給使用者
-f file : 讀入預先寫好的命令檔。使用者不一定要使用交談模式來輸入,可以先將所有的指定先寫入檔案後再一次讀入
-l : 列出所有的指定 (使用者也可以直接使用 atq 而不用 at -l)
-d : 刪除指定 (使用者也可以直接使用 atrm 而不用 at -d)
-v : 列出所有已經完成但尚未刪除的指定

例子 :
三天後的下午 5 點鍾執行 /bin/ls :
at 5pm + 3 days /bin/ls

三個星期後的下午 5 點鍾執行 /bin/ls :
at 5pm + 2 weeks /bin/ls

明天的 17:20 執行 /bin/date :
at 17:20 tomorrow /bin/date

1999 年的最後一天的最後一分鐘印出 the end of world !
at 23:59 12/31/1999 echo the end of world !

 


名稱:cal

使用權限:所有使用者

使用方式:cal [-mjy] [month [year]]

說明:

顯示日曆。若只有一個參數,則代表年份(1-9999),顯示該年的年曆。年份必須全部寫出:********cal 89 將不會是顯示 1989 年的年曆。使用兩個參數,則表示月份及年份。若沒有參數則顯示這個月的月曆。
1752 年 9 月第 3 日起改用西洋新曆,因這時大部份的國家都採用新曆,有 10 天被去除,所以該月份的月曆有些不同。在此之前爲西洋舊曆。

匡兜

-m : 以星期一爲每週的第一天方式顯示。
-j : 以凱撒歷顯示,即以一月一日起的天數顯示。
-y : 顯示今年年曆。

範例:

cal : 顯示本月的月曆。

 

[root@mylinux /root]# date
Tue Aug 15 08:00:18 CST 2000
[root@mylinux /root]# cal
August 2000
Su Mo Tu We Th Fr Sa
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

[root@mylinux /root]#


cal 2001 : 顯示公元 2001 年年曆。

[root@mylinux /root]# cal 2001
2001

January February March
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 1 2 3 1 2 3
7 8 9 10 11 12 13 4 5 6 7 8 9 10 4 5 6 7 8 9 10
14 15 16 17 18 19 20 11 12 13 14 15 16 17 11 12 13 14 15 16 17
21 22 23 24 25 26 27 18 19 20 21 22 23 24 18 19 20 21 22 23 24
28 29 30 31 25 26 27 28 25 26 27 28 29 30 31

April May June
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 7 1 2 3 4 5 1 2
8 9 10 11 12 13 14 6 7 8 9 10 11 12 3 4 5 6 7 8 9
15 16 17 18 19 20 21 13 14 15 16 17 18 19 10 11 12 13 14 15 16
22 23 24 25 26 27 28 20 21 22 23 24 25 26 17 18 19 20 21 22 23
29 30 27 28 29 30 31 24 25 26 27 28 29 30

July August September
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 7 1 2 3 4 1
8 9 10 11 12 13 14 5 6 7 8 9 10 11 2 3 4 5 6 7 8
15 16 17 18 19 20 21 12 13 14 15 16 17 18 9 10 11 12 13 14 15
22 23 24 25 26 27 28 19 20 21 22 23 24 25 16 17 18 19 20 21 22
29 30 31 26 27 28 29 30 31 23 24 25 26 27 28 29
30
October November December
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 1 2 3 1
7 8 9 10 11 12 13 4 5 6 7 8 9 10 2 3 4 5 6 7 8
14 15 16 17 18 19 20 11 12 13 14 15 16 17 9 10 11 12 13 14 15
21 22 23 24 25 26 27 18 19 20 21 22 23 24 16 17 18 19 20 21 22
28 29 30 31 25 26 27 28 29 30 23 24 25 26 27 28 29
30 31

[root@mylinux /root]#

 

 

cal 5 2001 : 顯示公元 2001 年 5 月月曆。

 

[root@mylinux /root]# cal 5 2001
May 2001
Su Mo Tu We Th Fr Sa
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

[root@mylinux /root]#

 

 

cal -m : 以星期一爲每週的第一天方式,顯示本月的月曆。

 

[root@mylinux /root]# cal -m
August 2000
Mo Tu We Th Fr Sa Su
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

[root@mylinux /root]#

 

 

cal -jy : 以一月一日起的天數顯示今年的年曆。

 

[root@mylinux /root]# cal -jy
2000

January February
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
1 32 33 34 35 36
2 3 4 5 6 7 8 37 38 39 40 41 42 43
9 10 11 12 13 14 15 44 45 46 47 48 49 50
16 17 18 19 20 21 22 51 52 53 54 55 56 57
23 24 25 26 27 28 29 58 59 60
30 31
March April
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
61 62 63 64 92
65 66 67 68 69 70 71 93 94 95 96 97 98 99
72 73 74 75 76 77 78 100 101 102 103 104 105 106
79 80 81 82 83 84 85 107 108 109 110 111 112 113
86 87 88 89 90 91 114 115 116 117 118 119 120
121
May June
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
122 123 124 125 126 127 153 154 155
128 129 130 131 132 133 134 156 157 158 159 160 161 162
135 136 137 138 139 140 141 163 164 165 166 167 168 169
142 143 144 145 146 147 148 170 171 172 173 174 175 176
149 150 151 152 177 178 179 180 181 182

July August
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
183 214 215 216 217 218
184 185 186 187 188 189 190 219 220 221 222 223 224 225
191 192 193 194 195 196 197 226 227 228 229 230 231 232
198 199 200 201 202 203 204 233 234 235 236 237 238 239
205 206 207 208 209 210 211 240 241 242 243 244
212 213
September October
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
245 246 275 276 277 278 279 280 281
247 248 249 250 251 252 253 282 283 284 285 286 287 288
254 255 256 257 258 259 260 289 290 291 292 293 294 295
261 262 263 264 265 266 267 296 297 298 299 300 301 302
268 269 270 271 272 273 274 303 304 305

November December
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
306 307 308 309 336 337
310 311 312 313 314 315 316 338 339 340 341 342 343 344
317 318 319 320 321 322 323 345 346 347 348 349 350 351
324 325 326 327 328 329 330 352 353 354 355 356 357 358
331 332 333 334 335 359 360 361 362 363 364 365
366

[root@mylinux /root]#

 


名稱 : crontab
使用權限 : 所有使用者

使用方式 :

crontab [ -u user ] filecrontab [ -u user ] { -l | -r | -e }
說明 :
crontab 是用來讓使用者在固定時間或固定間隔執行程式之用,換句話說,也就是類似使用者的時程表。-u user 是指設定指定 user 的時程表,這個前提是你必須要有其權限(比如說是 root)才能夠指定他人的時程表。如果不使用 -u user 的話,就是表示設定自己的時程表。

餐數 :

-e : 執行文字編輯器來設定時程表,內定的文字編輯器是 VI,如果你想用別的文字編輯器,則請先設定 VISUAL 環境變數來指定使用那個文字編輯器(比如說 setenv VISUAL joe)
-r : 刪除目前的時程表
-l : 列出目前的時程表

時程表的格式如下 :
f1 f2 f3 f4 f5 program

其中 f1 是表示分鐘,f2 表示小時,f3 表示一個月份中的第幾日,f4 表示月份,f5 表示一個星期中的第幾天。program 表示要執行的程式。
當 f1 爲 * 時表示每分鐘都要執行 program,f2 爲 * 時表示每小時都要執行程式,其餘類推
當 f1 爲 a-b 時表示從第 a 分鐘到第 b 分鐘這段時間內要執行,f2 爲 a-b 時表示從第 a 到第 b 小時都要執行,其餘類推
當 f1 爲 */n 時表示每 n 分鐘個時間間隔執行一次,f2 爲 */n 表示每 n 小時個時間間隔執行一次,其餘類推
當 f1 爲 a, b, c,... 時表示第 a, b, c,... 分鐘要執行,f2 爲 a, b, c,... 時表示第 a, b, c...個小時要執行,其餘類推

使用者也可以將所有的設定先存放在檔案 file 中,用 crontab file 的方式來設定時程表。
例子 :

每月每天每小時的第 0 分鐘執行一次 /bin/ls :
0 7 * * * /bin/ls

在 12 月內, 每天的早上 6 點到 12 點中,每隔 20 分鐘執行一次 /usr/bin/backup :
0 6-12/3 * 12 * /usr/bin/backup

週一到週五每天下午 5:00 寄一封信給 [email protected] :
0 17 * * 1-5 mail -s "hi" [email protected] < /tmp/maildata

每月每天的午夜 0 點 20 分, 2 點 20 分, 4 點 20 分....執行 echo "haha"
20 0-23/2 * * * echo "haha"

注意 :

當程式在你所指定的時間執行後,系統會寄一封信給你,顯示該程式執行的內容,若是你不希望收到這樣的信,請在每一行空一格之後加上 > /dev/null 2>&1 即可。

名稱 : date
使用權限 : 所有使用者

使用方式 :

date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [--set=datestr] [--help] [--version] [+FORMAT] [MMDDhhmm[[CC]YY][.ss]]

說明 :

date 可以用來顯示或設定系統的日期與時間,在顯示方面,使用者可以設定欲顯示的格式,格式設定爲一個加號後接數個標記,其中可用的標記列表如下 :

時間方面 :

% : 印出 %
%n : 下一行
%t : 跳格
%H : 小時(00..23)
%I : 小時(01..12)
%k : 小時(0..23)
%l : 小時(1..12)
%M : 分鐘(00..59)
%p : 顯示本地 AM 或 PM
%r : 直接顯示時間 (12 小時制,格式爲 hh:mms [AP]M)
%s : 從 1970 年 1 月 1 日 00:00:00 UTC 到目前爲止的秒數
%S : 秒(00..61)
%T : 直接顯示時間 (24 小時制)
%X : 相當於 %H:%M:%S
%Z : 顯示時區

日期方面 :
%a : 星期幾 (Sun..Sat)
%A : 星期幾 (Sunday..Saturday)
%b : 月份 (Jan..Dec)
%B : 月份 (January..December)
%c : 直接顯示日期與時間
%d : 日 (01..31)
%D : 直接顯示日期 (mm/dd/yy)
%h : 同 %b
%j : 一年中的第幾天 (001..366)
%m : 月份 (01..12)
%U : 一年中的第幾周 (00..53) (以 Sunday 爲一週的第一天的情形)
%w : 一週中的第幾天 (0..6)
%W : 一年中的第幾周 (00..53) (以 Monday 爲一週的第一天的情形)
%x : 直接顯示日期 (mm/dd/yy)
%y : 年份的最後兩位數字 (00.99)
%Y : 完整年份 (0000..9999)

若是不以加號作爲開頭,則表示要設定時間,而時間格式爲 MMDDhhmm[[CC]YY][.ss],其中 MM 爲月份,DD 爲日,hh 爲小時,mm 爲分鐘,CC 爲年份前兩位數字,YY 爲年份後兩位數字,ss 爲秒數
把計 :

-d datestr : 顯示 datestr 中所設定的時間 (非系統時間)
--help : 顯示輔助訊息
-s datestr : 將系統時間設爲 datestr 中所設定的時間
-u : 顯示目前的格林威治時間
--version : 顯示版本編號

例子 :
顯示時間後跳行,再顯示目前日期 :
date +%T%n%D

顯示月份與日數 :
date +%B %d

顯示日期與設定時間(12:34:56) :
date --date 12:34:56

注意 :

當你不希望出現無意義的 0 時(比如說 1999/03/07),則可以在標記中插入 - 符號,比如說 date +%-H:%-M:%-S 會把時分秒中無意義的 0 給去掉,像是原本的 08:09:04 會變爲 8:9:4。另外,只有取得權限者(比如說 root)才能設定系統時間。

當你以 root 身分更改了系統時間之後,請記得以 clock -w 來將系統時間寫入 CMOS 中,這樣下次重新開機時系統時間纔會持續抱持最新的正確值。


名稱 : sleep
使用權限 : 所有使用者

使用方式 : sleep [--help] [--version] number[smhd]

說明 : sleep 可以用來將目前動作延遲一段時間

參數說明 :

--help : 顯示輔助訊息
--version : 顯示版本編號
number : 時間長度,後面可接 s、m、h 或 d
其中 s 爲秒,m 爲 分鐘,h 爲小時,d 爲日數

例子 :
顯示目前時間後延遲 1 分鐘,之後再次顯示時間 :
date;sleep 1m;date

 

名稱: time
使用權限: 所有使用者

使用方式: time [options] COMMAND [arguments]

說明: time 指令的用途,在於量測特定指令執行時所需消耗的時間及系統資源等資訊。例如 CPU 時間、記憶體、輸入輸出等等。需要特別注意的是,部分資訊在 Linux 上顯示不出來。這是因爲在 Linux 上部分資源的分配函式與 time 指令所預設的方式並不相同,以致於 time 指令無法取得這些資料。

把計

-o or --output=FILE
設定結果輸出檔。這個選項會將 time 的輸出寫入 所指定的檔案中。如果檔案已經存在,系統將覆寫其內容。
-a or --append
配合 -o 使用,會將結果寫到檔案的末端,而不會覆蓋掉原來的內容。
-f FORMAT or --format=FORMAT
以 FORMAT 字串設定顯示方式。當這個選項沒有被設定的時候,會用系統預設的格式。不過你可以用環境變數 time 來設定這個格式,如此一來就不必每次登入系統都要設定一次。
一般設定上,你可以用
t
表示跳欄,或者是用
n
表示換行。每一項資料要用 % 做爲前導。如果要在字串中使用百分比符號,就用 。(學過 C 語言的人大概會覺得很熟悉)
time 指令可以顯示的資源有四大項,分別是:

Time resources
Memory resources
IO resources
Command info

詳細的內容如下:


Time Resources
E 執行指令所花費的時間,格式是:[hour]:minuteecond。請注意這個數字並不代表實際的 CPU 時間。
e 執行指令所花費的時間,單位是秒。請注意這個數字並不代表實際的 CPU 時間。
S 指令執行時在覈心模式(kernel mode)所花費的時間,單位是秒。
U 指令執行時在使用者模式(user mode)所花費的時間,單位是秒。
P 執行指令時 CPU 的佔用比例。其實這個數字就是核心模式加上使用者模式的 CPU 時間除以總時間。


Memory Resources
M 執行時所佔用的實體記憶體的最大值。單位是 KB
t 執行時所佔用的實體記憶體的平均值,單位是 KB
K 執行程序所佔用的記憶體總量(stack+data+text)的平均大小,單位是 KB
D 執行程序的自有資料區(unshared data area)的平均大小,單位是 KB
p 執行程序的自有堆疊(unshared stack)的平均大小,單位是 KB
X 執行程序間共享內容(shared text)的平均值,單位是 KB
Z 系統記憶體頁的大小,單位是 byte。對同一個系統來說這是個常數


IO Resources
F 此程序的主要記憶體頁錯誤發生次數。所謂的主要記憶體頁錯誤是指某一記憶體頁已經置換到置換檔(swap file)中,而且已經分配給其他程序。此時該頁的內容必須從置換檔裏再讀出來。
R 此程序的次要記憶體頁錯誤發生次數。所謂的次要記憶體頁錯誤是指某一記憶體頁雖然已經置換到置換檔中,但尚未分配給其他程序。此時該頁的內容並未被破壞,不必從置換檔裏讀出來
W 此程序被交換到置換檔的次數
c 此程序被強迫中斷(像是分配到的 CPU 時間耗盡)的次數
w 此程序自願中斷(像是在等待某一個 I/O 執行完畢,像是磁碟讀取等等)的次數
I 此程序所輸入的檔案數
O 此程序所輸出的檔案數
r 此程序所收到的 Socket Message
s 此程序所送出的 Socket Message
k 此程序所收到的信號 ( Signal )數量


Command Info
C 執行時的參數以及指令名稱
x 指令的結束代碼 ( Exit Status )

 


-p or --portability
這個選項會自動把顯示格式設定成爲:
real %e
user %U
sys %S
這麼做的目的是爲了與 POSIX 規格相容。
-v or --verbose
這個選項會把所有程式中用到的資源通通列出來,不但如一般英文語句,還有說明。對不想花時間去熟習格式設定或是剛剛開始接觸這個指令的人相當有用。

範例:
利用下面的指令
time -v ps -aux

我們可以獲得執行 ps -aux 的結果和所花費的系統資源。如下面所列的資料:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.4 1096 472 ? S Apr19 0:04 init
root 2 0.0 0.0 0 0 ? SW Apr19 0:00 [kflushd]
root 3 0.0 0.0 0 0 ? SW Apr19 0:00 [kpiod]
......
root 24269 0.0 1.0 2692 996 pts/3 R 12:16 0:00 ps -aux

Command being timed: "ps -aux"
User time (seconds): 0.05
System time (seconds): 0.06
Percent of CPU this job got: 68%
Elapsed (wall clock) time (h:mms or ms): 0:00.16
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 0
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 238
Minor (reclaiming a frame) page faults: 46
Voluntary context switches: 0
Involuntary context switches: 0
Swaps: 0
File system inputs: 0
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0

 

名稱: uptime
使用權限: 所有使用者
使用方式: uptime [-V]
說明: uptime 提供使用者下面的資訊,不需其他參數:

現在的時間
系統開機運轉到現在經過的時間
連線的使用者數量
最近一分鐘,五分鐘和十五分鐘的系統負載
參數: -V 顯示版本資訊。
範例: uptime
其結果爲:
10:41am up 5 days, 10 min, 1 users, load average: 0.00, 0.00, 1.99

名稱:chfn

使用權限:所有使用者

用法:shell>> chfn

說明:提供使用者更改個人資訊,用於 finger and mail username

範例:

shell>> chfn
Changing finger information for user
Password: [del]
Name[]:Johnney Huang ### 提供 finger 時的資料
Office[]:NCCU
Office Phone[]: [del]
Home Phone[]: [del]


名稱:chsh

使用權限:所有使用者

用法:shell>> chsh

說明:更改使用者 shell 設定

範例:

shell>> chsh
Changing fihanging shell for user1
Password: [del]
New shell [/bin/tcsh]: ### [是目前使用的 shell]
[del]

shell>> chsh -l ### 展示 /etc/shells 檔案內容
/bin/bash
/bin/sh
/bin/ash
/bin/bsh
/bin/tcsh
/bin/csh

 

” finger [返回]
名稱: finger
使用權限: 所有使用者

使用方式: finger [options] user[@address]

說明:finger 可以讓使用者查詢一些其他使用者的資料。會列出來的資料有:

Login Name
User Name
Home directory
Shell
Login status
mail status
.plan
.project
.forward

其中 .plan ,.project 和 .forward 就是使用者在他的 Home Directory 裏的 .plan , .project 和 .forward 等檔案裏的資料。如果沒有就沒有。finger 指令並不限定於在同一伺服器上查詢,也可以尋找某一個遠端伺服器上的使用者。只要給一個像是 E-mail address 一般的地址即可。
把計

-l
多行顯示。

-s
單行顯示。這個選項只顯示登入名稱,真實姓名,終端機名稱,閒置時間,登入時間,辦公室號碼及電話號碼。如果所查詢的使用者是遠端伺服器的使用者,這個選項無效。

範例:下列指令可以查詢本機管理員的資料:
finger root

其結果如下:
Login: root Name: root
Directory: /root Shell: /bin/bash
Never logged in.
No mail.
No Plan.

 


名稱:last

使用權限:所有使用者

使用方式:shell>> last [options]

說明:顯示系統開機以來獲是從每月初登入者的訊息

把計

-R 省略 hostname 的欄位
-num 展示前 num 個
username 展示 username 的登入訊息
tty 限制登入訊息包含終端機代號

範例:

shell>> last -R -2
johnney pts/1 Mon Aug 14 20:42 still logged in
johnney pts/0 Mon Aug 14 19:59 still logged in

wtmp begins Tue Aug 1 09:01:10 2000 ### /var/log/wtmp


shell>> last -2 minery
minery pts/0 140.119.217.115 Mon Aug 14 18:37 - 18:40 (00:03)
minery pts/0 140.119.217.115 Mon Aug 14 17:22 - 17:24 (00:02)

wtmp begins Tue Aug 1 09:01:10 2000

 


名稱:login

這個命令都不會就不要幹算了!呵呵我也不在這裏多費筆墨耽誤大家美好青春了^_^

 

名稱:passwd

使用權限:所有使用者

使用方式:passwd [-k] [-l] [-u [-f]] [-d] [-S] [username]

說明:用來更改使用者的密碼

參數:
-k

-l

-u

-f

-d 關閉使用者的密碼認證功能, 使用者在登入時將可以不用輸入密碼, 只有具備 root 權限的使用者方可使用.

-S 顯示指定使用者的密碼認證種類, 只有具備 root 權限的使用者方可使用.

[username] 指定帳號名稱.

 

名稱 : who
使用權線 : 所有使用者都可使用

使用方式 : who - [husfV] [user]

說明 : 顯示系統中有那些使用者正在上面,顯示的資料包含了使用者 ID,使用的終端機,從那邊連上來的,上線時間,呆滯時間,CPU 使用量,動作等等。

把計 :

-h : 不要顯示標題列
-u : 不要顯示使用者的動作/工作
-s : 使用簡短的格式來顯示
-f : 不要顯示使用者的上線位置
-V : 顯示程式版本
名稱:/etc/aliases
使用權限:系統管理者
使用方式: 請用 newaliases 更新資料庫
說明:
sendmail 會使用一個在 /etc/aliases 中的檔案做使用者名稱轉換的動作。當 sendmail 收到一個要送給 xxx 的信時,它會依據 aliases檔的內容送給另一個使用者。這個功能可以創造一個只有在信件系統內纔有效的使用者。例如 mailing list 就會用到這個功能,在 mailinglist 中,我們可能會創造一個叫 [email protected] 的 mailinglist,但實際上並沒有一個叫 redlinux 的使用者。實際 aliases 檔的內容是將送給這個使用者的信都收給 mailing list 處理程式負責分送的工作。

/etc/aliases 是一個文字模式的檔案,sendmail 需要一個二進位格式的 /etc/aliases.db。newaliases 的功能傳是將 /etc/aliases 轉換成一個 sendmail 所能瞭解的資料庫。範例:
# newaliases

下面命令會做相同的事,
# sendmail -bi

相關命令:
mail, mailq, newaliases, sendmail

” mail [返回]
名稱:mail

使用權限:所有使用者


使用方式:mail [-iInv] [-s subject] [-c cc-addr] [-b bcc-addr] user1 [user 2 ...]


說明:
mail 不僅只是一個指令, mail 還是一個電子郵件程式,不過利用 mail 來讀信的人應該很少吧!對於系統管理者來說 mail 就很有用,因爲管理者可以用 mail 寫成 script ,定期寄一些備忘錄提醒系統的使用者。


參數:
i 忽略 tty 的中斷訊號。 (interrupt)
I 強迫設成互動模式。 (Interactive)
v 列印出訊息,例如送信的地點、狀態等等。 (verbose)
n 不讀入 mail.rc 設定檔。
s 郵件標題。
c cc 郵件地址。
b bcc 郵件地址。


範例:


將信件送給一個或以上的電子郵件地址,由於沒有加入其他的選項,使用者必須輸入標題與信件的內容等。而 user2 沒有主機位置,就會送給郵件伺服器的 user2 使用者。

 

mail [email protected]
mail [email protected] user2

 

將 mail.txt 的內容寄給 user2 同時 cc 給 user1 。如果將這一行指令設成 cronjob 就可以定時將備忘錄寄給系統使用者。

mail -s 標題 -c user1 user2 < mail.txt

 

指令:mesg
使用權限 : 所有使用者

使用方式 : mesg [y|n]

說明 : 決定是否允許其他人傳訊息到自己的終端機介面


把計 

y : 允許訊息傳到終端機介面上。
n : 不允許訊息傳到終端機介面上 。
如果沒有設定,則訊息傳遞與否則由終端機界面目前狀態而定。

例子 :
改變目前訊息設定,改成不允許訊息傳到終端機介面上 :
mesg n


與 mesg 相關的指令有: talk,write,wall。


名稱:/etc/aliases
使用權限:系統管理者
使用方式: newaliases
說明:
sendmail 會使用一個在 /etc/aliases 中的檔案做使用者名稱轉換的動作。當 sendmail 收到一個要送給 xxx 的信時,它會依據 aliases檔的內容送給另一個使用者。這個功能可以創造一個只有在信件系統內纔有效的使用者。例如 mailing list 就會用到這個功能,在 mailinglist 中,我們可能會創造一個叫 [email protected] 的 mailinglist,但實際上並沒有一個叫 redlinux 的使用者。實際 aliases 檔的內容是將送給這個使用者的信都收給 mailing list 處理程式負責分送的工作。

/etc/aliases 是一個文字模式的檔案,sendmail 需要一個二進位格式的 /etc/aliases.db。newaliases 的功能傳是將 /etc/aliases 轉換成一個 sendmail 所能瞭解的資料庫。

參數:沒有任何參數。 範例:
# newaliases

下面命令會做相同的事,
# sendmail -bi

相關命令:
mail, mailq, newaliases, sendmail

 

名稱 : talk
使用權限 : 所有使用者

使用方式 :

talk person [ttyname]
說明 : 與其他使用者對談

把計 :

person : 預備對談的使用者帳號,如果該使用者在其他機器上,則可輸入 [email protected]
ttyname : 如果使用者同時有兩個以上的 tty 連線,可以自行選擇合適的 tty 傳訊息

例子.1 :

與現在機器上的使用者Rollaend對談,此時 Rollaend 只有一個連線 :
talk Rollaend


接下來就是等Rollaend迴應,若Rollaend接受,則Rollaend輸入 ****talk jzlee****即可開始對談,結束請按 ctrl+c

例子.2 :與linuxfab.cx上的使用者Rollaend對談,使用pts/2來對談 :
talk [email protected] pts/2


接下來就是等Rollaend迴應,若Rollaend接受,則Rollaend輸入 ****talk [email protected]****即可開始對談,結束請按 ctrl+c

注意 : 若螢幕的字會出現不正常的字元,試着按 ctrl+l 更新螢幕畫面。


名稱 : wall
使用權限 : 所有使用者

使用方式 :

wall [ message ]
使用說明:
wall 會將訊息傳給每一個 mesg 設定爲 yes 的上線使用者。當使用終端機介面做爲標準傳入時, 訊息結束時需加上 EOF (通常用 Ctrl+D)

例子 :

傳訊息"hi" 給每一個使用者 :
wall hi

 


名稱 : write
使用權限 : 所有使用者

使用方式 :

write user [ttyname]
說明 : 傳訊息給其他使用者

把計 :

user : 預備傳訊息的使用者帳號
ttyname : 如果使用者同時有兩個以上的 tty 連線,可以自行選擇合適的 tty 傳訊息

例子.1 :

傳訊息給 Rollaend,此時 Rollaend 只有一個連線 :
write Rollaend


接下來就是將訊息打上去,結束請按 ctrl+c

例子.2 :傳訊息給 Rollaend,Rollaend 的連線有 pts/2,pts/3 :
write Rollaend pts/2


接下來就是將訊息打上去,結束請按 ctrl+c

注意 : 若對方設定 mesg n,則此時訊席將無法傳給對方

名稱:kill
使用權限:所有使用者

使用方式:

kill [ -s signal | -p ] [ -a ] pid ...
kill -l [ signal ]
說明:kill 送出一個特定的信號 (signal) 給行程 id 爲 pid 的行程根據該信號而做特定的動作, 若沒有指定, 預設是送出終止 (TERM) 的信號
把計

-s (signal) : 其中可用的訊號有 HUP (1), KILL (9), TERM (15), 分別代表着重跑, 砍掉, 結束; 詳細的信號可以用 kill -l
-p : 印出 pid , 並不送出信號
-l (signal) : 列出所有可用的信號名稱
範例:

將 pid 爲 323 的行程砍掉 (kill) :
kill -9 323

將 pid 爲 456 的行程重跑 (restart) :
kill -HUP 456

 


名稱:nice
使用權限:所有使用者

使用方式:nice [-n adjustment] [-adjustment] [--adjustment=adjustment] [--help] [--version] [command [arg...]]

說明:以更改過的優先序來執行程式, 如果未指定程式, 則會印出目前的排程優先序, 內定的 adjustment 爲 10, 範圍爲 -20 (最高優先序) 到 19 (最低優先序)


把計

-n adjustment, -adjustment, --adjustment=adjustment 皆爲將該原有優先序的增加 adjustment
--help 顯示求助訊息
--version 顯示版本資訊
範例:
將 ls 的優先序加 1 並執行 :
nice -n 1 ls

將 ls 的優先序加 10 並執行 :
nice ls將 ls 的優先序加 10 並執行

注意 : 優先序 (priority) 爲作業系統用來決定 CPU 分配的參數,Linux 使用『回合制(round-robin)』的演算法來做 CPU 排程,優先序越高,所可能獲得的 CPU時間就越多。

 

名稱:ps
使用權限:所有使用者
使用方式:ps [options] [--help]
說明:顯示瞬間行程 (process) 的動態
參數:
ps 的參數非常多, 在此僅列出幾個常用的參數並大略介紹含義
-A 列出所有的行程
-w 顯示加寬可以顯示較多的資訊
-au 顯示較詳細的資訊
-aux 顯示所有包含其他使用者的行程

au(x) 輸出格式 :

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
USER: 行程擁有者
PID: pid
%CPU: 佔用的 CPU 使用率
%MEM: 佔用的記憶體使用率
VSZ: 佔用的虛擬記憶體大小
RSS: 佔用的記憶體大小
TTY: 終端的次要裝置號碼 (minor device number of tty)
STAT: 該行程的狀態:
D: 不可中斷的靜止 (通悸□□縝b進行 I/O 動作)
R: 正在執行中
S: 靜止狀態
T: 暫停執行
Z: 不存在但暫時無法消除
W: 沒有足夠的記憶體分頁可分配
<: 高優先序的行程
N: 低優先序的行程
L: 有記憶體分頁分配並鎖在記憶體內 (即時系統或捱A I/O)
START: 行程開始時間
TIME: 執行的時間
COMMAND:所執行的指令

範例:

ps
PID TTY TIME CMD
2791 ttyp0 00:00:00 tcsh
3092 ttyp0 00:00:00 ps
% ps -A
PID TTY TIME CMD
1 ? 00:00:03 init
2 ? 00:00:00 kflushd
3 ? 00:00:00 kpiod
4 ? 00:00:00 kswapd
5 ? 00:00:00 mdrecoveryd
.......
% ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.7 1096 472 ? S Sep10 0:03 init [3]
root 2 0.0 0.0 0 0 ? SW Sep10 0:00 [kflushd]
root 3 0.0 0.0 0 0 ? SW Sep10 0:00 [kpiod]
root 4 0.0 0.0 0 0 ? SW Sep10 0:00 [kswapd]
........

 

名稱:pstree
使用權限:所有使用者
使用方式:
pstree [-a] [-c] [-h|-Hpid] [-l] [-n] [-p] [-u] [-G|-U] [pid|user]
pstree -V
說明:將所有行程以樹狀圖顯示, 樹狀圖將會以 pid (如果有指定) 或是以 init 這個基本行程爲根 (root) ,如果有指定使用者 id , 則樹狀圖會只顯示該使用者所擁有的行程
參數:
-a 顯示該行程的完整指令及參數, 如果是被記憶體置換出去的行程則會加上括號
-c 如果有重覆的行程名, 則分開列出 (預設值是會在前面加上 *
範例:

pstree

init-+-amd
|-apmd
|-atd
|-httpd---10*[httpd]
%pstree -p
init(1)-+-amd(447)
|-apmd(105)
|-atd(339)
%pstree -c
init-+-amd
|-apmd
|-atd
|-httpd-+-httpd
| |-httpd
| |-httpd
| |-httpd
....

 

名稱:renice
使用權限:所有使用者

使用方式:renice priority [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]

說明:重新指定一個或多個行程(Process)的優先序(一個或多個將根據所下的參數而定)

把計

-p pid 重新指定行程的 id 爲 pid 的行程的優先序
-g pgrp 重新指定行程羣組(process group)的 id 爲 pgrp 的行程 (一個或多個) 的優先序
-u user 重新指定行程擁有者爲 user 的行程的優先序
範例:
將行程 id 爲 987 及 32 的行程與行程擁有者爲 daemon 及 root 的優先序號碼加 1 :
renice +1 987 -u daemon root -p 32

注意 : 每一個行程(Process)都有一個唯一的 (unique) id

 

名稱:top
使用權限:所有使用者

使用方式:top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]

說明:即時顯示 process 的動態

把計

d : 改變顯示的更新速度,或是在交談式指令列( interactive command)按 s
q : 沒有任何延遲的顯示速度,如果使用者是有 superuser 的權限,則 top 將會以最高的優先序執行
c : 切換顯示模式,共有兩種模式,一是隻顯示執行檔的名稱,另一種是顯示完整的路徑與名稱S : 累積模式,會將己完成或消失的子行程 ( dead child process ) 的 CPU time 累積起來
s : 安全模式,將交談式指令取消, 避免潛在的危機
i : 不顯示任何閒置 (idle) 或無用 (zombie) 的行程
n : 更新的次數,完成後將會退出 top
b : 批次檔模式,搭配 "n" 參數一起使用,可以用來將 top 的結果輸出到檔案內

範例:
顯示更新十次後退出 ;
top -n 10

使用者將不能利用交談式指令來對行程下命令 :
top -s

將更新顯示二次的結果輸入到名稱爲 top.log 的檔案裏 :
top -n 2 -b < top.log

名稱:skill

使用權限:所有使用者

使用方式: skill [signal to send] [options] 選擇程序的規則

說明:

送個訊號給正在執行的程序,預設的訊息爲 TERM (中斷) , 較常使用的訊息爲 HUP , INT , KILL , STOP , CONT ,和 0

訊息有三種寫法:分別爲 -9 , -SIGKILL , -KILL , 可以使用 -l 或 -L 已列出可使用的訊息。

一般參數:

-f 快速模式/尚未完成

-i 互動模式/ 每個動作將要被確認

-v 詳細輸出/ 列出所選擇程序的資訊

-w 智能警告訊息/ 尚未完成

-n 沒有動作/ 顯示程序代號

參數:選擇程序的規則可以是, 終端機代號,使用者名稱,程序代號,命令名稱。

-t 終端機代號 ( tty 或 pty )

-u 使用者名稱

-p 程序代號 ( pid )

-c 命令名稱 可使用的訊號:

以下列出已知的訊號名稱,訊號代號,功能。

名稱 (代號) 功能/ 描述

ALRM 14 離開

HUP 1 離開

INT 2 離開

KILL 9 離開/ 強迫關閉

PIPE 13 離開

POLL 離開

PROF 離開

TERM 15 離開

USR1 離開

USR2 離開

VTALRM 離開

STKFLT 離開/ 只適用於i386, m68k, arm 和 ppc 硬體

UNUSED 離開/ 只適用於i386, m68k, arm 和 ppc 硬體

TSTP 停止 /產生與內容相關的行爲

TTIN 停止 /產生與內容相關的行爲

TTOU 停止 /產生與內容相關的行爲

STOP 停止 /強迫關閉

CONT 從新啓動 /如果在停止狀態則從新啓動,否則忽略

PWR 忽略 /在某些系統中會離開

WINCH 忽略

CHLD 忽略

ABRT 6 核心

FPE 8 核心

ILL 4 核心

QUIT 3 核心

SEGV 11 核心

TRAP 5 核心

SYS 核心 /或許尚未實作

EMT 核心 /或許尚未實作

BUS 核心 /核心失敗

XCPU 核心 /核心失敗

XFSZ 核心 /核心失敗

範例:

停止所有在 PTY 裝置上的程序
skill -KILL -v pts/*

停止三個使用者 user1 , user2 , user3
skill -STOP user1 user2 user3

 

其他相關的命令: kill

 

名稱:expr

使用權限:所有使用者
### 字串長度

shell>> expr length "this is a test"
14

### 數字商數

shell>> expr 14 % 9
5

### 從位置處抓取字串

shell>> expr substr "this is a test" 3 5
is is

### 數字串 only the first character

shell>> expr index "testforthegame" e
2

### 字串真實重現

shell>> expr quote thisisatestformela
thisisatestformela

 


名稱: tr

### 1.比方說要把目錄下所有的大寫檔名換爲小寫檔名?

似乎有很多方式,"tr"是其中一種:

#!/bin/sh

dir="/tmp/testdir";
files=****find $dir -type f****;
for i in $files
do
dir_name=****dirname $i****;
ori_filename=****basename $i****
new_filename=****echo $ori_filename | tr [:upper:] [:lower:]**** > /dev/null;
#echo $new_filename;
mv $dir_name/$ori_filename $dir_name/$new_filename
done


### 2.自己試驗中...lowercase to uppercase

tr abcdef...[del] ABCDE...[del]
tr a-z A-Z
tr [:lower:] [:upper:]

shell>> echo "this is a test" | tr a-z A-Z > www
shell>> cat www
THIS IS A TEST

### 3.去掉不想要的字串

shell>> tr -d this ### 去掉有關 t.e.s.t
this

man
man
test
e

### 4.取代字串

shell>> tr -s "this" "TEST"
this
TEST
th
TE

 


指令:clear
用途:清除螢幕用。

使用方法:在 console 上輸入 clear。


名稱: reset, tset
使用方法: tset [-IQqrs] [-] [-e ch] [-i ch] [-k ch] [-m mapping] [terminal]

使用說明:

reset 其實和 tset 是一同個命令,它的用途是設定終端機的狀態。一般而言,這個命令會自動的從環境變數、命令列或是其它的組態檔決定目前終端機的型態。如果指定型態是 ? 的話,這個程式會要求使用者輸入終端機的型別。

由於這個程式會將終端機設回原始的狀態,除了在 login 時使用外,當系統終端機因爲程式不正常執行而進入一些奇怪的狀態時,你也可以用它來重設終端機o 例如不小心把二進位檔用 cat 指令進到終端機,常會有終端機不再回應鍵盤輸入,或是迴應一些奇怪字元的問題。此時就可以用 reset 將終端機回覆至原始狀態。選項說明:


-p
將終端機類別顯示在螢幕上,但不做設定的動作。這個命令可以用來取得目前終端機的類別。
-e ch
將 erase 字元設成 ch
-i ch
將中斷字元設成 ch
-k ch
將刪除一行的字元設成 ch
-I
不要做設定的動作,如果沒有使用選項 -Q 的話,erase、中斷及刪除字元的目前值依然會送到螢幕上。
-Q
不要顯示 erase、中斷及刪除字元的值到螢幕上。
-r
將終端機類別印在螢幕上。
-s
將設定 TERM 用的命令用字串的型式送到終端機中,通常在 .login 或 .profile 中用
範例:
讓使用者輸入一個終端機型別並將終端機設到該型別的預設狀態。
# reset ?

 

將 erase 字元設定 control-h
# reset -e ^B

 

將設定用的字串顯示在螢幕上
# reset -s
Erase is control-B (^B).
Kill is control-U (^U).
Interrupt is control-C (^C).
TERM=xterm;

名稱:compress

使用權限:所有使用者


使用方式:compress [-dfvcV] [-b maxbits] [file ...]


說明:
compress 是一個相當古老的 unix 檔案壓縮指令,壓縮後的檔案會加上一個 .Z 延伸檔名以區別未壓縮的檔案,壓縮後的檔案可以以 uncompress 解壓。若要將數個檔案壓成一個壓縮檔,必須先將檔案 tar 起來再壓縮。由於 gzip 可以產生更理想的壓縮比例,一般人多已改用 gzip 爲檔案壓縮工具。


參數:
c 輸出結果至標準輸出設備(一般指熒幕)
f 強迫寫入檔案,若目的檔已經存在,則會被覆蓋 (force)
v 將程式執行的訊息印在熒幕上 (verbose)
b 設定共同字串數的上限,以位元計算,可以設定的值爲 9 至 16 bits 。由於值越大,能使用的共同字串就 越多,壓縮比例就越大,所以一般使用預設值 16 bits (bits)
d 將壓縮檔解壓縮
V 列出版本訊息


範例:


將 source.dat 壓縮成 source.dat.Z ,若 source.dat.Z 已經存在,內容則會被壓縮檔覆蓋。

 

compress -f source.dat

 

將 source.dat 壓縮成 source.dat.Z ,並列印出壓縮比例。
-v 與 -f 可以一起使用

 

compress -vf source.dat

 

將壓縮後的資料輸出後再導入 target.dat.Z 可以改變壓縮檔名。

 

compress -c source.dat > target.dat.Z

 

-b 的值越大,壓縮比例就越大,範圍是 9-16 ,預設值是 16 。

 

compress -b 12 source.dat

 

將 source.dat.Z 解壓成 source.dat ,若檔案已經存在,使用者按 y 以確定覆蓋檔案,若使用 -df 程式則會自動覆蓋檔案。由於系統會自動加入 .Z 爲延伸檔名,所以 source.dat 會自動當作 source.dat.Z 處理。

 

compress -d source.dat
compress -d source.dat.Z

 


名稱: lpd

使用權限: 所有使用者

使用方式:lpd [-l] [#port]
lpd 是一個常駐的印表機管理程式,它會根據 /etc/printcap 的內容來管理本地或遠端的印表機。/etc/printcap 中定義的每一個印表機必須在 /var/lpd 中有一個相對應的目錄,目錄中以 cf 開頭的檔案表示一個等待送到適當裝置的印表工作。這個檔案通常是由 lpr 所產生。

lpr 和 lpd 組成了一個可以離線工作的系統,當你使用 lpr 時,印表機不需要能立即可用,甚至不用存在。lpd 會自動監視印表機的狀況,當印表機上線後,便立即將檔案送交處理。這個得所有的應用程式不必等待印表機完成前一工作。

參數:


-l: 將一些除錯訊息顯示在標準輸出上。
#port: 一般而言,lpd 會使用 getservbyname 取得適當的 TCP/IP port,你可以使用這個參數強迫 lpd 使用指定的 port。

範例:
這個程式通常是由 /etc/rc.d 中的程式在系統啓始階段執行。

 

名稱 lpq
-- 顯示列表機貯列中未完成的工作 用法

lpq [l] [P] [user]

說明
lpq 會顯示由 lpd 所管理的列表機貯列中未完成的項目。

範例
範例 1. 顯示所有在 lp 列表機貯列中的工作


# lpq -PlpRank Owner Job Files Total Size1st root 238 (standard input) 1428646 bytes

 


相關函數
lpr,lpc,lpd

 

名稱: lpr

使用權限: 所有使用者

使用方式:lpr [ -P printer ]
將檔案或是由標準輸入送進來的資料送到印表機貯列之中,印表機管理程式 lpd 會在稍後將這個檔案送給適當的程式或裝置處理。lpr 可以用來將料資送給本地或是遠端的主機來處理。

參數:


-p Printer: 將資料送至指定的印表機 Printer,預設值爲 lp。

範例:
將 www.c 和 kkk.c 送到印表機 lp。
lpr -Plp www.c kkk.c

 


名稱: lprm
-- 將一個工作由印表機貯列中移除 用法

/usr/bin/lprm [P] [file...]

說明
尚未完成的印表機工作會被放在印表機貯列之中,這個命令可用來將常未送到印表機的工作取消。由於每一個印表機都有一個獨立的貯列,你可以用 -P 這個命令設定想要作用的印列機。如果沒有設定的話,會使用系統預設的印表機。

這個命令會檢查使用者是否有足夠的權限刪除指定的檔案,一般而言,只有檔案的擁有者或是系統管理員纔有這個權限。

範例
將印表機 hpprinter 中的第 1123 號工作移除


lprm -Phpprinter 1123


將第 1011 號工作由預設印表機中移除


lprm 1011

 


名稱: fdformat

使用權限: 所有使用者

使用方式:fdformat [-n] device

使用說明 :
對指定的軟碟機裝置進行低階格式化。使用這個指令對軟碟格式化的時候,最好指定像是下面的裝置:


/dev/fd0d360 磁碟機 A: ,磁片爲 360KB 磁碟
/dev/fd0h1440 磁碟機 A: ,磁片爲 1.4MB 磁碟
/dev/fd1h1200 磁碟機 B: ,磁片爲 1.2MB 磁碟
如果使用像是 /dev/fd0 之類的裝置,如果裏面的磁碟不是標準容量,格式化可能會失敗。在這種情況之下,使用者可以用 setfdprm 指令先行指定必要參數。

參數:


-n 關閉確認功能。這個選項會關閉格式化之後的確認步驟。

範例:

fdformat -n /dev/fd0h1440

將磁碟機 A 的磁片格式化成 1.4MB 的磁片。並且省略確認的步驟。

 

名稱: mformat

使用權限: 所有使用者

使用方式:

mformat [-t cylinders] [-h heads] [-s sectors] [-l volume_label] [-F] [-I fsVer-sion] [-S sizecode] [-2 sectors_on_track_0] [-M software_sector_size] [-a] [-X] [-C] [-H hidden_sectors] [-r root_sectors] [-B boot_sector] [-0 rate_on_track_0] [-A rate_on_other_tracks] [-1] [-k] drive:

在已經做過低階格式化的磁片上建立 DOS 檔案系統。如果在編譯 mtools 的時候把 USE_2M 的參數打開,部分與 2M 格式相關的參數就會發生作用。否則這些參數(像是 S,2,1,M)不會發生作用。

參數:

-t 磁柱(synlider)數
-h 磁頭(head)數
-s 每一磁軌的磁區數
-l 標籤
-F 將磁碟格式化爲 FAT32 格式,不過這個參數還在實驗中。
-I 設定 FAT32 中的版本號。這當然也還在實驗中。
-S 磁區大小代碼,計算方式爲 sector = 2^(大小代碼+7)
-c 磁叢(cluster)的磁區數。如果所給定的數字會導致磁叢數超過 FAT 表的限制,mformat 會自動放大磁區數。
-s
-M 軟體磁區大小。這個數字就是系統回報的磁區大小。通常是和實際的大小相同。
-a 如果加上這個參數,mformat 會產生一組 Atari 系統的序號給這塊軟碟。
-X 將軟碟格式化成 XDF 格式。使用前必須先用 xdfcopy 指令對軟碟作低階格式化的動作。
-C 產生一個可以安裝 MS-DOS 檔案系統的磁碟影像檔(disk image)。當然對一個實體磁碟機下這個參數是沒有意義的。
-H 隱藏磁區的數目。這通常適用在格式化硬碟的分割區時,因爲通常一個分割區的前面還有分割表。這個參數未經測試,能不用就不用。
-n 磁碟序號
-r 根目錄的大小,單位是磁區數。這個參數只對 FAT12 和 FAT16 有效。
-B 使用所指定的檔案或是設備的開機磁區做爲這片磁片或分割區的開機磁區。當然當中的硬體參數會隨之更動。
-k 儘量保持原有的開機磁區。
-0 第 0 軌的資料傳輸率
-A 第 0 軌以外的資料傳輸率
-2 使用 2m 格式
-1 不使用 2m 格式

範例:
mformat a:

這樣會用預設值把 a: (就是 /dev/fd0)裏的磁碟片格式化。

 

名稱: mkdosfs

使用權限: 所有使用者

使用方式: mkdosfs [ -c | -l filename ]
[ -f number_of_FATs ]
[ -F FAT_size ]
[ -i volume_id ]
[ -m message_file ]
[ -n volume_name ]
[ -r root_dir_entry ]
[ -s sector_per_cluster ]
[ -v ]
device
[ block_count ]

 

說明: 建立 DOS 檔案系統。 device 指你想要建立 DOS 檔案系統的裝置代號。像是 /dev/hda1 等等。 block_count 則是你希望配置的區塊數。如果 block_count 沒有指定則系統會自動替你計算符合該裝置大小的區塊數。

參數:


-c 建立檔案系統之前先檢查是否有壞軌。
-l 從得定的檔案中讀取壞軌記錄。
-f 指定檔案配置表(FAT , File Allocation Table)的數量。預設值爲 2 。目前 Linux 的 FAT 檔案系統不支援超過 2 個 FAT 表。通常這個不需要改。
-F 指定 FAT 表的大小,通常是 12 或是 16 個位元組。12 位元組通常用於磁碟片,16 位元組用於一般硬碟的分割區,也就是所謂的 FAT16 格式。這個值通常系統會自己選定適當的值。在磁碟片上用 FAT16 通常不會發生作用,反之在硬碟上用 FAT12 亦然。
-i 指定 Volume ID。一般是一個 4 個位元組的數字,像是 2e203a47 。如果不給系統會自己產生。
-m 當使用者試圖用這片磁片或是分割區開機,而上面沒有作業系統時,系統會給使用者一段警告訊息。這個參數就是用來變更這個訊息的。你可以先用檔案編輯好,然後用這個參數指定,或是用
-m -
這樣系統會要求你直接輸入這段文字。要特別注意的是,檔案裏的字串長度不要超過 418 個字,包括展開的跳欄符號(TAB)和換行符號(換行符號在 DOS 底下算兩個字元!)
-n 指定 Volume Name,就是磁碟標籤。如同在 DOS 底下的 format 指令一樣,給不給都可以。沒有預設值。
-r 指定根目錄底下的最大檔案數。這裏所謂的檔案數包括目錄。預設值是在軟碟上是 112 或是 224 ,在硬碟上是 512。沒事不要改這個數字。
-s 每一個磁叢(cluster)的磁區數。必須是 2 的次方數。不過除非你知道你在作什麼,這個值不要亂給。
-v 提供額外的訊息

範例:
mkdosfs -n Tester /dev/fd0 將 A 槽裏的磁碟片格式化爲 DOS 格式,並將標籤設爲 Tester

kingpaul @ 03:55 PM 發表於 linux | 編輯 | 留言 (0) | TrackBack (0)

2004年06月16日

Linux 2.4 Packet Filtering HOWTO 簡體中文版


href="http://202.38.75.11/~jbhuang/blog/css/iptables-styles.css" type="text/css" rel="stylesheet" />Rusty Russell, mailing list [email protected]
$Revision: 1.3 $ $Date: 2002/06/05 13:21:56 $
簡體中文:洋鬼鬼·NetSnake
感謝 網中人[email protected] 提供的繁體參照

此文檔描述在Linux2.4 內核中,如何使用iptables過濾不正確的包
(譯者:Packet在很多專業書籍中譯爲分組,此處根據大部分人的習慣,仍譯爲包)

1. 簡介
2. 官方站點及郵件列表
3. 那麼,什麼是Packet Filter?
3.1 我爲什麼需要Packet Filter?
3.2 如何在Linux下進行包過濾?
3.2.1 iptables
3.2.2 創建永久性規則
4. 你算老幾,憑什麼玩弄我的內核?
5. Rusty的真正的包過濾快速指南
6. 包是如何穿過過濾器的
7. 使用iptables
7.1 當計算機啓動後你會看到的
7.2 對單個規則的操作
7.3 過濾規格
7.3.1 指定源和目的IP地址
7.3.2 反向指定
7.3.3 協議指定
7.3.4 接口指定
7.3.5 分片指定
7.3.6 iptables擴展:新的匹配
7.3.6.1 TCP 擴展
7.3.6.1.1 TCP標誌的解釋
7.3.6.2 UDP 擴展
7.3.6.3 ICMP擴展
7.3.6.4 其他匹配的擴展
7.3.6.5 狀態匹配
7.4 目標規格
7.4.1 用戶定義鏈
7.4.2 iptables擴展:新目標
7.4.3 特殊的內建目標
7.5 對整個鏈進行操作
7.5.1 創建新鏈
7.5.2 刪除鏈
7.5.3 清空一個鏈
7.5.4 對鏈進行列表
7.5.5 重置(清零)計數器
7.5.6 設置原則(默認規則)
8. 使用ipchains和ipfwadm
9. NAT和包過濾的混合使用
10. iptables和ipchains之間的差別
11. 對制定包過濾器的建議
1. 簡介
歡迎,親愛的讀者。
這篇文章假設你知道有關IP地址、網絡地址、網絡掩碼、選路和DNS。如果不知道,我建議你先閱讀網絡概念的HowTo(Network Concepts HOWTO)。
這篇HOWTO並非一個簡要的介紹(會讓你發熱、發毛,沒有安全感),也非一個完全的原始的披露(最吃苦耐勞的人也會被攪暈,不過必定會有所斬獲)。
你的網絡並不安全。問題在於,必須獲取快速、簡潔的通訊,但又必須限於良好的、無惡意的行爲,就如同在嘈雜的大戲院裏,你可以高談闊論,但是絕不能大喊:着火了!。這篇HOWTO不能解決這種問題。
(譯者:所有安全都只是相對的,否則根本不會產生這種東西了)
因此,你只能決定在哪方面妥協。我想幫助你使用一些可用的工具和一些通常需要注意的漏洞,希望你將它們用在好的一面,而不是出於惡意的目的 -- 另一個同樣重要的問題。
(C) 2000 Paul `Rusty' Russell. Licenced under the GNU GPL.

2、 官方站點及郵件列表位置
這裏有三個官方站點:
o Thanks to Filewatcher http://netfilter.filewatcher.org.
o Thanks to The Samba Team and SGI http://netfilter.samba.org.
o Thanks to Harald Welte http://netfilter.gnumonks.org.
你可以通過以下站點訪問全部相關站點。
http://www.netfilter.org and http://www.iptables.org
以下是netfilter官方郵件列表
http://www.netfilter.org/contact.html#list.

3.那麼,什麼是包過濾器?
包過濾器是這樣一種軟件:它檢查通過的每個包的頭部,然後決定如何處置它們。可以這樣對待它們:丟棄(也就是說,如果這個包從未被接受,那麼丟棄它),通過(也就是說,讓包通過),或者更復雜的(操作)。
Linux下,包過濾內建在內核中(內核模塊,或者內建),而且我們還有處理包的一些技巧,不過檢查頭部和處理包的一般性原則仍在這裏。

3.1 我爲何要包過濾?
控制、安全、警戒。
 
控制:
當你用你的Linux服務器把你的內部網和另一個網絡(就是Internet吧)連起來,你可以決定哪些通信是允許的,哪些不允許。例如,包頭部包含了包的目標地址,你可以阻礙包發送到(你)確定的幾個外部網絡,另一個例子,我用NetScape連接到Dilbert archives。頁面上有來自doubleclick.net的廣告,然後NetScape浪費了我的時間愉快的下載他們。 告訴包過濾器禁止任何來自或者發往doubleclick.net地址的包,問題就解決了。(當然有更好的辦法,見Junkbuster)。
 
安全:
當Linux服務器是混亂的Internet和你良好的、有序的網絡之間唯一的東西時, 你最好能知道哪些東西可以進入你的大門。例如,你可以允許所有(包)從你的網絡 發出,不過你可能會爲來自外部的著名的“Ping of Death”而焦急。另一個例子,你不希望 外人telnet到你的Linux服務器,儘管所有賬戶都有密碼。或許你只想(像絕大多數人)成爲 Internet的旁觀者,而非它的服務器(也可能願意是吧)。簡單的不允許任何人接入,設置 包過濾器拒絕所有進入的包(是不錯的辦法)。
 
警戒:
有時,本地網絡上錯誤配置的機器可能會向外部噴射出大量的包。最好是當(網絡中)出現任何不正常現象時,讓包過濾器告訴你。這樣你可能可以做點什麼,或者你天生就很好奇。

3.2 如何在Linux下進行包過濾?
Linux內核在其1.1系列中就有了包過濾功能。第一代,由Alan Cox 1994年移植於BSD的ipfw。這在Linux 2.0中由Jos Vos和其他人進行了加強;用戶空間工具'ipfwadm'可用來控制內核過濾規則。1998年中,我在Michael Neuling的幫助下,爲Linux 2.2進行了重寫,推出了用戶空間工具'ipchains'。最後,1999年中,基於Linux 2.4的第四代工具,'iptables',和其他內核的改寫正式推出。這就是這個iptables的HOWTO文檔的所在。
譯者:userspace根據臺灣同胞的說法,是用來區別系統內存中的適用範圍的,分爲核心空間和使用者空間,不必深究)
你需要包含netfilter架構的內核。netfilter是Linux中的一個通用框架,也可以插入(plug in)其他內容(如iptables模塊)。也就是說你需要2.3.15及以後版本,而且在配置內核時對CONFIG_NETFILTER回答'Y'。
iptables這個工具用來和內核交互並告訴它哪些包應該過濾。除非你是程序員或者 特別好奇,否則這就是你用來控制包過濾的了。

3.2.1. iptables
iptables工具向內核的包過濾表中插入和刪除規則。這就意味着無論怎樣設置,啓動後信息都會丟失;請參看“制定永久性規則”(Making Rules Permanent)來確定如何保證下次啓動這些規則能被恢復。
iptables是ipfwadm和ipchains的替代品。如果你是它們的使用者,請參看 “使用ipchains和ipfwadm”,如何輕鬆使用iptables。

3.2.2 創建永久性規則
你當前的防火牆設置保存在內核中,所以重啓後就會丟失。你可以試着用iptables-save和iptables-restore腳本來保存他們,並由一個文件恢復。

4. 你算老幾,憑什麼玩弄我的內核?
我是Rusty Russell。Linux IP防火牆的維護者,也是一個適當的時候出現在適當的地方的coder。我寫了ipchains(參見“如何在Linux下進行包過濾?”看看實際的工作其實由哪些人完成),並希望能學到足夠的東西修正這次的包過濾。
WatchGuard,一個非常出色的防火牆公司,總之一堆廣告,此處省略一千字……
在此,我想澄清一個誤解:我不是內核專家,我瞭解它,是因爲我的核心工作讓我接觸了他們:David S. Miller, Alexey Kuznetsov, Andi Kleen, Alan Cox。無論如何,他們做了最深層的工作,輪到我時,已經非常安全和容易了。

5. Rusty的真正的包過濾快速指南
絕大部分人只有一個PPP連接到Internet,而且不希望有人由此進入他們的網絡或者防火牆:
# 插入connection-tracking模塊(如國內建在內核中就不需要)
# insmod ip_conntrack
# insmod ip_conntrack_ftp
 
# 對創建大量新的連接創建一個鏈,除非這些連接來自內部。
# iptables -N block
# iptables -A block -m state --state ESTABLISHED,RELATED -j ACCEPT
# iptables -A block -m state --state NEW -i ! ppp0 -j ACCEPT
# iptables -A block -j DROP
 
# 由INPUT和FORWARD鏈跳往(剛剛創建的)那條鏈。
# iptables -A INPUT -j block
# iptables -A FORWARD -j block

6. 包是如何穿過過濾器的
內核由'filter'表中的以下三個規則開始。這些被稱爲防火牆鏈或就叫鏈。這三個鏈分別是 INPUT、OUTPUT和FORWARD。
對於ASCII藝術迷來說,鏈好象這樣:(注意:這與2.0和2.2內核非常不同)
譯者:ASCII藝術,這裏指的是利用純ASCII文本作圖
                         _____  Incoming                 /     /         Outgoing         -->[Routing ]--->|FORWARD|------->            [Decision]     /_____/        ^                 |                        |                 v                       ____                ___                     /    /               /   /                 |OUTPUT|              |INPUT|                  /____/               /___/                      ^                 |                        |                  ----> Local Process ----
三個圈代表上面說的三個鏈。當包到達圖中的一個圈,那個鏈就檢查並確定包的命運。 如果鏈決定DROP包,包在那裏就被殺死。但是如果鏈決定讓包ACCEPT,包就繼續在圖中前進。
一個鏈是規則的列表。每個規則都會說:'如果包頭看上去像這個的話,那麼就這樣處理'。 如果規則和包不匹配,由鏈中的下一個規則處理。最後,如果再也沒有要進行處理的規則了, 內核就根據鏈的原則(policy,有時稱爲默認規則)來決定應當如何做。在一個注重安全的 系統中,原則通常是讓內核丟棄這個包。
1. 當一個包進入時(就是由以太網卡),內核首先檢查包的目的地。這被稱作“選路”。
2. 如果它就是進入本機的,包會向圖中的下方移動,到達INPUT鏈。如果到了這裏,任何等待這個包的進程都會收到它。
3. 否則,如果內核未被允許轉發,或者不知道該如何轉發這個包,它會被丟棄。如果允許轉發,而且包的目的地是另一個網絡接口(如果你有另一個的話),那麼包向我們圖中的右邊行進,到達FORWARD鏈。如果允許通過(ACCEPT),它就被送了出去。
4. 最後,服務器上運行的程序可以發送網絡包。這些包馬上通過OUTPUT鏈。如果被允(ACCEPT),那麼包繼續向可以到達它的目的地的網絡接口發送。

7. 使用iptables
iptables有着非常詳盡的使用手冊(man iptables),而且如果你需要某個選項更詳細的介紹。看看“iptables和ipchains的差別”可能對你非常有用。
使用iptables你可以做很多不同的事。開始的內建的三個鏈INPUT、OUTPUT和FORWARD是不能被刪除的。讓我們看看整個鏈的管理。
1. 創建一個新的鏈 (-N)。
2. 刪除一個空鏈(-X)。
3.修改內建鏈的原則(-P)。
4. 顯示鏈中的規則(表)(-L)。
5. 清空一個鏈(-F)。
6. 將鏈中所有規則的包和字節計數器清零(-Z)。
有幾種辦法操作鏈中的規則:
1. 向鏈中添加一條新規則(-A)。
2. 在鏈中某個位置插入一條新規則(-I)。
3. 替換某個位置的規則(-R)。
4. 刪除鏈中某個位置的規則,或者是第一個被匹配的。(-D)。

7.1. 當計算機啓動後你會看到的
ptables可以作爲模塊,稱爲'iptables_filter.o,可以在第一次運行iptables時自動被裝載。也可以永久性的編到內核中。
在所有iptables命令執行之前(當心:某些發佈版會在初始化腳本中運行iptables),所有內建鏈中都沒有任何規則('INPUT'、'FORWARD'和'OUTPUT'),所有鏈的原則都是ACCEPT。你可以在裝載iptable_filter模塊時,提供'forward=0'選項來修改FORWARD的默認原則。

7.2. 對單個規則的操作
這是基本的包過濾:管理規則,添加(-A)和刪除(-D)命令可能是最常用的。其他的(-I插入和-R替換)只是簡單的擴展而已。
每個規則都有一組條件來匹配包,和如果匹配了該如何做(target)。例如,你可能希望丟棄所有來自127.0.0.1的ICMP包。這樣我們的條件就是協議必須是ICMP,而且源地址必須是127.0.0.1,我們的目標是丟棄(DROP)。127.0.0.1是一個回送接口,即使你沒有真正的網絡連接它也會存在。你可以用ping程序生成這樣的包(它簡單的發送ICMP 類型8(echo request),所有願意響應的主機都會用ICMP 類型0(echo reply)來響應)。這對於測試非常有用。
# ping -c 1 127.0.0.1
PING 127.0.0.1 (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.2 ms
--- 127.0.0.1 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.2/0.2/0.2 ms
# iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP
# ping -c 1 127.0.0.1
PING 127.0.0.1 (127.0.0.1): 56 data bytes
--- 127.0.0.1 ping statistics ---
1 packets transmitted, 0 packets received, 100% packet loss
這裏,第一個ping是成功的('-c 1'告訴ping只發送一個包)
然後我們可以向'INPUT'鏈中添加(-A)一個規則,制定來自127.0.0.1('-s 127.0.0.1')的ICMP協議('-p icmp')包都將被丟棄('-j DROP')。
然後我們測試我們的規則,用第二個ping。在程序放棄等待永遠不可能的響應之前,會暫停一下。
我們可以用兩種辦法中的任一種刪除規則。首先,因爲知道這是INPUT鏈中唯一的規則,我們用編號刪除:
# iptables -D INPUT 1
刪除INPUT鏈中的編號爲1的規則
第二種辦法是 -A 命令的映射,不過用-D替換-A。當你的鏈中規則很複雜,而你不想計算它們的編號的時候這就十分有用了。這樣的話,我們可以使用:
# iptables -D INPUT -s 127.0.0.1 -p icmp -j DROP
-D的語法必須和-A(或者-I或者-R)一樣精確。如果鏈中有多個相同的規則,只會刪除第一個。

7.3 過濾規格
我們已經看了,用'-p'指定協議,用'-s'指定源地址,不過還有其他選項我們可以用來指定包的特徵。下面是一個詳細的手冊。

7.3.1 指定源和目的IP地址
源('-s','--source'或'--src')和目的('-d','--destination'或'--dst')IP地址可以用四種辦法指定。最常用的方法是使用全名,就像'localhost'或者'www.linuxhq.com'。第二種辦法是指定IP地址,如'127.0.0.1'。
第三和第四種辦法允許指定一組IP地址,就像'199.95.207.0/24'或者'199.95.207.0/255.255.255.0'。這指定了從199.95.207.0到199.95.207.255範圍內的所有IP地址。'/'後面的數字說明哪部分IP地址是有效的。'32'或者'255.255.255.255‘爲默認的(匹配整個IP地址)。用'/0'來指定任何IP地址,像這樣:
# '-s 0/0'在這裏是多餘的
# iptables -A INPUT -s 0/0 -j DROP
這很少用到,這和上面出現過的不指定'-s'結果完全一樣。

7.3.2 反向指定
很多標記,包括'-s'(或'--source')和'-d'('--destination')標記可以在前面加上'!'標誌(讀作'not'),來匹配所有和給出的 NOT 的地址。例如, '-s ! localhost'匹配所有不是來自本機的包。

7.3.3 協議指定
可以用'-p'(或'--protocol')指定協議。協議可以是數字(如果你知道IP的協議數值)或者像'TCP'、'UDP'或者'ICMP'這類的名稱。大小寫無所謂,所以'tcp'和'TCP'一樣。
協議名稱前可加上'!',以反向解釋它,例如'-p ! TCP'將匹配所有不是TCP的包。

7.3.4 接口指定
'-i'(或'--in-interface')和'-o'(或'--out-interface')選項指定匹配的接口名。接口可以是包進入的('-i')或者送出('-o')的物理設備。你可以用ifconfig命令列出當前'up'的接口。(也就是說正在工作的)。
通過INPUT鏈的包不會有送出接口,所以在這個鏈中'-o'永遠不會匹配。同樣,通過OUTPUT鏈的包也沒有進入接口,這個鏈中的'-i'也不會被匹配。
只有通過FORWARD鏈的包纔有進入和送出兩個接口。
可以指定一個當前不存在的接口。在這個接口可用之前,規則不能匹配任何東西。這對於撥號PPP連接及類似的非常有用(通常是ppp0接口)。
一個特殊情況,接口名後面是一個'+',那就會匹配以這個字符串開頭的所有接口(無論當前是否存在)。例如,指定一個匹配所有ppp接口的規則,要用到-i ppp+選項。
接口名也可以在前面插入 '!',來匹配所有與指定接口不同的包,如-i ! ppp+。

7.3.5 分片指定
譯者:爲幫助大家理解,此處附上IP數據報的格式,摘自《Internetworking with TCP/IP》
0 4 8 16 19 24 31
版本號 首部長度 服務類型 總長度
標誌符 標誌 分片偏移量
壽命 協議 首部效驗和
源IP地址
目的IP地址
IP選項 填充
數據
……
有時一個包太大,不可能適合所有線路。這樣的話,包會被分成片,然後當作多個包發送。最終重組這些分片來重建整個包。
分片的問題是,被檢查的初始片含有整個頭部字段(IP+TCP,UDP和ICMP),但隨後的包只有一部分頭(沒有附加協議字段的IP),因此,檢查後面的分片的頭部(就像有TCP、UDP和ICMP一樣)是不可能的。
如果你在做NAT或連接追蹤,那麼所有分片在包過濾代碼處理以前都會合並,所以你不需要爲分片擔心。
還請注意,到filter表中的INPUT鏈(或者任何由NF_IP_LOCAL_IN鉤子程序鉤入的表)的包實際上由核心IP棧片重組後到達。
否則,理解分片是如何被過濾規則處理的就非常重要了。任何過濾規則要求我們沒有的信息,將被認爲不匹配。這意味着(分片的)第一片像普通的包一樣被處理。第二及後面的片則不會。因此,規則 -p TCP --sport www(指定源端口爲'www')永遠不會匹配一個分片(的包)(除了第一片),相反的規則 -p TCP --sport ! www也不會。
無論如何,你可以用'-f'(或'--fragment')標記指定專門處理第二及以後的分片的規則。當然也可以指定一個規則,讓它不去匹配第二及以後的分片,在'-f'前加上'!'。
通常,讓第二及以後的分片通過被認爲是安全的,因爲如果過濾處理了第一片,那麼就無法在目標主機上進行重組。不過,已知的Bug是發送分片可能會輕易的讓主機崩潰。你自己看着辦吧。
網絡高手注意:當這類檢查進行時,畸形的包(防火牆讀取的ICMP代碼和類型過短的TCP、UDP和ICMP包)都將被丟棄。所以TCP分片從位置8開始。(譯者:什麼意思?大概是指IP包中的首部字段位置)
例如,下面的規則會丟棄任何發往192.168.1.1的分片。
# iptables -A OUTPUT -f -d 192.168.1.1 -j DROP

7.3.6 iptables擴展:新的匹配
iptables是可擴展的,也就是包括內核和iptables工具都可以擴充新的特性。
下列部分擴展是標準的,其他的則是派生的。其他人可以做出擴展併發布給合適的人。
內核擴展一般位於內核模塊子目錄,諸如/lib/modules/2.4.0-test10/kernel/net/ipv4/netfilter。如果你使用了CONFIG_KMOD設置來編譯內核,那麼它們要求被裝載,所以你不需要手工插入。
iptables程序擴展通常是位於/usr/local/lib/iptables/下的共享庫,當然也可能在/lib/iptables或者/usr/lib/iptables,具體的要根據不同的發行版本來確定。
擴展有兩種:新的目標,新的匹配(我們馬上會談到新的目標)。有些協議自動給出新的測試:如下所示,現有的包括TCP、UDP和ICMP。
這樣,你可以在命令行中在 '-p'選項後指定新的測試,就可以載入擴展(模塊)了。當允許擴展時,可以用'-m'選項裝入擴展。
在選項後面('-p','-j'或者'-m')加上 '-h'或'--help'來獲取擴展的幫助。
# iptables -p tcp --help

7.3.6.1. TCP 擴展
如果指定了'-p tcp',那麼TCP擴展將自動加載,並提供下列選項(不匹配分片)。
--tcp-flags
可附加一個'!'。有兩個標誌字串可以通過TCP標記來過濾。第一個標誌字符串是mask:你想要測驗的標誌列表。第二個指出哪些將要被設置。例如:
# iptables -A INPUT --protocol tcp --tcp-flags ALL SYN,ACK -j DROP
意思是所有標誌都將被測試('ALL'和'SYN, ACK,FIN,RST,URG,PSH'同義),不過只設置SYN和ACK。當然也可以用'NONE'表示無標誌。
--syn
前面的'!'是可選的,是'--tcp-flags SYN, RST, ACK, SYN'的縮寫
--source-port
後面可以跟一個'!',可以是單個TCP端口,或一段端口。可以是/etc/services中的端口名或者數字。端口範圍格式是低端口名 : 高端口名,或者(指定大於或等於給出的端口)是端口名 + :,或者(指定小於或等於給出的端口)是: + 端口名。
--sport
就是 '--source-port'。
--destination-port
--dport
和上面類似,不過是指定匹配的目的端口(範圍)。
--tcp-option
可以跟一個'!'和一個數字,匹配的是TCP選項和數字相等的包。如果試圖用 這個TCP選項匹配一個沒有完整的TCP包頭的包,那麼這個包會被自動丟棄。

7.3.6.1.1. TCP標誌的解釋
有時只允許單向的TCP連接會很有用。例如,你可能會允許連接到外部WWW服務器,但不會允許來自那個服務器的連接。
最簡單的舉動可能是阻止來自那個服務器的包,可惜,TCP連接需要包雙向傳送(才能正常工作)。
解決辦法是,只阻擋那些用來請求連接的包。這些包稱爲SYN包(OK,從技術上說,它們的SYN標誌被設置,而沒有設置RST和ACK標誌,不過我們簡單的稱爲SYN包)。通過只阻止這種包,我們就可以阻止來自那些地方的連接企圖。
'--syn'標誌是這樣用的:只對指定了TCP協議的規則有效。例如,指定來自192.168.1.1的連接請求。
-p TCP -s 192.168.1.1 --syn
當然也可以在前面加上'!',意即所有不是初始連接的包。

7.3.6.2 UDP 擴展
這些擴展在指定'-p udp'時自動加載。可以提供 '--source-port'、'--sport'、'--destination-port'和'--dport'等和TCP類似的選項。

7.3.6.3 ICMP擴展
這些擴展在指定'-p icmp'時自動加載。只提供一個新的選項:
--icmp-type
可以跟'!',icmp類型名稱(如'host-unreachable')或者數值(如'3'),或者數值類型/代碼(如'3/3')。用'-p icmp --help'可以列出可用的icmp類型名。

7.3.6.4 其他匹配的擴展
這些netfilter包中的其他擴展尚屬於演示階段,(如果安裝了的話)可以用'-m'來啓用。
mac
--mac-source
可以跟一個'!',後面是以太網地址,用冒號分隔的16近製表示,如`--mac-source 00:60:08:91:CC:B7'。
limit
此模塊必須明確指定'-m limit'或'--match limit'。用來限制匹配的速率。就像抑制記錄信息。只會匹配給定的數字/每秒(默認是每小時3個匹配,和5個觸發)。可以有兩個參數:
--limit
後面跟數字:指定每秒鐘允許的匹配最大平均數。這個數字可以指定 明確的單位,使用'/second'、`/minute'、`/hour' 或者 `/day',或者 只寫一部分(如'5/second'和'5/s'一樣)。
--limit-burst
後面跟一個數字,指明在上面的limit起作用前最大的觸發值。
這個匹配(項)通常和LOG目標結合起來使用,以對速率限制進行記錄。 爲了理解它是如何工作的,我們來看看下面這條規則,它使用默認限制參數 記錄包。
# iptables -A FORWARD -m limit -j LOG
當這條規則第一次啓用時,包開始被記錄。實際上,由於默認觸發是5,前五個包會被記錄。然後,每隔20分鐘再記錄一次包,無論這期間有多少包到達。而且,每個不匹配包的20分鐘間隔裏,會恢復一個觸發(值)。如果100分鐘都沒有包到達這個規則,那麼所有觸發都會恢復,回到起點。
提示:你目前不能以大於59小時的時間來創建這種規則,所以如果你設置一個平均率爲一天,那麼你的觸發率必須小於3。
你也可以將此模塊用於避免使用快速響應速率的各類拒絕服務攻擊(DoS,Denial of Server)。
(譯者:以下是較著名的攻擊)
Syn-flood protection:
# iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
 
Furtive port scanner:
# iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
 
Ping of death:
# iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
這個模塊工作原理類似於“節流閥”,以下是圖示。
                 rate (pkt/s)                       ^        .---.                       |       / DoS /                       |      /       /          Edge of DoS -|.....:........./....................... DoS的邊界 =            = (limit *  |    /:          /          limit-burst) |   / :           /         .-.                       |  /  :            /       /   /                       | /   :             /     /     /          End of DoS  -|/....:..............:.../......./..../.  DoS結束           = limit     |     :              :`-'         `--'          -------------+-----+--------------+------------------> time (s)             LOGIC =>  Match | Didn't Match |    Match
我們匹配由五個包觸發的每秒一個包,不過每秒鐘第四個包纔開始進入(這個規則),進行三秒鐘,然後重新開始。
                  <--Flood 1-->           <---Flood 2--->          Total  ^                   Line  __--      YNNN          Packets|               Rate  __--      YNNN                 |            mum  __--      YNNN              10 |        Maxi __--         Y                 |         __--            Y                 |     __--               Y                 | __--    YNNN                 |-    YNNN               5 |    Y                 |   Y                                Key:  Y -> Matched Rule                 |  Y                                       N -> Didn't Match Rule                 | Y                 |Y               0 +-------------------------------------------------->  Time (seconds)                  0   1   2   3   4   5   6   7   8   9  10  11  12
你可以看見,前五個包是允許超過一個包/每秒(這個速率)的,然後就開始限制。 如果有一個暫停,那麼另一個觸發也是允許的,但不能超過規則設置的最大速率。
owner
--uid-owner userid
根據給出的有效的(數值)user id來匹配包的創建進程。
--gid-owner groupid
根據給出的有效的(數值)group id 來匹配包的創建進程。
--pid-owner processid
根據給出的process id 來匹配包的創建進程。
--sid-owner sessionid
根據給出的 session group 來匹配包的創建進程。
unclean
這是試驗性模塊,必須明確指定'-m unclean'或者'--match unclean'。 它對包進行各種隨機判斷。此模塊還未通過審覈,所以不要用在安全設施上。 (可能造成更糟糕的結果,它自己可能還有Bug)。沒有提供選項。

7.3.6.5 狀態匹配
最有用的匹配標準是'state'擴展。它負責解釋'ip_conntrack'模塊的connection-tracking分析。 這是推薦使用的(好東東)。
通過指定'-m state'來允許附加的'--state'選項,匹配用逗號分割的狀態列表('!'標誌表明不符合那些狀態(的狀態))。
NEW
由新連接創建的包
ESTABLISHED
屬於已存在連接的包(也就是說,響應的包)
RELATED
和一個已存在連接有關,但不是它的一部分的包。如ICMP錯誤,或者(已加載FTP模塊)一個建立FTP數據連接的包。
INVALID
由於以下原因而不能被識別的包:包括內存不足和不是相應當前任何連接的ICMP錯誤。通常這些包會被丟棄。
這個強大的匹配擴展的一個例子:
# iptables -A FORWARD -i ppp0 -m state ! --state NEW -j DROP

7.4 目標規格
現在,我們知道了如何對包進行測試,但是我們還需要告訴那些匹配的包應該如何做。這被稱作規則的目標。
有兩個很簡單的內建目標:DROP和ACCEPT。我們已經看過了。如果包匹配的規則,其目標是這二者中的一個,那麼不再考慮更多的規則了:包的命運已經決定。
除此之外有兩種目標:擴展的和用戶定義的鏈。

7.4.1 用戶定義鏈
iptables一個強大的特點是由ipchains繼承來的可以讓用戶創建新的鏈,附加在三個內建的鏈上(INPUT、FORWARD和OUTPUT)。按照慣例,用戶定義鏈使用小寫以區分他們。(我們會在“Operations on an Entire Chains”中描述如何創建新的用戶定義鏈)。
當包匹配的鏈的目標是一個用戶定義鏈時,包就轉移到用戶定義鏈中的規則。如果 沒有決定包的命運,那麼包在(用戶定義鏈)中的移動就結束了,並回到當前鏈的下一個規則。
搞搞ASCII藝術吧。考慮兩個(笨蛋)鏈:INPUT(內建的)和test(用戶定義的)。
                `INPUT'                         `test'               ----------------------------    ----------------------------               | Rule1: -p ICMP -j DROP   |    | Rule1: -s 192.168.1.1    |               |--------------------------|    |--------------------------|               | Rule2: -p TCP -j test    |    | Rule2: -d 192.168.1.1    |               |--------------------------|    ----------------------------               | Rule3: -p UDP -j DROP    |               ----------------------------
考慮一個由192.168.1.1到1.2.3.4的TCP包。它進入INPUT鏈,由Rule1檢查 - 不匹配。 Rule2匹配,那麼它的目標就是test,所以下一個檢查由test開始。test中的第一個規則 Rule1是匹配的,但是沒有指定目標,所以由第二個規則Rule2檢查。結果是不匹配,而我們 到達了鏈的尾部。於是回到INPUT鏈,因爲剛剛被Rule2檢查,所以現在由Rule3來檢查,仍然 不匹配。
所以這個包的路線是:
                                       v    __________________________                `INPUT'                |   /    `test'                v               ------------------------|--/    -----------------------|----               | Rule1                 | /|    | Rule1                |   |               |-----------------------|/-|    |----------------------|---|               | Rule2                 /  |    | Rule2                |   |               |--------------------------|    -----------------------v----               | Rule3                 /--+___________________________/               ------------------------|---                                       v
用戶定義鏈可以跳轉到另一個用戶定義鏈(不過不能循環:如果發現循環,包就會被丟棄)。

7.4.2 iptables擴展:新目標
其他類型的擴展是目標。目標擴展由內核模塊組成,而且iptables的一個可選擴展提供了新的命令行選項。有幾個擴展是包含在默認netfilter發佈中的。
LOG
--log-level
跟一個級別名稱或數字。合適的名字是(忽略大小寫)'debug'、'info'、'notice'、'warning'、'err'、'crit'、'alert'和'emerg',相當於數字7到0。請參考syslog.conf的手冊獲取這些級別的說明。默認是'warning'。
--log-prefix
跟一個最多29個字符的字符串,它被寫入到log信息的開始處,這樣可以區別出來。
這個模塊最有用的就是跟在limit match後面,這樣你就不會被你的log淹沒了。
REJECT
此模塊和'DROP'效果一樣,除了會發送一個'port unreachable'的ICMP錯誤報文。注意如果屬於以下情況,ICMP錯誤報文不會發送:
o 包一開始就是ICMP錯誤報文,或者是未知的ICMP類型。
o 包被作爲無頭的分片過濾了。
o 我們已經向那裏發送了太多的ICMP錯誤報文(參見/proc/sys/net/ipv4/icmp ratelimit)。

7.4.3 特殊的內建目標
有兩個特殊的內建目標:RETURN和QUEUE。
RETURN如同到達這個鏈的尾部:如果是內建的鏈的規則,那麼這個鏈的默認規則將被執行。如果是用戶定義鏈,當跳至這個鏈中的這條規則(包含RETURN)時,回到前面的鏈繼續匹配。
QUEUE是一個特別的目標,會爲用戶空間進程隊列這個包。要這樣使用,需要兩個部件:
o 一個"queue handler",處理用戶空間與內核之間的機制。
o 和一個用戶空間用來接收的應用程序,可能是操作,以及對包進行裁決。
IPv4 iptables的標準queue handler是 ip_queue 模塊,跟隨內核發佈並標記爲實驗中。
下面是一個如何用iptables爲用戶空間進程隊列包的快速例子:
# modprobe iptable_filter
# modprobe ip_queue
# iptables -A OUTPUT -p icmp -j QUEUE
在這個例子中,本地生成的送出ICMP包(如由ping產生)到達ip_queue模塊,然後包被試圖送往用戶空間應用。如果沒有用戶空間應用在(那兒)等着,包就被丟棄了。
要寫一個用戶空間應用,需要libipq API。和iptables一起發佈。在CVS的testsuite tools(如redirect.c)中可以找到相關例子。
可以通過這裏檢查ip_queue的狀態:
/proc/net/ip_queue
隊列的最大長度(也就是不包含返回包的送往用戶空間包的數量)可以通過這裏控制:
/proc/sys/net/ipv4/ip_queue_maxlen
默認隊列長度是1024。一旦達到這個長度,新的包就會被丟棄,直到隊列長度小於這個值。好的協議如TCP,會對丟棄的包作出擁擠的解釋,而且在隊列滿了後會很理想的將它擋回。無論如何,如果默認值太小的話,最好是多實驗以決定隊列的最大長度。

7.5 對整個鏈進行操作
iptables一個非常有用的特性是可以將鏈中相關的規則成組。你可以隨意給鏈取名,不過我建議使用小寫字母以避免與內建的鏈和目標產生衝突。鏈的名稱最長爲31個字母。

7.5.1 創建新鏈
讓我們創建一個新鏈。因爲我是個充滿想象的傢伙,我叫它test。使用'-N'或'--new-chain'選項:
# iptables -N test
如此簡單,現在你可以像上面說的那樣放入規則了。

7.5.2 刪除鏈
刪除一個鏈同樣簡單,使用 '-X'或'--delete-chain'選項。爲什麼是'-X'?嗯,因爲所有合適的字母都已經被使用了。
# iptables -X test
有幾個刪除鏈的限制:他們必須是空的(見下面的"Flushing a Chain")而且他們不能是任何規則的目標。你也不能刪除任何一個內建的鏈。
如果你不指定鏈名的話,所有可以被刪除的用戶定義鏈都將被刪除。

7.5.3 清空一個鏈
這是清除一個鏈中所有規則的簡單方法,使用'-F' 或 '--flush'命令。
# iptables -F FORWARD
如果不指定鏈的話,所有鏈都將被清空。

7.5.4 對鏈進行列表
用'-L'或'--list'命令,你可以列出一個鏈中的所有規則。
用戶定義鏈中的'refcnt'是有多少鏈的規則指向了它。這個值必須爲0,然後纔可以刪除這個鏈。
如果鏈名被忽略,所有鏈都將被列出,即便是空的。
'-L'可以有三個選項。'-n'(數字)選項對於阻止iptables試圖查找IP地址時非常有用,因爲(如果你像大多數人一樣使用DNS)如果你的DNS設置不太合適的話,可能會造成長時間的停頓,或者你濾掉了DNS請求。它還會讓TCP或UDP端口以數字顯示。
'-v'選項顯示所有規則的細節,包括飽和字節計數器,TOS比較,以及接口。否則這些值是被忽略的。
注意,報和字節計數器可以分別使用'K'、'M'或者'G'來代替1000、1,000,000 和1,000,000,000。使用'-x'(擴展數字)標誌來打印整個值,不管它有多大。

7.5.5 重置(清零)計數器
可以重置計數器非常有用。可以用'-Z'或'--zero'來完成。
考慮下面的:
# iptables -L FORWARD
# iptables -Z FORWARD
在上述例子中,有些包在'-L'和'-Z'命令之間通過。因此,你可以把'-L'和'-Z'一起使用,讀取時就清空計數器。

7.5.6 設置原則(默認規則)
我們在前面討論包是如何通過鏈的時候,已經解釋了當包到達內建鏈的尾部時會發生什麼。這時,鏈的原則就決定包的命運。只有內建的鏈(INPUT、OUTPUT和FORWARD)有原則,因爲如果包到達用戶定義鏈的尾部會返回到前面的鏈。
原則可以是ACCEPT或DROP,例如:
# iptables -P FORWARD DROP

8. 使用ipchains和ipfwadm
netflter發佈中有ipchains.o和ipfwadm.o模塊。把其中一個加載到你的內核(注意:他們和ip_tables.o不兼容)。然後你就可以像以前那樣使用ipchains和ipfwadm了。
這在一段時間內仍然被支持。我認爲合理的計算方式是 2*(替代發佈 - 初始的穩定版本),超過了這個時間,就應當使用替代的穩定版本了。這意味着在Linux 2.6或2.8中對它們的支持很可能被放棄。

9. NAT和包過濾的混合使用
想要做網絡地址轉換(參見NAT HowTo)和包過濾的已很常見。好消息是他們可以混合起來使用的,而且工作得非常好。
你可以完全忽略你的NAT,來定義你的包過濾。包過濾看見的包的源及目標是“真正”的源和目標。例如,如果你將任何發往1.2.3.4 80端口的包DNAT到10.1.1.1的8080端口。包過濾器看見的是包發往10.1.1.1的8080端口(真正的目的地),而非1.2.3.4 的80端口。同樣,你可以忽略僞裝:看到的是包的真實外部IP地址(如10.1.1.1),而響應的則返回到那裏。
你可以使用'state'匹配擴展,使包過濾器不需要做任何額外的工作,因爲無論如何,NAT都會要求連接跟蹤。擴展NAT HowTo中簡單的僞裝例子,以禁止任何來自ppp0接口的新的連接,你可以這樣:
#對送至ppp0的包進行僞裝
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# 禁止由ppp0進入的新的或不合適的包
iptables -A INPUT -i ppp0 -m state --state NEW,INVALID -j DROP
iptables -A FORWARD -i ppp0 -m state --state NEW,INVALID -j DROP
# 開啓IP轉發
echo 1 > /proc/sys/net/ipv4/ip_forward

10. iptables和ipchains之間的差別
o 首先,內建鏈的名稱從小寫改成了大寫,因爲現在的INPUT和OUTPUT鏈只獲取指向本地和本地生成的包。他們用來檢查所有進入和發送的包。
o '-i'標誌現在表示進入接口的意思,而且只適用於INPUT和FORWORD鏈。FORWORD或OUTPUT鏈中的規則應該將'-i'改爲'-o'。
o TCP和UDP端口現在必須用--source-port或--sport(或者--destination-port/--dport)拼寫,而且必須放在'-p tcp'或'-p udp'選項之後,因爲TCP或UDP擴展是分別加載的。
o TCP -y 標誌現在是 --syn,而且必須在'-p tcp'之後。
o DENY目標現在是DROP.
o 對單個鏈,可以在列出其工作同時清零。
o 清空內建鏈同時清除了原則計數器。
o 列出鏈給出的是一個計數器的微型的快照。
o REJECT和LOG現在是擴展目標,意思是他們是獨立的內核模塊。
o 鏈的名稱最多可以是31個字符。
o MASQ現在是MASQUERADE而且使用不同的語法。REDRIRECT,在保留相同的名字時,也經歷了語法的改變。參見NAT-HOWTO以獲取配置它們的更多信息。
o -o選項不再用於將包傳遞給用戶空間設備了(見上面的-i)。現在通過 QUEUE目標傳遞到用戶空間。
o 很可能還有一些我也忘了。

11. 對制定包過濾器的建議
在計算機安全領域中,最明智的辦法是阻擋所有東西,然後對需要的開啓。這通常稱爲“凡是沒有明確允許的都是禁止的”。我建議這樣做如果安全是你最關心的。
不要運行任何你不需要的服務,即使你認爲你已經阻礙了對它們的訪問。
如果你創建專用防火牆,開始時不運行任何東西,並阻止所有包,然後添加服務並讓需要的包通過。
我強調安全:結合tcp-wrappers(對於包過濾器本身的連接),代理(通過包過濾器的連接),路由驗證和包過濾。路由驗證是如果包來自未預期的接口那麼將被刪除:例如,如果你的內部網絡地址是10.1.1.0/24,而一個包的源地址是你的外部接口,那麼它將被丟棄。對一個接口如ppp0來說可以這樣:
# echo 1 > /proc/sys/net/ipv4/conf/ppp0/rp_filter
或者對所有已有的或將有的接口:
# for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
# echo 1 > $f
# done
Debian在可能的範圍了將這些設爲默認。如果你使用非對稱路由(如你期望包來自一個其他的方向),你可能需要在這些接口上禁止這一過濾。
記錄對於當工作不正常時設置防火牆非常有用,但是在一個作爲產品的防火牆上,總是應當將它與'limit'匹配結合,以防止有人充斥你的記錄。
我極力推薦對安全系統使用連接追蹤:它雖然會造成負擔,因爲所有連接都被追蹤。但是對於控制對你的網絡的訪問非常有用。如果你的內核沒有自動加載而且沒有內建,你需要加載'ip_conntrack.o'這個模塊。如果想要精確追蹤複雜的協議,你需要加載合適的相關模塊(如'ip_conntrack_ftp.o')。
# iptables -N no-conns-from-ppp0
# iptables -A no-conns-from-ppp0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# iptables -A no-conns-from-ppp0 -m state --state NEW -i ! ppp0 -j ACCEPT
# iptables -A no-conns-from-ppp0 -i ppp0 -m limit -j LOG --log-prefix "Bad packet from ppp0:"
# iptables -A no-conns-from-ppp0 -i ! ppp0 -m limit -j LOG --log-prefix "Bad packet not from ppp0:"
# iptables -A no-conns-from-ppp0 -j DROP
 
# iptables -A INPUT -j no-conns-from-ppp0
# iptables -A FORWARD -j no-conns-from-ppp0
建造一個好的防火牆超越了這個HOWTO的範圍,不過我的建議是“一切從嚴”。請參見Security HOWTO獲取更多信息,來測試和探索你的服務器。

all pages ended here.
kingpaul @ 09:50 AM 發表於 linux | 編輯 | 留言 (0) | TrackBack (0)

2004年04月22日

Linux一句話精彩問答

瀚海星雲 -- Linux精華區文章閱讀

發信人: noclouds (景天雲飛), 信區: Linux
標 題: Linux一句話精彩問答--2004/03/16更新
發信站: 瀚海星雲 (2004年03月21日07:45:16 星期天), 站內信件


編者按:鑑於目前中國Linux的發展現狀,90%以上的問題都可以用一句話來回答,這便是本文的初衷。歡迎大家添加自己的“一句話”,收錄後註明原始提供者。更詳細的文
檔,請瀏覽本版精華區或http://www.douzhe.com/linux/

(注:請對照自己使用的gnu/linux釋放版本,因爲有的解答並不支持所有版本)
----------------------------網絡無關篇--------------------------
0001 修改主機名(bjchenxu)
vi /etc/sysconfig/network,修改HOSTNAME一行爲"HOSTNAME=主機名"(沒有這行?那就添加這一行吧),然後運行命令" hostname 主機名"。無論你是否重啓,主機名修改成功了。

0002 Ret Hat Linux啓動到文字界面(不啓動xwindow)(bjchenxu)
vi /etc/inittab
id:x:initdefault:
x=3:文本方式 x=5:圖形方式

0003 linux的自動升級更新問題(hutuworm,NetDC)
對於redhat,在www.redhat.com/corp/support/errata/找到補丁,6.1以後的版本帶有
一個工具up2date,它能夠測定哪些rpm包需要升級,然後自動從redhat的站點下載並完
成安裝。
升級除kernel外的rpm: up2date -u
升級包括kernel在內的rpm: up2date -u -f

Debian跟別的發行版還是有很大的差別的,用Debian做服務器維護更加方便;紅帽的升
級其實挺麻煩的,當然,如果你交錢給紅帽的話,服務是會不一樣的。
Debian下升級軟件:
apt-get update
apt-get upgrade
前提:配置好網絡和/etc/apt/sources.list,也可以用apt-setup設置。

0004 windows下看linux分區的軟件(bjchenxu)
Paragon.Ext2FS.Anywhere.2.5.rar和explore2fs-1.00-pre4.zip

0005 mount用法(sakulagi)
fat32的分區 mount -o codepage=936,iocharset=cp936 /dev/hda7 /mnt/cdrom
ntfs的分區 mount -o iocharset=cp936 /dev/hda7 /mnt/cdrom
iso文件 mount -o loop /abc.iso /mnt/cdrom
軟盤 mount /dev/fd0 /mnt/floppy
USB閃存 mount /dev/sda1 /mnt/cdrom
所有/etc/fstab內容 mount -a
可以指定文件格式"-t 格式", 格式可以爲vfat, ext2, ext3等.

0006 在vmware的LINUX中使用本地硬盤的FAT分區(bjchenxu)
將本地的FAT分區共享,然後在VMWARE中使用SMBFS掛上。可以將如下的行放到/etc/fsta
b中:
//win_ip/D$ /mnt/d smbfs
defaults,auto,username=win_name,password=win_pass,codepage=936,iocharest=gb23
12 0 0
其中win_ip是你的windows的IP地址;
D$是你的windows裏面共享的D盤的共享名;
/mnt/d是要將該分區mount到linux的目錄;
win_name和win_pass是你的WINDOWS裏面可以讀取該分區的用戶,比如你的管理員名和密
碼。
如果你運行了/etc/rc.d/init.d/netfs,那麼在啓動的時候就會自動掛載這個分區。

0007.a 刪除名爲-a的文件(bjchenxu)
rm ./-a
rm -- -a 告訴rm這是最後一個選項,參見getopt
ls -i 列出inum,然後用find . -inum inum_of_thisfile -exec rm '{}' /;

0007.b 刪除名爲/a的文件(bjchenxu)
rm //a

0007.c 刪除名字帶的/和‘/0'文件(bjchenxu)
這些字符是正常文件系統所不允許的字符,但可能在文件名中產生,如unix下的NFS文件
系統在Mac系統上使用
1.解決的方法,把NFS文件系統在掛到不過濾'/'字符的系統下刪除含特殊文件名的文件

2.也可將錯誤文件名的目錄其它文件移走,ls -id 顯示含該文件目錄的inum,umount
文件系統,
clri清除該目錄的inum,fsck,mount,check your lost+found,rename the file
in it.
最好是通過WINDOWS FTP過去就可以刪除任何文件名的文件了!

0007.d 刪除名字帶不可見字符的文件(bjchenxu)
列出文件名並轉儲到文件:ls -l >aaa
然後編輯文件的內容加入rm命令使其內容成爲刪除上述文件的格式:
vi aaa
[rm -r *******
]
把文件加上執行權限 chmod +x aaa
執行 $aaa

0007.e 刪除文件大小爲零的文件(bjchenxu)
rm -i `find ./ -size 0`
find ./ -size 0 -exec rm {} /;

find ./ -size 0 | xargs rm -f &

for file in * #自己定義需要刪除的文件類型
do
if [ ! -s ${file} ]
then
rm ${file}

echo "rm $file Success!"
fi
done

0008 redhat設置滾輪鼠標(mc1011)
進入X後,選擇鼠標的配置,選擇wheel mouse(ps/2)就可以了,
如果鼠標表現異常,重啓計算機即可。
(或者su, vi /etc/X11/XF86Config, 把PS/2 改成 ImPS/2)

0009 加裝xwindow(bjchenxu)
用linux光盤啓動,選擇升級,然後單獨選擇包,安裝即可

0010 刪除linux分區(bjchenxu)
做一張partition magic的啓動軟盤,啓動後刪除. 或者用win2000的啓動光盤啓動,然後
刪除.

0011 如何退出man(bjchenxu)
q

0012 不編譯內核,mount ntfs分區(bjchenxu,hutuworm)
原裝rh8,未升級或編譯內核
1. 上google.com搜索並下載 kernel-ntfs-2.4.18-14.i686.rpm
2. rpm -ivh kernel-ntfs-2.4.18-14.i686.rpm
3. mkdir /mnt/c
4. mount -t ntfs /dev/hda1 /mnt/c

Read only: http://linux-ntfs.sourceforge.net/
Read/Write: http://www.jankratochvil.net/project/captive/

0013 tar 分卷壓縮和合並(WongMokin)
以每卷500M爲例
tar分卷壓縮:tar cvzpf - mytarfile.tar.gz | split -d -b 500m
tar多卷合併:cat x* > mytarfile.tar.gz

0014 使用lilo/grub時找回忘記了的root口令(bjchenxu)
三種辦法:
1.在系統進入單用戶狀態,直接用passwd root去更改
2.用安裝光盤引導系統,進行linux rescue狀態,將原來/分區掛接上來,作法如下:
cd /mnt
mkdir hd
mount -t auto /dev/hdaX(原來/分區所在的分區號) hd
cd hd
chroot ./
passwd root
這樣可以搞定
3.將本機的硬盤拿下來,掛到其他的linux系統上,採用的辦法與第二種相同
rh8中
一. lilo
1. 在出現 lilo: 提示時鍵入 linux single
畫面顯示 lilo: linux single
2. 回車可直接進入linux命令行
3. #vi /etc/shadow
將第一行,即以root開頭的一行中root:後和下一個:前的內容刪除,
第一行將類似於
root::......
保存
4. #reboot重啓,root密碼爲空
二. grub
1. 在出現grub畫面時,用上下鍵選中你平時啓動linux的那一項(別選dos喲),然後按e

2. 再次用上下鍵選中你平時啓動linux的那一項(類似於kernel
/boot/vmlinuz-2.4.18-14 ro root=LABEL=/),然後按e鍵
3. 修改你現在見到的命令行,加入single,結果如下:
kernel /boot/vmlinuz-2.4.18-14 single ro root=LABEL=/
4. 回車返回,然後按b鍵啓動,即可直接進入linux命令行
5. #vi /etc/shadow
將第一行,即以root開頭的一行中root:後和下一個:前的內容刪除,
第一行將類似於
root::......
保存
6. #reboot重啓,root密碼爲空

0015 使ctrl + alt + del失效(bjchenxu)
vi /etc/inittab
將ca::ctrlaltdel:/sbin/shutdown -t3 -r now這行註釋掉,就可以了

0016 如何看出redhat的版本是7還是8(hutuworm)
cat /proc/version或者cat /etc/redhat-release或者cat /etc/issue

0017 文件在哪個rpm中(無雙)
上www.rpmfind.net上搜,或者rpm -qf 文件名得到

0018 把man或info的信息存爲文本文件(bjchenxu)
以 tcsh 爲例:
man tcsh | col -b > tcsh.txt
info tcsh -o tcsh.txt -s

0019 利用現存兩個文件,生成一個新的文件(bjchenxu)
1. 取出兩個文件的並集(重複的行只保留一份)
2. 取出兩個文件的交集(只留下同時存在於兩個文件中的文件)
3. 刪除交集,留下其他的行
1. cat file1 file2 | sort | uniq
2. cat file1 file2 | sort | uniq -d
3. cat file1 file2 | sort | uniq -u

0020 設置com1口,讓超級終端通過com1口進行登錄(bjchenxu)
確認有/sbin/agetty,編輯/etc/inittab,添加
7:2345:respawn:/sbin/agetty /dev/ttyS0 9600
9600bps是因爲聯路由器缺省一般都是這種速率,也可以設成
19200、38400、57600、115200
修改/etc/securetty,添加一行:ttyS0,確保root用戶能登錄
重啓機器,就可以拔掉鼠標鍵盤顯示器(啓動時最好還是要看看輸出信息)了

0021 刪除目錄下所有文件包括子目錄(bjchenxu)
rm -rf 目錄名

0022 查看系統信息(bjchenxu)
cat /proc/cpuinfo - CPU (i.e. vendor, Mhz, flags like mmx)
cat /proc/interrupts - 中斷
cat /proc/ioports - 設備IO端口
cat /proc/meminfo - 內存信息(i.e. mem used, free, swap size)
cat /proc/partitions - 所有設備的所有分區
cat /proc/pci - PCI設備的信息
cat /proc/swaps - 所有Swap分區的信息
cat /proc/version - Linux的版本號 相當於 uname -r
uname -a - 看系統內核等信息

0023 去掉多餘的回車符(bjchenxu)
sed 's/^M//' test.sh > back.sh, 注意^M是敲ctrl_v ctrl-m得到的
或者 dos2unix filename

0024 切換X桌面(lnx3000)
如果你是以圖形登錄方式登錄linux,那麼點擊登錄界面上的session(任務)即可以選
擇gnome和kde。如果你是以文本方式登錄,那執行switchdesk gnome或switchdesk kde
,然後再startx就可以進入gnome或kde。
(或者vi ~/.xinitrc,添加或修改成exec gnome-session 或exec startkde,
然後用startx啓動X)

0025 通用的聲卡驅動程序(lnx3000)
OSS www.opensound.com/ ALSA www.alsa-project.org/

0026 改變redhat的系統語言/字符集(beming/mc1011)
修改 /etc/sysconfig/i18n 文件,如
LANG="en_US",xwindow會顯示英文界面,
LANG="zh_CN.GB18030",xwindow會顯示中文界面。
還有一種方法
cp /etc/sysconfig/i18n $HOME/.i18n
修改 $HOME/.i18n 文件,如
LANG="en_US",xwindow會顯示英文界面,
LANG="zh_CN.GB18030",xwindow會顯示中文界面。
這樣就可以改變個人的界面語言,而不影響別的用戶
(Debian不支持GB18030(RH的zysong字庫是有版權的)
現在好像沒有Free的GBK和GB18030字庫
vi .bashrc
export LANG=zh_CN.GB2312
export LC_ALL=zh_CN.GB2312)

0027 把屏幕設置爲90列(bjchenxu)
stty cols 90

0028 使用md5sum文件(bjchenxu)
md5sum isofile > hashfile, 將 md5sum 檔案與 hashfile 檔案內容比對, 驗證雜湊值

是否一致 md5sum –c hashfile

0029 一次解壓多個zip文件(bjchenxu)
unzip "*",注意引號不能少

0030 看pdf文件(bjchenxu)
使用xpdf或者安裝acrobat reader for linux

0031 查找權限位爲S的文件(bjchenxu)
find . -type f /( -perm -04000 -o -perm -02000 /) -exec ls -lg {} /;

0032 裝中文輸入法(bjchenxu)
以redhat8爲例,xwindow及其終端下的不用說了吧,缺省就安裝了,用ctrl-space呼出。
現在討論純console,請下載zhcon.gnuchina.org/download/src/zhcon-0.2.1.tar.gz,
放在任一目錄中,tar xvfz zhcon-0.2.1.tar.gz, cd zhcon-0.2.1, ./configure,
make, make install。安裝結束,要想使用,請運行zhcon,想退出,運行exit。

0033 把彈出的光盤收回來(beike)
#eject -t

0034 cd光盤做成iso文件(弱智)
cp /dev/cdrom xxxx.iso

0035 快速觀看開機的硬件檢測(弱智)
dmesg | more

0036 查看硬盤的使用情況(bjchenxu)
df -k 以K爲單位顯示
df -h 以人性化單位顯示,可以是b,k,m,g,t..

0037 查看目錄的大小(bjchenxu)
du -sh dirname
-s 僅顯示總計
-h 以K、M、G爲單位,提高信息的可讀性。KB、MB、GB是以1024爲換算單 位, -H以100
0爲換算單位。

0038 查找或刪除正在使用某文件的進程(wwwzc)
fuser filename
fuser -k filename

0039 安裝軟件(bjchenxu)
rpm -ivh aaa.rpm
tar xvfz aaa.tar.gz; cd aaa; ./configure; make; make install

0040 字符模式下設置/刪除環境變量(bjchenxu)
bash下
設置:export 變量名=變量值
刪除:unset 變量名
csh下
設置:setenv 變量名 變量值
刪除:unsetenv 變量名

0041 ls如何看到隱藏文件(即以.開頭的文件)(雙眼皮的豬)
ls -a
l. (適用於redhat)

0042 rpm中的文件安裝到哪裏去了(bjchenxu)
rpm -qpl aaa.rpm

0043 使用src.rpm(bjchenxu)
rpmbuild --rebuild *.src.rpm

0044 vim中顯示顏色或不顯示顏色(bjchenxu)
首先確保安裝了vim-enhanced包,然後,vi ~/.vimrc; 如果有syntax on,則顯示顏色
,syntax off,則不顯示顏色

0045 linux是實時還是分時操作系統(bjchenxu)
分時

0046 make bzImage -j的j是什麼意思(wind521)
-j主要是用在當你的系統硬件資源比較大的時候,比較富裕的時候,用這個可以來加快
編譯的速度,如-j 3

0047 源碼包怎麼沒有(bjchenxu)
你沒有安裝源代碼,你把你光盤上rpm -i *kernel*source*.rpm裝上,就可以看到你的
源代碼了。

0048 修改系統時間(bjchenxu,laixi781211,hutoworm)
date -s “2003-04-14 cst”,cst指時區,時間設定用date -s 18:10
修改後執行clock -w 寫到CMOS
hwclock --systohc
set the hardware clock to the current system time

0049 開機就mount上windows下的分區(bjchenxu)
自動將windows的d盤掛到/mnt/d上,用vi打開/etc/fstab,加入以下一行
/dev/hda5 /mnt/d vfat defaults,codepage=936,iocharset=cp936 0 0
注意,先得手工建立一個/mnt/d目錄

0050 linux怎麼用這麼多內存(bjchenxu)
爲了提高系統性能和不浪費內存,linux把多的內存做了cache,以提高io速度

0051 FSTAB 最後的配置項裏邊最後兩個數字是什麼意思(lnx3000)
第一個叫fs_freq,用來決定哪一個文件系統需要執行dump操作,0就是不需要;
第二個叫fs_passno,是系統重啓時fsck程序檢測磁盤的順序號
1 是root文件系統,2 是別的文件系統。fsck按序號檢測磁盤,0表示該文件系統不被檢

dump 執行ext2的文件系統的備份操作
fsck 檢測和修復文件系統

0052 linux中讓用戶的密碼必須有一定的長度,並且符合複雜度(eapass)
vi /etc/login.defs,改PASS_MIN_LEN

0053 linux中的翻譯軟件(bjchenxu,hutoworm)
星際譯王 xdict
console下還有個dict工具,通過DICT協議到dict.org上查11本字典,例如:dict
RTFM

0054 不讓顯示器休眠(bjchenxu)
setterm -blank 0
setterm -blank n (n爲等待時間)

0055 用dat查詢昨天的日期(gadfly)
date --date='yesterday'

0056 xwindow下如何截屏(bjchenxu)
Ksnapshot或者gimp

0057 解壓小全(bjchenxu,noclouds)
tar -I或者bunzip2命令都可以解壓.bz2文件
tar xvfj example.tar.bz2
tar xvfz example.tar.gz
tar xvfz example.tgz
tar xvf example.tar
unzip example.zip
tar -jvxf some.bz,就是把tar的zvxf 改成jvxf
zip/tar rh8下有一個圖形界面的軟件file-roller可以做這件事。另外可以用unzip
*.zip解開zip文件,unrar *.rar解開rar文件,不過unrar一般系統不自帶,要到網上下
載。
# rpm2cpio example.rpm │ cpio -div
# ar p example.deb data.tar.gz | tar zxf -
Alien提供了.tgz, .rpm, .slp和.deb等壓縮格式之間的相互轉換:
http://sourceforge.net/projects/alien
sEx提供了幾乎所有可見的壓縮格式的解壓接口:
http://sourceforge.net/projects/sex

0058 在多級目錄中查找某個文件的方法(青海湖)
find /dir -name filename.ext
du -a | grep filename.ext
locate filename.ext

0059 不讓普通用戶自己改密碼(myxfc)
[root@xin_fc etc]# chmod 511 /usr/bin/passwd
又想讓普通用戶自己改密碼
[root@xin_fc etc]# chmod 4511 /usr/bin/passwd

0060 顯卡實在配不上怎麼辦(win_bigboy)
去http://www.redflag-linux.com/,下了xfree86 4.3安裝就可以了.

0061 超強刪除格式化工具(弱智)
比PQMagic安全的、建立刪除格式化的小工具:sfdisk.exe for msdos
http://www.wushuang.net/soft/sfdisk.zip

0062 如何讓xmms播放列表裏顯示正確的中文(myxfc)
-*-*-*-*-*-iso8859-1,-misc-simsun-medium-r-normal--12-*-*-*-*-*-gbk-0,*-r-
把這個東西完全拷貝到你的字體裏面
操作方法:
右鍵單擊xmms播放工具的任何地方
會看到一個"選項",然後選擇"功能設定"選擇"fonts"
然後把上面的字體完整的拷貝到"播放清單"和 "user x font

0063 redhat linux中播放mp3文件(hehhb)
原帶的xmms不能播放MP3(無聲),要安裝一個RPM包:rpm -ivh
xmms-mp3-1.2.7-13.p.i386.rpm。打開xmms,ctl-p,在font欄中先在上半部的小框內打
勾,再選擇 “fixed(misc) gbk-0 13”號字體即可顯示中文歌曲名。在音頻輸出插件中
選擇 "開放音頻系統驅動程序 1.2.7 [lioOSS.so],即可正常播放MP3文件。

0064 安裝中文字體(hehhb)
先下載 http://freshair.netchina.com.cn/~George/sm.sh
(參考文獻: http://www.linuxeden.com/edu/doctext.php?docid=2679)
SimSun18030.ttc在微軟網站可下載,http://www.microsoft.com/china/windows2000/d
ownloads/18
030.asp 它是個msi文件,在 mswindows中安裝用的,裝好後在windows目錄下的fonts

目錄裏面就可以找到它。把simsun.ttc,SimSun18030.ttc,tahoma.ttf,tahomabd.ttf

拷貝到/usr/local/temp,然後下載的shell文件也放到這個目錄裏,然後打開終端
cd /usr/local/temp
chmod 755 sm.sh
./sm.sh

0065 裝載windows分區的FAT32、FAT16文件系統(hehhb)
以root身份進入KDE,點擊桌面上的“起點”圖標,在/mnt目錄下建立如下文件夾:c,d,
e,f,g,usb.分別用作windows下各分區和usb閃盤。
用文本編輯器打開/etc/fstab 文件.加入如下:
/dev/hda1 /mnt/c vfat iocharset=gb2312,umask=0,codepage=936 0 0
/dev/hda5 /mnt/d vfat iocharset=gb2312,umask=0,codepage=936 0 0
/dev/hda6 /mnt/e vfat iocharset=gb2312,umask=0,codepage=936 0 0
/dev/hda7 /mnt/f vfat iocharset=gb2312,umask=0,codepage=936 0 0
/dev/hda8 /mnt/g vfat iocharset=gb2312,umask=0,codepage=936 0 0
/dev/cdrom /mnt/cdrom udf,iso9660 noauto,iocharset=gb2312,owner,kudzu,ro 0
0
/dev/sda1 /mnt/usb vfat iocharset=gb2312,umask=0,codepage=936 0 0
存盤退出. 重新啓動後即可正常訪問FAT32或FAT16格式分區,解決顯示WINDOWS分區下和
光盤中文文件名亂碼
問題.其中共六列,每列用Tab鍵分開。注意此方法只能mount上Fat 分區格式.sda1是閃
盤。

0066 在X下使用五筆和拼音,區位輸入法(hmkart)
從http://www.fcitx.org/上下載fcitx的rpm包安裝即可

0067 在Linux下如何解壓rar文件(hmkart)
http://www.linuxeden.com/download/softdetail.php?softid=883
下載rar for Linux 3.2.0,解壓開後make
然後可以用unrar e youfilename.rar解壓rar文件

0068 硬盤安裝後怎麼添加/刪除rpm包(sakulagi)
redhat-config-packages --isodir=
可以指定iso文件所在的目錄

0069 字符下控制音量(grub007)
aumix

0070 用dd做iso(grub007)
dd if=/dev/cdrom of=/tmp/aaa.iso

0071 刪除幾天以前的所有東西(包括目錄名和目錄中的文件)(shally5)
find . -ctime +3 -exec rm -rf {} /;

find ./ -mtime +3 -print|xargs rm -f -r

0072 用戶的crontab在哪裏(hutuworm)
/var/spool/cron/下以用戶名命名的文件

0073 以不同的用戶身份運行程序(bjchenxu)
su - username -c "/path/to/command"
有時候需要運行特殊身份的程序, 就可以讓su來做

0074 如何清空一個文件(bjchenxu)
> filename

0075 爲什麼OpenOffice下不能顯示中文(allen1970)
更改字體設置
tools->options->font replacement
Andale Sans UI -> simsun

0076 如何備份Linux系統(Purge)
Symantec Ghost 7.5以後的版本支持Ext3 native複製

0077 linux上的partition magic(wwwzc)
Linux下一個有用的分區工具: parted
可以實時修改分區大小, 刪除/建立分區.

0078 /proc/sys/sem中每項代表什麼意思? (sakulagi)
/proc/sys/sem內容如下
250 32000 32 128
這4個參數依次爲SEMMSL(每個用戶擁有信號量最大數量),SEMMNS(系統信號量最大數量),
SEMOPM(每次semop系統調用操作數),SEMMNI(系統信號量集最大數量)

0079 Grub 引導菜單裏 bigmem smp up 都是什麼意思?(lnx3000)
smp: (symmetric multiple processor)對稱多處理器模式
bigmem: 支持1G 以上內存的優化內核
up:(Uni processor) 單處理器的模式

0080 Oracle的安裝程序爲什麼顯示亂碼?(lnx3000)
現在Oracle的安裝程序對中文的支持有問題,只能使用英文界面來安裝,在執行runinst
aller之前,執行:export LANG=C;export LC_ALL=C

0081 linux下文件和目錄的顏色代表什麼(sakulagi,弱智)
藍色表示目錄;綠色表示可執行文件;紅色表示壓縮文件;淺藍
色表示鏈接文件;灰色表示其它文件;紅色閃爍表示鏈接的文件有問題了;黃色是設備
文件,包括block, char, fifo。
用dircolors -p看到缺省的顏色設置,包括各種顏色和“粗體”,下劃線,閃爍等定義

0082 查看有多少活動httpd的腳本(bjchenxu)
#!/bin/sh
while (true)
do
pstree |grep "*/[httpd/]$"|sed 's/.*-/([0-9][0-9]*/)/*/[httpd/]$//1/'
sleep 3
done

0083 如何新增一塊硬盤(好好先生)
一、關機,物理連接硬盤
如果是IDE硬盤,注意主、從盤的設置;如果是SCSI硬盤,注意選擇一個沒有被使用的ID
號。
二、開機,檢查硬盤有沒有被linux檢測到
dmesg |grep hd*(ide硬盤)
dmesg |grep sd*(SCSI硬盤)
或者 less /var/log/dmesg
如果你沒有檢測到你的新硬盤,重啓,檢查連線,看看bios有沒有認出它來。
三、分區
你可以使用fdisk,Sfdisk或者parted(GNU分區工具,linux下的partition magic)
四、格式化
mkfs
五、修改fstab
vi /etc/fstab

0084 linux下怎麼看分區的卷標啊 (q1208c)
e2label /dev/hdxn, where x=a,b,c,d....; n=1,2,3...

0085 RH8,9中安裝後如何添加新的語言包(好好先生)
一.8.0中
1.放入第一張光盤
2.cd /mnt/cdrom/Redhat/RPMS
3.rpm -ivh ttfonts-ZH_CN-2.11-29.noarch.rpm(簡體中文,你可以用tab鍵來補齊後面
的部分,以免輸入有誤)
4.rpm -ivh ttfonts-ZH_TW-2.11-15.noarch.rpm(繁體中文)
如果你還想裝日文、韓文,試試第二張光盤上的ttfonts*.rpm.
二.9.0中
9.0不在第一張盤上,在第三張盤上.rpm包名分別爲:
ttfonts-zh_CN-2.12-1.noarch.rpm(簡體中文)
ttfonts-zh_TW-2.11-19.noarch.rpm (繁體中文)


0086 終端下抓屏(tsgx)
cat /dev/vcsX >screenshot 其中,X表示第X個終端
還可以運行script screen.log,記錄屏幕信息到screen.log裏。一會記錄到你exit爲此
。這也是抓屏的好方法。
這是在debian的cookbook上看到的。在RH9上能用。沒有在其它的系統上測試過。

0087 讓一個程序在退出登陸後繼續運行(NetDC)
#nohup 程序名 &

0088 man命令不在路徑中,如何查看非標準的man文件(bjchenxu)
nroff -man /usr/man/man1/cscope.1 | more

0089 以不同的用戶身份運行程序(bjchenxu)
su - username -c "/path/to/file"
有時候需要運行特殊身份的程序...就可以讓su來做...

0090 編輯/etc/inittab後直接生效(bjchenxu)
#init q

0091 讓linux連續執行幾個命令,出錯停止(bjchenxu)
command1 && command2 && command3

0092 如何將grub安裝到mbr(bjchenxu, NetDC)
grub> root (hd0, 0)
grub> setup (hd0)
也可以用#grub-install /dev/hda來安裝grub。

0093 安裝時把grub(lilo)寫到linux分區的引導區還是主引導扇區(MBR)(bjchenxu)
如果你想電腦一啓動就直接進入操作系統啓動菜單就把grub(lilo)寫到MBR上,如果寫到
linux分區的引導區則要用引導盤引導。建議寫到 MBR,方便點,至於說寫到MBR不安全
,該怎麼解釋呢?每裝一次win98,MBR都會被修改一次,大家覺得有什麼不安全的嗎?


0094 如何讓多系統共存(bjchenxu)
98系統的話用lilo(grub)引導,2k/nt則使用osloader引導多系統

0095 如何在圖形界面和控制檯(字符界面)之間來回切換(bjchenxu)
a.圖形界面到控制檯:Ctr+Alt+Fn(n=1,2,3,4,5,6)。
b.各控制檯之間切換:Alt+Fn(n=1,2,3,4,5,6)。
c.控制檯到圖形:Alt+F7

0096 Redhat linux常用的命令(bjchenxu)
<1>ls:列目錄。
用法:ls或ls dirName,參數:-a顯示所有文件,-l詳細列出文件。
<2>mkdir:建目錄。
用法:mkdir dirName,參數:-p建多級目錄,如:mkdir a/b/c/d/e/f -p
<3>mount:掛載分區或鏡像文件(.iso,.img)文件。
用法:
a.磁盤分區:mount deviceName mountPoint -o options,其中deviceName是磁盤分區
的設備名,比如/dev/hda1,/dev/cdrom,/dev/fd0,mountPoint 是掛載點,它是一個目
錄,options是參數,如果分區是linux分區,一般不用-o options,如果是windows分區
那options可以是iocharset=cp936,這樣windows分區裏的中文文件名就能顯示出來了。
用例:比如/dev/hda5是linux分區,我要把它掛到目錄a上(如沒目錄a那就先mkdir a)
,mount /dev/hda5 a,這樣目錄a裏的東西就是分區hda5裏的東西了,比如hda1是windo
ws分區,要把它掛到b上,mount /dev/hda1 b -o iocharset=cp936。
b.鏡像文件:mount fileName mountPoint -o loop,fileName是鏡像文件名(*.iso,*.i
mg),其它的不用說了,跟上面一樣。用例:如我有一個a.iso光盤鏡像文件,mount
a.iso a -o loop,這樣進入目錄a你就能瀏覽a.iso的內容了,*.img文件的用法一樣。

<4>find:查找文件。
用法:find inDir -name filename,inDir是你要在哪個目錄找,filename是你要找的
文件名(可以用通配符),用通配符時filename最好用單引號引起來,否則有時會出錯,
用例:find . -name test*,在當前目錄查找以test開頭的文件。
<5>grep:在文件裏查找指定的字符串。
用法:grep string filename,在filename(可用通配符)裏查找string(最好用雙引號引
起來)。參數:-r在所有子目錄裏的filename裏找。用例:grep hello *.c -r在當前目
錄下(包括子目錄)的所有.c文件裏查找hello。
<5>vi:編輯器。
用法:vi filename。filename就是你要編輯的文本文件。用了執行vi filename後,你
可能會發現你無法編輯文本內容,不要着急,這是因爲vi還沒進入編輯狀態,按a或i就
可以進入編輯狀態了,進入編輯狀態後你就可以編輯文本了。要退出編輯狀態按Esc鍵就
可以了。以下操作均要在非編輯狀態下。查找文本:輸入/和你要查找的文本並回車。退
出:輸入: 和q並回車,如果你修改了文本,那麼你要用:q!回車才能退出。保存:輸入:
w回車,如果是隻讀文件要用: w!。保存退出:輸入: wq回車,如果是隻讀就: wq!回車
。取消:按u就可以了,按一次就取消一步,可按多次取消多步。複製粘貼一行文本:把
光標移到要複製的行上的任何地方,按yy(就是連按兩次 y),把光標移到要粘貼地方
的上一行,按p,剛纔那行文本就會被插入到光標所在行的下一行,原來光標所在行後面
所有行會自動下移一行。複製粘貼多行文本:跟複製一行差不多,只是yy改成先輸入要
複製的行數緊接着按yy,後面的操作一樣。把光標移到指定行:輸入:和行號並回車,比
如移到123行:123回車,移到結尾:$回車。

0097 linux文本界面下如何關閉pc喇叭(labrun)
將/etc/inputrc中的set bell-style none 前的#去掉,或echo "set bell-style
none" >> ~/.bashrc

0098 重裝windows導致linux不能引導的解決辦法(好好先生)
如果沒有重新分區,拿linux啓動盤(或者第一張安裝光盤)引導,進入rescue模式。首先
找到原來的/分區mount在什麼地方。redhat通常是/mnt/sysimage. 執行"chroot
/mnt/sysimage". 如果是grub,輸入grub-install /dev/hd*(根據實際情況);如果是li
lo,輸入lilo -v,然後重新啓動。如果分區有所改變,對應修改/etc/lilo.conf和/boo
t/grub/grub.conf然後再執行上述命令。

0099 爲什麼裝了LINUX後win2K很慢(lnx3000,好好先生)
老問題了,你在2000是不是能看見Linux的邏輯盤,但不能訪問?
在磁盤管理裏,選中這個盤,右擊->更改"驅動器名和路徑"->"刪除"就可以了,注意不
是刪除這個盤!

0100 將linux發佈版的iso文件刻錄到光盤的方法(bjchenxu)
借用windows中的nero軟件,選擇映象文件刻錄,選擇iso文件,刻錄即可!

0101 linux中刻錄iso的方法(hutuworm)
方法一:使用xcdroast,選擇製作光碟,選擇ISO文件,刻錄!
參見http://www.xcdroast.org/xcdr098/faq-a15.htmlල
方法二:找刻錄機的命令:
cdrecord --scanbus
輸出結果爲:
0,0,0 0) 'ATAPI ' 'CD-R/RW 8X4X32 ' '5.EZ' Removable CD-ROM
刻錄的命令:
cdrecord -v speed=8 dev=0,0,0 hutuworm.iso

0102 屏幕變花時怎麼辦(雙眼皮的豬)
當您一不小心cat了一個並不是文本的文件的時候,這時屏幕會變花,那麼您可以按兩下
"Enter"鍵,再敲"reset",那麼屏幕就恢復正常了....

0103 卸載軟件包時如何得知具體包名(diablocom)
大家知道刪除軟件包的命令是rpm -e XXX,但是當我們不知道這個XXX的確切拼寫時,可
以用rpm -q -a查詢所有安裝的軟件包或者用rpm -qa |grep xxxx查詢出名字

0104 使用內存作linux下的/tmp文件夾(yulc)
在/etc/fstab中加入一行:
none /tmp tmpfs default 0 0
或者在/etc/rc.local中加入
mount tmpfs /tmp -t tmpfs -o size=128m
注:size=128m 表示/tmp最大能用128m
不管哪種方式,只要linux重啓,/tmp下的文件全部消失

0105 用ls只列出目錄(yulc)
ls -lF | grep ^d
ls -lF | grep /$
ls -F | grep /$

0106 在命令行下列出本機IP地址,而不是得到網卡信息(yulc)
ifconfig |grep "inet" |cut -c 0-36|sed -e 's/[a-zA-Z: ]//g'
hostname -i

0107 修改/etc/profile或者$HOME/.profile文件後如何立即生效(peter333)
#source /etc/profile (或者source .profile)

0108 bg和fg的使用(bjchenxu)
輸入ctrl+z,當前一個任務會被掛起並暫停, 同時屏幕上返回進程號,此時用 "bg %進
程號",會把這個進程放到後臺執行,而用" fg %進程號 "就能讓這個進程放到前臺來執
行。另外,job命令用來查看當前的被bg的進程

0109 ctrl+s與ctrl+q(bjchenxu)
ctrl-s用來暫停向終端發送數據的,屏幕就象死了一樣,可以用ctrl-q來恢復

0110 目錄統計腳本(bjchenxu)
保存成total.sh,然後用total.sh 絕對路徑,就能統計路徑下目錄的大小了
代碼:
#!/bin/sh
du $1 --max-depth=1 | sort -n|awk '{printf "%7.2fM ---->
%s/n",$1/1024,$2}'|sed 's:/.*//([^/]/{1,/}/)$:/1:g'

0111 grep不顯示本身進程(bjchenxu)
#ps -aux|grep httpd|grep -v grep
grep -v grep可以取消顯示你所執行的grep本身這個進程,-v參數是不顯示所列出的進
程名

0112 刪除目錄中含輸入關鍵字的文件(WongMokin)
find /mnt/ebook/ -type f -exec grep "在此輸入關鍵字" {} /; -print -exec rm
{} /;

0113 讓cron中的任務不回饋信息, 本例5分鐘檢查一次郵件(WongMokin)
0-59/5 * * * * /usr/local/bin/fetchmail > /dev/null 2>&1

0114 在當前目錄下解壓rpm文件(bjchenxu)
cat kernel-ntfs-2.4.20-8.i686.rpm | rpm2cpio | pax -r

0115 合併兩個Postscript或PDF文件(noclouds)
$ gs -q -dNOPAUSE -dBATCH -sDEVICE=pswrite /
-sOutputFile=bar.ps -f foo1.ps foo2.ps
$ gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite /
-sOutputFile=bar.pdf -f foo1.pdf foo2.pdf

0116 去掉apache的manual目錄中的所有.en的後綴名(bjchenxu)
進入到manual目錄
代碼:find ./ -regex .*/.en|awk -F. '{ printf "mv %s.%s.%s.%s
%s.%s.%s/n",$1,$2,$3,$4,$1,$2,$3}'|sh

0117 如何起多個X(noclouds)
startx默認以display :0.0起第一個X,通過傳遞參數給Xserver可以起多個X:
# startx -- :1.0
# startx -- :2.0
...
然後用Ctrl-Alt-F7/F8...切換。

0118 讓一個程序在退出登陸後繼續運行(noclouds,bjchenxu)
#
# disown
或者是
nohup command &

0119 看Linux啓動時屏幕的顯示信息(bjchenxu)
在啓動完後用命令dmesg查看

0120 讓vi不響鈴(sakulagi)
echo "set vb t_vb=" >> ~/.vimrc

----------------------------網絡相關篇--------------------------
0001 讓apache的默認字符集變爲中文(bjchenxu)
如果是1.*,vi httpd.conf
找到 AddDefaultCharset ISO8859-1 一行,改爲AddDefaultCharset GB2312
如果是2.*的話,需要改動一個地方,vi httpd.conf
AddDefaultCharset ISO-8859-1 改爲 AddDefaultCharset off

0002 永久更改ip(bjchenxu)
ifconfig eth0 新ip
然後編輯/etc/sysconfig/network-scripts/ifcfg-eth0,修改ip

0003 從Linux上遠程顯示Windows桌面(lnx3000)
安裝rdesktop包

0004 手動添加默認網關(bjchenxu)
以root用戶,執行: route add default gw 網關的IP
想更改網關
1 vi /etc/sysconfig/network-scripts/ifcfg-eth0
更改GATEWAY
2 /etc/init.d/network restart

0005 redhat 8.0上msn和qq(bjchenxu)
下載Gaim 0.58版:
gaim-0.58-2.i386.rpm
下載QQ插件 for gcc2.9版:
libqq-0.0.3-ft-0.58-gcc296.so.gz
將下載的文件放入/temp目錄,然後將系統中已有的Gaim刪除,即在終端仿真器中鍵入命
令:rpm -e gaim。
開始安裝
打開終端仿真器,繼續執行下列命令安裝Gaim 0.58版,即:
cd /temp         (進入temp目錄)
rpm -ivh gaim-0.58-2.i386.rpm (安裝軟件)
當安裝成功後,你就可以在GNOME或KDE桌面建立Gaim圖標了。
繼續安裝QQ插件,即鍵入命令:
gunzip libqq-0.0.3-ft-0.58-gcc296.so.gz (解壓縮文件)
cp libqq-0.0.3-ft-0.58-gcc296.so /usr/lib/gaim (複製插件到gaim庫目錄中)
軟件設置
首次啓動Gaim 0.85版時,會出現的登錄界面。先選擇“插件”,在插件對話框中點擊“
加載”,分別將libmsn.so和libqq-0.0.3-ft-0.58-gcc296.so文件裝入,確認後關閉。
然後再選擇“所有帳號”,在出現的帳號編輯器中繼續點擊“增加”,當出現的修改帳
號頁面時,我們就可以輸入自己的QQ或MSN號了,登錄名填寫QQ號碼或MSN郵箱,密碼填
寫對應的QQ或MSN密碼,Alias填寫自己的暱稱,協議選擇相應的QQ或MSN,其他的設置按
默認的即可。當全部設置完成後就可以登錄使用了。
由於MS對msn的協議經常升級,導致linux上的gaim和msn插件必須升級,目前尚無萬無一
失的解決方案,請見諒

0006 查出22端口現在運行什麼程序(bjchenxu)
lsof -i :22

0007 查看本機的IP,gateway, dns(bjchenxu)
IP:
以root用戶登錄,執行ifconfig。其中eth0是第一塊網卡,lo是默認的設備
Gateway:
以root用戶登錄,執行netstat -rn,以0.0.0.0開頭的一行的Gateway即爲默認網關
也可以查看/etc/sysconfig/network文件,裏面有指定的地址!
DNS:
more /etc/resolv.conf,內容指定如下:
nameserver 202.96.69.38
nameserver 202.96.64.38

0008 RH8.0命令行下輕鬆改變ping 的TTL值(cgweb)
#sysctl -w net.ipv4.ip_default_ttl=N
(N=0~255),若N>255,則ttl=0

0009 RH8.0命令行下輕鬆改變系統配置默認值(houaq)

編輯/etc/sysctl.conf, 例如,將
net.ipv4.ip_forward = 0
變爲
net.ipv4.ip_forward = 1
重啓後生效,用sysctl -a查看可知

0010 mount局域網上其他windows機器共享出的目錄(bjchenxu)
mount -t smbfs -o username=guest,password=guest //machine/path /mnt/cdrom

0011 允許|禁止root通過SSH登陸(Fun-FreeBSD)
修改sshd_config:PermitRootLogin no|yes

0012 讓root直接telnet登陸(bjchenxu)
編輯/etc/pam.d/login,去掉
auth required /lib/security/pam_securetty.so 這句話

0013 在linux接adsl設備(wind521)
需要一個運轉正常的Linux + 至少一塊網卡 + 寬帶設備已經申請完畢,同時已經開通。
目前市場上大概有幾種ADSL設備,他們工作的方式有一些細微的差別。
就是通過虛擬撥號來完成上網的這一過程,也就是利用pppoe設備來進行虛擬撥號的叫作
全向貓,就是一種加電後自動的進行撥號的工作,然後留給我們的接口是RJ45,大連地
區一般留給我們的網關都是10.0.0.2,這種設備最容易對付,最後是直接分配給用戶一個
固定的IP,相對大家來說也比較容易對付
1.第一種需要進行撥號:
這幾種設備都是通過eth接口與計算機進行通訊的,所以先將硬件設備的連接作好,尤其
是寬帶貓的,一定要確認無誤(否則一會兒要不去可不算我的事情)
然後啓動系統,確認系統上是否安裝rp-pppoe這個軟件(通過rpm -qa|grep pppoe來查
找),如沒有安裝的用戶,在光盤裏或是到網上去down一個來,安裝上後,以root用戶
執行adsl-setup,這樣就進入了adsl的資料的設定狀態,要求輸入申請寬帶的用戶名以
及其他一些信息,確認沒有問題,接受直至最後(裏面都是E文,但是一看即能懂,比較
簡單,有關一個防火牆的設置,我一般都不用,選0,大家可以具體考慮)。
配置完成後,以root用戶執行adsl-start,這樣將進行adsl的撥號工作,正常就會一下
上線,如有什麼具體問題,去看一下日誌(/var/log/messages)裏面告訴你什麼了。
停掉adsl,執行adsl-stop就可以了(很簡單的)
2.另外兩種比較容易對付:
全向貓:只要將你的網卡的IP設置成一個10網段的IP,然後網關指到全向貓的IP,上(1
0.0.0.2),基本上不有太大的問題
 固定IP:就像配置本地兒的網卡一樣,將IP,網關,DNS都按申請來的填寫上就可以搞
定了

0014 讓linux自動同步時間(shunz)
vi /etc/crontab
加上一句:
00 0 1 * * root rdate -s time.nist.gov

0015 linux的網上資源有哪些(bjchenxu)
國外
http://lwn.net/
http://www.tldp.org/
http://www.yolinux.com/(flying-dancebig big pig)
http://www.justlinux.com/
http://www.linuxtoday.com/
http://www.linuxquestions.org/
http://www.fokus.gmd.de/linux/
http://www.linux-tutorial.info/
http://public.www.planetmirror.com/
http://www.freebsdforums.org/forums/
http://www.netfilter.org/documentation/
http://www-106.ibm.com/developerworks/linux/

國內
http://www.fanqiang.com/
http://www.linuxsir.com/
http://www.chinaunix.net/
http://www.linuxfans.org/(deadcat)
http://www.linuxeden.com/
http://www.linuxforum.net/
http://www.linuxaid.com.cn/
http://freesoft.online.sh.cn/
http://www-900.ibm.com/developerWorks/cn/linux/index.shtml
http://www.neweasier.com/software.html
http://www.blueidea.com/bbs/archivecontent.asp?id=635906(sqh)
http://westlinux.ywzc.net/(onesun)

0016 改變sshd的端口(bjchenxu)
在/etc/ssh/sshd_config中加入一行:Port 2222,/etc/init.d/sshd restart重啓守護
進程

0017 改變telnet的端口(bjchenxu)
將/etc/services文件中telnet對應的端口號21改爲你想要的值,/etc/init.d/xinetd
restart重啓守護進程

0018 終端模式有問題(sakulagi)
export TERM=vt100

0019 模仿超級終端,LINUX裏什麼程序連接路由器和交換機(alstone)
minicom

0020 ssh上來能不能不自動斷線(wind521)
那是timetou的設置,修改TMOUT變量值

0021 用什麼工具做入侵檢測(bjchenxu)
snort

0022 Linux下檢測程序內存泄漏的工具(bjchenxu)
cchecker或是efence庫都可以

0023 linux下如何監視所有通過本機網卡的數據(bjchenxu)
tcpdump iptraf

0024 爲什麼root執行好多命令都說command not found(bjchenxu)
你是telnet上來,然後su成root的吧,改改你的su命令格式,應該是su - root

0025 關閉用戶的POP3權限(tiansgx)
把POP3的端口關了就可以了。 在文件/etc/services中找到這一行 pop-3 110/tcp 把這
一行前加個'#',把它註釋掉就可以了。

0026 linux下播放flash動畫(myxfc)
linux下播放flash動畫用這個東西,不會造成瀏覽器的關閉(其他的插件不好用)
首先下載flash播放動畫在linux的插件
http://www.collaborium.org/onsite/jos2000/related/soft/flash_linux.tar.gz
tar zxvf flash_linux.tar.gz
打開包之後,會看到Linux文件夾
在linux文件頰裏有兩個文件libflashplayer.so 和shockwaveflash.class,把這兩個文
件拷貝到你的瀏覽器裏的插件裏(瀏覽器不一樣,插件的位置可能也不一樣)
/usr/lib/mozilla-1.0.1/plugins,就可以了

0027 鎖定wu-ftp用戶目錄(wangla)
編輯ftpaccess文件
restricted-uid *
這一句很重要,限制了ftp用戶在自己的目錄裏。

0028 服務器怎麼不讓telnet(知秋一葉)
服務器上必須啓動telnet服務 && 服務器的防火牆優先級應該設爲低

0029 防止任何人使用su命令成爲root(xiaohu0)
1.vi /etc/pam.d/su
auth sufficient /lib/security/pam_rootok.so debug
auth required /lib/security/pam_wheel.so group=wheel
2.在/etc/pam. d/su配置文件中定義了wheel組.

0030 如何使lynx瀏覽器能夠瀏覽中文網頁(Ghost_Vale)
瀏覽簡體中文網頁就的修改如下設置
Save options to disk: [X]
Display and Character Set
Display character set : [Chinese________________________]
Assumed document character set(!): [iso-8859-1______]
CJK mode (!) : [ON_]
然後移到最下面的 Accept Changes 按下 Enter 保存就可以了
當然你的系統要支持簡體中文纔可以

0031 網卡激活了,卻上不了網,怎麼辦?(Slock)
trace一下,看看到底是在那一塊被阻住的。
1.Ping自己
2.Ping網關
3.Ping DNS
4.trace DNS
If All=ok
then nslookup www.sina.com.cn
Ping sina's address
Tra sina' address
基本上就可以知道結果了

0032 在redhat9下配samba,win2000能訪問,win98不能訪問?(squall2003)
如果是wind98必需修改註冊表:HKEY_LOCAL_MACHINE/system/correntcontrolset/servi
ces/Vxd/VNETSUP下建個D值:EnablePlainTextpasswd,鍵值1

0033 如何得到網卡的MAC地址(bjchenxu,hutuworm)
arp -a | awk '{print $4}'
ifconfig eth0 | head -1 | awk '{print $5}'

0034 如何得到網卡的IP地址(mb)
ifconfig eth0 |awk '/inet addr/ {split($2,x,":");print x[2]}'

0035 如何修改Linux機器所在的工作組(hutuworm)
vi /etc/samba/smb.conf,修改workgroup = 一行,將組名寫在後面。

0036 一塊網卡如何綁定兩個ip(linuxloveu)
#cd /etc/sysconfig/network-scripts
#cp ifcfg-eth0 ifcfg-eth0:1
#vi ifcfg-eth0:1
修改IP和設備名
Debian下一個網卡綁定多個ip的方法(NetDC)
修改/etc/network/interfaces
auto eth0
iface eth0 inet static
address 172.16.3.123
netmask 255.255.255.0
network 172.16.3.0
broadcast 172.16.3.255
gateway 172.16.3.1

auto eth0:1
iface eth0:1 inet static
address 10.16.3.123
netmask 255.255.0.0
network 10.16.0.0
broadcast 10.16.255.255
修改/etc/network/ifstate
lo=lo
eth0=eth0
eth0:1=eth0:1
然後/etc/init.d/networking restart就可以了。

0037 一個ip如何綁定兩塊網卡(hutuworm)
假設192.168.0.88是ip,192.168.0.1是網關:
/sbin/modprobe bonding miimon=100 mode=1
/sbin/ifdown eth0
/sbin/ifdown eth1
/sbin/ifconfig bond0 192.168.0.88
/sbin/ifenslave bond0 eth0 eth1
/sbin/route add default gw 192.168.0.1

0038 192.168.1.0/24(雙眼皮的豬)
它與192.168.1.0/255.255.255.0是等價的,只是表示方式不同....

0039 linux下清空arp表的命令(NetDC)
#arp -d -a(適用於bsd)
for HOST in `arp | sed '/Address/d' | awk '{ print $1}'` ; do arp -d $HOST;
done

0040 使用ntp協議從服務器同步時間(NetDC)
ntpdate NTP-SERVER 例:ntpdate 172.16.2.1

0041 host命令的用法(bjchenxu)
host能夠用來查詢域名,它還能得到更多的信息
host -t mx example.com可以查詢出example.com的MX記錄,以及處理mail的host的名字

host -l example.com會返回所有註冊在example.com下的域名
host -a example.com則會顯示這個主機的所有域名信息.


----------------------------程序開發篇--------------------------
0001 linux下調試core文件(bjchenxu)
gdb
:出錯產生core dump的可執行程序。
: core dump的文件名,缺省是“core”

0002 gcc abc.c得到的a.out不能運行(bjchenxu)
./a.out

0003 c++ 編譯時爲什麼出錯信息說cout沒定義(bjchenxu)
include頭文件完後加入 using namespace std;

0004 新編譯生成的gcc ,使用的標準連接庫都在/usr/local/lib 下了,但使用的缺省
的連接路徑是 /usr/lib 怎樣添加?(除了在每次編譯時 增加 -L /usr/local/lib 以
外)(sakulagi, hutuworm)
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
寫到~/.bash_profile裏面。
增加一種簡便辦法:
將/usr/local/lib加入/etc/ld.so.conf,然後運行一次ldconfig

----------------------------經典圖書篇--------------------------
0001 GNU/Linux高級網絡應用服務指南(bjchenxu)
linuxaid網站
機械工業出版社
優點:又全又精,全都是實戰之作
缺點:針對版本較低:redhat 6.2

0002 Linux Apache Web Server管理指南(Linux Apache Web Server
Administration)(bjchenxu)
(美)Charles Aulds 譯者:馬樹奇 金燕
電子工業出版社
優點:目前我還沒有發現哪個關於apache的問題這本書沒有講過
缺點:針對1.3.x,最新的針對2.0.*的中文版待出
市場價: ¥46.00
總站會員價:
¥34.50(4-5星會員) ¥35.88(1-3星會員) ¥36.80(普通會員)
ISBN:7-5053-6563-0
出版日期:2001-03-01

0003 Linux內核情景分析(bjchenxu)
浙江大學出版社
優點:太透徹了,沒法不懂
缺點:還是版本問題,呵呵,內核更新太快了,不過還是必讀

0004 Unix環境高級編程(bjchenxu)
Richard Stevens
機械工業出版社
優點:博大精深
缺點:初學者是很難理解的,否則怎麼叫《高級編程》呢?

0005 編程精粹--Microsoft編寫優質無錯c程序祕訣(bjchenxu)
Steve Maguire
電子工業出版社
優點:不說了,作者是微軟的資深工程師
缺點:很難找了,1994年出的

0006 Understanding the Linux Kernel, 2nd Edition(hutuworm)
作者:Daniel P. Bovet & Marco Cesati
出版:O'Reilly
讀了這本書之後,你就會明白在什麼情況下Linux具有最佳的性能,以及它如何面對挑戰
,在各種環境中提供進程調度、文件訪問和內存管理時的優良的系統響應。作者通過解
釋其重要性來引入每一個題目,並將內核操作與Unix程序員和用戶熟悉的系統調用或實
用程序聯繫起來。

0007 UNIX操作系統教程(英文版)(弱智)
by Syed Mansoor Sarwar ...
機械工業出版社
特點:淺顯易懂,着重unix基礎概念和整體理解,順便複習英語。
另外:機械工業出版社已經出版了中文版,名稱:UNIX 教程

0008 UNIX編程環境(弱智)
by Brian W.Kernighan, Rob Pike
陳向羣 等譯
機械工業出版社
特點:淺顯,深入淺出講解如何使用UNIX及各種工具,簡單介紹Unix的編程環境;對比
“UNIX環境高級編程”,此書適合新手入門。
缺點:目前沒有英文版

0009 The Art of UNIX Programming(hutuworm)
作者: Eric Steven Raymond
網址: http://catb.org/~esr/writings/taoup/html/
優點: E.S. Raymond經典著作的優點就不用說了
其他:該書於9月19日停止更新,穩定爲1.0版,並已送往Addison-Wesley出版社的打印

0010 unix網絡編程--卷一《套接口API和X/Open傳輸接口API》(slg1972)
清華
W.Richard Stevens著(已故)
詳細地講解了unix網絡的編程
非入門級的東西
0010和0011及其兩書的源碼下載地址
http://www.tomydan.net/downloads/ebooks/unp.rar
或者
http://linux.syunicom.com/unp.tar.gz

0011 unix網絡編程--卷二《進程間通訊》(slg1972)
清華
W.Richard Stevens著(已故)
詳細講解了unix之間的進程,線程之間的關係,以及各種不同標準的進程編程的異同。

非入門級的東西

0012 unix網絡編程--卷三《應用程序》(slg1972, hutuworm)
我至今也沒有買到,應該也不錯。
沒有買到是因爲Richard Stevens大師英年早逝,再也不可能完成這計劃中的第三捲了。
據說其未竟稿可能由Gary R. Wright整理續寫出來,但是自大師駕鶴以來一直杳無音信

0013 《基於C++ CORBA高級編程》(slg1972)
清大
Michi Henning,Steve Vinoski著
中間界的好書,通向corba應用的必備資料。
非入門級的東東。

0014 unix linux網管通鑑(odin_free)
電子版的,包括本版精華,請到本版ftp服務器下載
評價:我見過關於unix知識最全面、最實用的chm文檔,相當於一個小型網站,裏面支持
全文檢索,推薦所有還沒有的兄弟姐妹們下載

0015 www.chinaoy.com(aomin5555)
不錯,挺全的,圖書下載的好網址:
redhat linux9.0 官方入門指南
·redhat linux9.0 官方安裝指南
·redhat linux9.0 官方定製設置手冊
·redhat linux基礎教程
·Linux 參考大全
·清華論壇linux精華
·Linux系統管理員指南中文手冊
·Linux網站建設和維護全攻略
·redhat linux8.0 安裝手冊
·Linux環境database管理員指南

0016 Linux Advanced Routing & Traffic Control(hutuworm)
專門講LINUX IPROUTE2的書,大概100頁左右,www.lartc.org
中文版在:http://www.lartc.org/LARTC-zh_CN.GB2312.pdf

0017 Debian User強烈推薦看的書(NetDC)
Debian Reference (Debian參考手冊)
http://qref.sourceforge.net/
簡體中文版的pdf文檔。
http://qref.sourceforge.net/Debian/reference/reference.zh-cn.pdf

----------------------------mysql相關篇--------------------------
0001 mysql的數據庫存放在什麼地方(bjchenxu)
1. 如果使用rpm包安裝,應該在/var/lib/mysql目錄下,以數據庫名爲目錄名
2. 如果源碼安裝在/usr/local/mysql中,應該在/usr/local/mysql/var中,以數據庫名
爲目錄名

-------------------------------雜項篇--------------------------------
請不要做浮躁的人
http://www.chinaunix.net/forum/viewtopic.php?t=93113
歡迎轉載本文,請註明來自www.chinaunix.net,轉載本文的網址如下:
a. linuxsir網站
http://www.linuxsir.com/bbs/showthread.php?s=&threadid=46279
b. 水木清華linuxapp版
http://proxy.smth.edu.cn:8000/bbscon.php?board=LinuxApp&id=12810&ftype=9
c. csdn
http://expert.csdn.net/expert/FAQ/FAQ_Index.asp?id=175651
d. dev-club
http://www.dev-club.com/club/bbs/showAnnounce.asp?page=1&id=2175595
e. 網絡從業者論壇
http://net-worker.vicp.net/luntan/dispbbs.asp?boardid=10&id=58&star=1ฆ
f. linux伊甸園
http://www.linuxeden.com/edu/doctext.php?docid=3020
g. 風雨人生技術網
http://www.guomin.net/index.php?showtopic=220
http://www.guomin.net/index.php?showtopic=219
http://www.guomin.net/index.php?showtopic=218
h. 聚賢莊
http://www.ncn.cn/linux/2003001.htm
i. 阿葉的小屋
http://hylinux.3322.org/showarticle.php?action=showarticle&id=2794
j. 網帆信息交換站
http://www.cniis.cn/bbs/dispbbs.asp?boardID=33&ID=3696&page=1

 

最後進行編輯的是 bjchenxu on 2004-03-08 09:03, 總計第 39 次編輯
--
※ 修改:·Galoisx 於 03月21日11:22:09 修改本文·[FROM: 210.45.72.111]
※ 來源:·瀚海星雲 bbs.ustc.edu.cn·[FROM: 202.38.91.53]

[返回上一頁] [本討論區]
v

jbhuang @ 01:06 PM 發表於 linux | 編輯 | 留言 (0) | TrackBack (0)

2004年04月02日

繼續掃盲——linux幾條命令的基本用法

提示符爲#表示需要root權限,$表示一般用戶權限即可

1. linux下面命令行查找文件的兩個方法
1) find

$ find 路徑 -name 待查找文件 -print

-xdev參數把查詢操作限制在當前的文件系統之中:

$ find /mnt/dos -name *.sys -print -xdev

2) locate + updatedb:

# updatedb
$ locate 待查找文件

2. 使用whatis和apropos命令獲取命令簡介

# makewhatis //更新whatis數據庫
$ whatis w //查看命令w的功能
$ apropos search //查找有search功能的有哪些命令

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章