Ubuntu下靜態IP的設定(VirtualBOX)
1.設定Sun VirtualBox上的網路連接方式.
在Sun VirtualBox上找到你要設定的Ubuntu,點設定->網路->本地串連1->串連方式選擇Bridged Adapter (預設選擇是NAT,這是導致無法互訪的關鍵).然後Advanced下選擇你對應的網卡,這裡一般會自動選擇。
2.在Ubuntu上設定固定IP和DNS.
1) 開啟一個終端.
2)設定固定IP
在終端上輸入sudo vi /etc/network/interfaces,一般會顯示為:
auto lo
iface lo inet loopback
這裡在下面添加以下內容:
auto eth0
iface eth0 inet static
address 192.168.0.120 # 你要設定的固定IP
gateway 192.168.0.1 # 網關
netmask 255.255.255.0 #子網路遮罩
nameserver 192.168.1.1 #網管dns
這裡需要注意兩點,有的人修改後沒用,則可以在終端中通過ifconfig -a看出現的是eth0還是eth1.還有一點就是網關和子網路遮罩,以及接下來要改的DNS,則可以在Windows Xp上輸入CMD命令ipconfig -all來擷取.
3)設定DNS(此步在virtualbox中可不做)
如上面所說在Windows XP通過CMD命令ipconfig -all獲得DNS後,則進入Ubuntu的/etc/resolv.conf 進行修改.具體命令如下:
sudo vi /etc/resolv.conf
修改裡面的nameserver如我修改成nameserver 208.96.128.88
3.最後一步,重啟Ubuntu網卡.
在終端中輸入重啟命令,如下:
sudo /etc/init.d/networking restart
之後在Windows XP或者Ubuntu ping其他機器的網址便可訪問了,同時還有SSH等.
Ubuntu下Samba伺服器搭建
1.更新安裝
#sudo apt-get install samba smbclient
2.編輯/etc/samba/smb.conf,將預設的[homes]下的所有的被注釋的有效行取消注釋
#sudo apt-get install samba smbclient
3.添加使用者以及密碼
#sudo smbpasswd -a username
4.啟動Samba,重啟系統
#smbd
#nmbd
就OK了
Ubuntu開啟ssh服務
網上有很多介紹在Ubuntu下開啟SSH服務的文章,但大多數介紹的方法測試後都不太理想,均不能實現遠程登入到Ubuntu上,最後分析原因是都沒有真正開啟ssh-server服務。
最終成功的方法如下:
1. 首先在伺服器上安裝ssh的伺服器端。
$ sudo apt-get install openssh-server openssh-client
2. 確認sshserver是否啟動
$ ps -e | grep ssh
如果只有ssh-agent那ssh-server還沒有啟動,需要/etc/init.d/ssh start,如果看到sshd那說明ssh-server已經啟動了
3. 啟動ssh-server。
$ /etc/init.d/ssh restart
3. 確認ssh-server已經正常工作。
$ netstat -tlp
tcp6 0 0 *:ssh *:* LISTEN -
看到上面這一行輸出說明ssh-server已經在運行了。
4. 在用戶端通過ssh登入伺服器。假設伺服器的IP地址是192.168.1.168,登入的使用者名稱是hao。
$ ssh -l hao 192.168.1.168
接下來會提示輸入密碼,然後就能成功登入到伺服器上了
-------------------------------------------------------------------
以下內容供參考:
Samba服務在Ubuntu伺服器版本中預設並沒有安裝。
1.Samba軟體包的安裝
在Ubuntu的終端中輸入一下命令:
#sudo apt-get install samba
#sudo apt-get install smbclient
2.Samba伺服器的啟動與關閉
啟動Samba伺服器只需執行如下命令:
#sudo /etc/init.d/samba start
啟動Samba伺服器後,可以使用ps命令查看進程:
#ps -aux
可以看到Samba服務會同時啟動兩個服務,其中smbd主要用來管理共用出來的目錄,nmbd主要用來解析NetBIOS名。在Windows系統中,主機可以被加入一個組中,這樣每個主機都必須有一個名字,這個名字是用於在網上被標誌的名,並非機器的主機名稱,將其稱為NetBIOS名。其中nmbd進程是隨著smbd進程啟動而啟動。
關閉Samba服務,使用命令:
#/etc/init.d/samba stop
或者:
#smbcontrol smbd shutdown -----------此命令只關閉smbd
重新啟動Samba伺服器:
#/etc/init.d/samba restart
3.配置Samba服務
Samba伺服器主要設定檔為/etc/samba/smb.conf,並且可以將NetBIOS名與主機的對應關係寫在/etc/samba/lmhosts檔案中。
(1)在Windows系統中不用輸入密碼訪問Linux共用目錄
在Linux共用一個目錄,將建立好的目錄的設定資訊寫入/etc/smb.conf檔案即可。如:若共用/home/share目錄,要在Windows系統中訪問這個共用的目錄,假設Windows主機的IP為192.168.0.11,Linux主機的IP為192.168.10,進行如下操作:
#mkdir /home/share
#vi smb.conf
將檔案中的內容做如下相應修改:
security=user 改為security=share
在檔案結尾添加如下行:
[share]
comment=this is Linux share directory
path=/home/share
public=yes
writable=yes
儲存退出,啟動Samba服務:
#/etc/init.d/samba start
設定完成!
在Windows 下訪問共用目錄,可點擊運行,輸入
\\192.168.0.10\share
這樣就能以匿名使用者存取共用目錄share了。
其中設定檔smb.conf主要可以分為兩部分:前一部分為Global Settings(全域部分),全域部分能夠對主機的相關資訊進行配置,而且能夠配置訪問時是否要求輸入密碼。常用選項有:
workgroup=MSHOME
這部分是Windows主機的工作群組明,Windows主機必須在同一個工作群組中,
server string=%h server(Samba,Ubuntu)
這個選項是顯示在Windows上的資訊,可以自訂,其中%h為Samba設定檔中的變數,代表了主機名稱,即使用hostname命令得到的主機名稱。
log file=/var/log/samba/log.%m
這裡指定了Samba服務的記錄檔所在位置,其中%m也是samb.conf檔案的變數,代表了登入主機的NetBIOS名。Windows主機的NetBIOS命令可以通過滑鼠右鍵開啟“我的電腦/屬性/電腦明/更改/其他“來查看。
max log size=1000
設定記錄檔的最大尺寸,大小為KB。
需要注意的是在smb.conf檔案中“#”和“;”都是注釋。
在smb.conf檔案中跌入部分就是共用部分,在此部分中需要將共用的目錄添加到此檔案中。此部分的格式和主要選項如下:
[share] ----------在Windows主機中看到的共用檔案名稱,不一定與Linux中共用的檔案名稱一致,
comment=this is Linux share directory ----------對此目錄的說明
path=/home/share -------Linux系統真實的共用目錄,必須為絕對路徑
public=yes -------是否允許所有人都能夠看到此目錄,no為看不到
writable=yes -------是否允許使用者在此目錄下可寫,no為不可些,如果可寫,還需要目錄具有w許可權
read only=yes --------設定使用者是否唯讀
create mode=0700 --------如果有可寫入權限,建立的檔案預設的許可權掩碼
directory mode=0755 --------如果有可寫入權限,建立的目錄預設的許可權掩碼
(2)在Windows系統之需要輸入密碼才能訪問Linux共用目錄
在smb.conf檔案中,預設行是:
security=user
這行設定了Samba的安全等級,Samba一共可以設定四個安全登記,由底到高分別為:
share:這個選項表示任何人都可以不需要輸入密碼登入。
user:這個是Samba的預設層級,要求每個使用者必須輸入密碼才能登入。
server:user層級的密碼都是儲存在本機上,而server層級的密碼和使用者名稱都儲存在另一台主機上。
domain:這個層級要求網路裡必須有一台Windows的網域控制站,驗證工作由網域控制站來完成。
需要注意:只要輸入使用者名稱和密碼的層級,其使用者名稱一定首先也是Linux系統內的使用者。
如果將Samba的安全層級設定了user層級,那麼使用者登入Samba主機必須輸入密碼,此使用者必須是Linux中的/etc/passwd檔案存在的使用者,smb.conf檔案的配置如下:
在smb.conf檔案中的security=user下加入:
smb passwd file= /etc/samba/smbpasswd
在共用部分添加:
[homes]
comment=Home Directories
valid users=%S
其中%S為一個變數,它代表了登入使用者的使用者名稱,既認證的使用者登入後就能進入自己的宿主目錄。然後在 /etc/samba下建立smbpasswd檔案並加入使用者:
#touch /etc/samba/smbpasswd
#smbpasswd -a user1
NEW SMB password:
Retype new SMB password:
這樣就可以讓user1登入Samba主機了。其中smbpasswd命令的格式為:
#smbpasswd [-選項] 使用者名稱
常見選項有:
-a:新添加一個Samba使用者。
-d:禁用一個Samba使用者。
-e:使禁用的Samba使用者解禁。
如果需要對設定進行檢測,我們可以直接使用testparm命令。
(3)在Linux中訪問Windows的共用目錄
在Linux中,可以直接將Windows中的共用目錄掛在到本機中,然後就像操作自己主機上的檔案一樣進行操作。我們可以使用smbclient命令查看指定主機的共用目錄資訊。
# smbclient -L //[目標主機IP地址]
當查看到Windows系統中的共用目錄後,可以使用smbmount命令來進行掛載共用的目錄,smbmount命令的格式為:
#smbmount '\\Windows主機IP\共用的目錄名' 掛載點 -O username
(4)在Linux中訪問Linux主機的共用目錄
跟訪問Windows中的共用目錄一樣,用自己的共用目錄測試如下:
===================================================
Samaba常見的故障排除
1.限定使用者訪問無效
管理員限定了只有使用者user1才可以訪問共用目錄/sharedoc,測試時卻發現使用者user2也可以訪問,甚至所有的使用者都可以訪問!這是一個很容易出錯的問題,我們看看在Samba設定檔/etc/samba/smb.conf中的相應設定段:
[sharedoc]
path=/sharedoc
valid user=user1
writable=yes
乍一看沒什麼問題,用testparm工具測試一下看看:
#testparm
Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[sharedoc]"
Unknown parameter encountered: "valid user"
Ignoring unknown parameter "valid user"
.......
[sharedoc]
path=/sharedoc
read only=No
testparm是Samba提供的一個十分有用的測試載入器,它除顯示Samba所有配置參數預設值外,還能檢測參數的實際取值,並與Samba管理員所設定的取值進行對比,檢測smb.conf檔案有沒有包含任何無效參數。
通過測試發現,設定共用資源時,參數“valid users”少寫了個"s“ ,變成了"valid user",結果在讀取設定檔時檢測為未知參數並忽略了它,這樣這條參數就無效了,也就相當於沒有設定有效使用者,則預設共用目錄為所有使用者都可以訪問,就出現了前面提到的問題。可見如果不小心設定錯誤,後果是相當嚴重的。
Samba的配置選項文法要求嚴格,建議配置好後用testparm檢測一下看看是否有語法錯誤,以免發生此種現象。
2.使用者權限設定無效
在解決了限定使用者的問題,又發現明明設定了"writable=yes",賦予user1寫入權限,但user1在Windows用戶端卻無法對這個共用目錄進行寫操作。
這裡有個概念問題,儘管Samba授予使用者user1對共用資源具有寫入權限,但底層Linux系統許可不允許user1在共用資源上添加檔案或目錄。這時,唯有更改該目錄的Linux檔案使用權限設定,更改完成後,才可以進行前述的寫入操作。也就是說,Linux系統中使用者user1對此目錄的許可權與Samba服務中授予使用者user1對此目錄的操作許可權要取一個交集!
觀察共用目錄/sharedoc的許可權:
#ls -ld /sharedoc
drwxr-xr-x 2 root root 4096 2月 6 23:54 /sharedoc
在根目錄下只有root只有寫操作,root建立的目錄/sharedoc自然所有者為root,所屬組為root管理員,看到使用者user1並不是所屬組的成員更不是所有者,屬於其他人(others),其他成員只具備"r-x"即可讀可執行檔許可權,並不具備寫入權限,所以即便Samba中授權使用者user1有寫入權限也無濟於事。
如果要授予user1可以進行寫操作,最簡單的辦法就是賦予其他人對目錄具備寫入權限:
#chmod o+w /sharedoc
正確的解決方案最好是將設定許可權的使用者加入到目錄對應的組中,對組授權,進行統一管理。
3.解決中文亂碼問題
在Windows中看到Linux的共用檔案和目錄中文都顯示亂碼。
要解決這個問題,首先執行命令locale查看一下系統的字元集:
#locale
LANG=zh_CN.GB18030
LC_CTYPE="zh_CN.GB18030"
LC_NUMERIC="zh_CN.GB18030"
LC_TIME="zh_CN.GB18030"
.........
然後根據locale查到的字元集設定,修改設定檔smb.conf中的"[Global]"全域參數設定段:
(1)如果locale是zh_CN.UTF-8,添加如下三行設定:
display charset=UTF-8
unix charset=UTF-8
dos charset=UTF-8
(2)如果locale是zh_CN.GBK、zh_CN.gb2312或zh_CN.GB18030,添加如下三行設定:
display charset=cp936
unix charset=cp936
dos charset=cp936
重新啟動Samba服務,則無論從Windows網路位置還是直接用DOS命令查詢,均可顯示正常中文。
4.如何不顯示隱藏檔案
如果訪問宿主目錄,那些以"."開頭的隱藏檔案都顯示得一清二楚,那麼就有可能一個誤操作把重要的設定檔刪除了,這是很危險的。
要讓隱藏檔案不顯示,需要在Samba設定檔的[homes]段添加如下設定:
veto files=/.*/
"veto files"參數為設定禁止檔案,指定了既看不見又不能訪問的檔案和目錄列表,列表中每個條目必須用斜杠(/)分開,星號(*)和問號(?)萬用字元能夠用於指定多個檔案和目錄。所以"/.*/"就表示禁止所有以"."開頭的檔案。
同時還可以做其他一些限定,如Samba所有共用目錄中都禁止顯示包含詞Windows的任何檔案,以".exe"結尾的任何檔案和包含詞bill的任何目錄,可以在[Global]段添加如下行:
veto files=/*Windows*/*.exe/*bill/
需要注意的是:
(1)如果要禁止顯示隱藏檔案和包含詞newfile的檔案,不能用如下的書寫方式:
veto files=/.*/
veto files=/*newfile*/
這樣設定,第一行的禁止顯示隱藏檔案將不能生效,必須寫成:
veto files=/.*/*newfile*/
(2)設定"veto files"參數會影響Samba的效能,因為在列出檔案和查詢期間,掃描檔案和目錄時,為了匹配,Samba將被迫搜尋檢查所有的檔案和目錄。
Samba的故障一般排除方法如下(參考):
1.確定故障的癥狀。可能會有人告訴你癥狀或你觀察到第一手的癥狀。
2.因為涉及的是網路系統,確定故障發生在本地還是遠程,癥狀經常會協助你做決定,或建議能夠先進行測試,以便決定。
3.決定了故障所在的位置後,就集中用一套標準測試來確定故障的原因,並嘗試消除癥狀,反覆進行,直到解決問題。
有關診斷Samba和Windows客戶之間故障的工具:
smbclient:檢驗可以訪問的Samba伺服器以及要求的共用已被定義。
smbstatus:檢查水正對Samba伺服器開啟串連,在訪問什麼共用。
nmblookup:檢測網路上的註冊名稱。
DOS net view命令:從Windows系統檢查伺服器上都提供哪些共用。
DOS netstat:檢查NetBIOS名稱、適配器狀態資訊等。
tcpdump:捕獲網路檔案資訊包,檢查Windows用戶端和伺服器的對話。
Ethereal:詳細分析資訊包,檢查Windows用戶端和Samba之間出現的故障。