2011年10月21日 星期五

auto mount windows shares on linux filesystem


如何讓unix可以自動掛載windows分享資料夾:

實例: Linux CentOS 5.4 + Windwos XP
目的: 要將Windows主機smbhost所分享出來的share資料夾,
其存取帳號為user,密碼為pass,
以唯讀,uid=xxx,gid=yyy身份
掛載在Linux主機的/mnt/smbhost/share目錄上供存取
方法:
1.root建立linux掛載點
#mkdir /mnt/smbhost

2.root修改linux自動掛載相關組態檔,credentials帳密另存其他位置
#vi /etc/auto.master
/mnt/smbhost /etc/auto.smbhost
#vi /etc/auto.smbhost
share -fstype=cifs,ro,noperm,credentials=/root/smbhost.autofs,uid=xxx,
gid=yyy ://smbhost/share
#vi /root/smbhost.autofs
username=user
password=pass

3.root保護linux自動掛載相關組態檔
#chmod 600 /etc/auto.smbhost /root/smbhost.autofs

4.重新啟動自動掛載服務autofs
#/sbin/service autofs restart

5.一般用戶利用cd進到自動掛載目錄取用資源
> cd /mnt/smbhost/share

6.採用自動掛載前可先用如下samba客戶端指令測試遠方資料夾的帳密及內容正確與否:
> smbclient -L smbhost -U user # 以帳密user/pass,列出smbhost主機有何分享資料夾
Password:

> smbclient '//smbhost/share' -U user # 以帳密user/pass,連上分享資料夾//smbhost/share
Password:
Domain=[SATURN] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]
smb: \> help # 列舉可用指令
smb: \> ls # 列舉目錄內容
smb: \> cd folder # 切換到foler資料夾
smb: \foler\> ls

參考:
http://wiki.centos.org/zh-tw/TipsAndTricks/WindowsShares
http://linux.vbird.org/linux_server/0370samba.php

2011年6月14日 星期二

turn old pc to ad hoc desktop connectors


想要善用舊電腦,最佳方法不外是拿來當專用伺服器或客戶端使用.
以下介紹如何利用thinstation軟體,製作專用桌面連接器.
特色如下:
1.提供rdp/vnc/xdm協定的連線客戶端程式,可連接windows/unix桌面.
2.可製成iso映像檔,配合grub2,從硬碟開機(本文採用);
或直接syslinux安裝到硬碟,從硬碟開機(待嚐試).
3.硬碟只耗掉100MB空間,適用於硬碟容量少之舊型電腦.
4.記憶體只耗掉100MB,適用於記憶體容量少之舊型電腦.
5.提供各種顯示卡及網路卡驅動程式,適用於舊型電腦.

注意:安裝grub2是為了能從硬碟的iso檔啟動開機,
目前支援grub2的為ubuntu 10.04 LTS以上,
故首先安裝ubuntu軟體.以下操作皆在ubuntu上進行.

A.安裝ubuntu,供切割硬碟及安裝grub2
從 http://www.ubuntu.com/download/ubuntu/download
選擇 ubuntu 10.04 LTS, 32-bit (recommended) 下載iso,約686MB
燒錄成光碟,從光碟開機進入LiveCD,不需安裝ubuntu到硬碟.

B.製作一塊>=100MB空間的硬碟切割,供安裝grub2及iso用
從System/Administration/Partition Editor選單,開啟硬碟切割程式.
利用調大小/搬移(Resize/Move),新增(New),格式化(Format To)操作,
找出一塊>=100MB空間,格式化成ext3檔案格式,以下假設該空間為 /dev/sda2.

C.安裝grub2,供硬碟iso開機用
從Applications/Accessories/Terminal選單,開啟終端機.
利用如下指令安裝grub2,
> sudo -s
# mount /dev/sda2 /mnt
# grub-install --no-floppy --root-directory=/mnt /dev/sda
本指令將在sda硬碟的mbr安裝grub2開機程式,
並在/mnt/boot/grub/*產生grub2開機所需相關檔案,
grub2組態檔為/mnt/boot/grub/grub.cfg,稍後再手動補充
# mkdir /mnt/boot/iso

D.安裝thinstation軟體及製作thinstation.iso
D1.下載Thinstation-2.2.2g.tar.bz2軟體,約101MB,
http://sourceforge.net/projects/thinstation/files/thinstation/thinstation-2.2/Thinstation-2.2.2g.tar.bz2/download
D2.解開軟體
# tar jxvf Thinstation-2.2.2g.tar.bz2
D3.修改組態檔1,設定顯示卡,網路卡,聲音卡等驅動程式及套件
# vi Thinstation-2.2.2g/build.conf
D4.修改組態檔2,設定桌面連線程式,網路連線組態,儲存體路徑等
# vi Thinstation-2.2.2g/thinstation.conf.buildtime
系統可以有很多個螢幕(SCREEN),螢幕相當於桌面,預設SCREEN=0;
每個螢幕可以有1,2,3,4四個工作區(WORKSPACE),工作區相當於桌面頁籤,預設WORKSPACE=1;
每支程式跑起來稱作一個連線(SESSION),
利用SESSION_#_TYPE設定桌面程式圖示供點選時,每個連線編號(#)必需不同.
D5.製作 .iso
# ./Thinstation-2.2.2g/build
建立包含如上開機,桌面,網路所需開機光碟映像檔thinstation.iso
此.iso檔案大小取決於Thinstation-2.2.2g/build.conf選用模組多寡.
正常70~80MB左右.
# cp Thinstation-2.2.2g/boot-images/iso/thinstation.iso /mnt/boot/iso/
將開機光碟映像檔thinstation.iso 拷貝到 grub2 開機硬碟切割中.

E.編輯grub2的grub.cfg開機選單,供硬碟啟動thinstation.iso之用
# vi /mnt/boot/grub/grub.cfg
set timeout=5
set default=0
menuentry "Thinstation-2.2.2g-Customed-LiveCD" {
loopback loop (hd0,2)/boot/iso/thinstation.iso
linux (loop)/vmlinuz load_ramdisk=1 ramdisk_blocksize=4096 root=/dev/ram0 ramdisk_size=120000 splash=silent gfxpayload=1024x768 console=ttyS3
initrd (loop)/initrd
}

menuentry "ubuntu-9.04-desktop-i386.iso" {
loopback loop (hd0,2)/boot/iso/ubuntu-9.04-desktop-i386.iso
set root=(loop)
linux /casper/vmlinuz boot=casper iso-scan/filename/boot/iso/ubuntu-9.04-desktop-i386.iso
initrd /casper/initrd.gz
}

menuentry "Windows XP" {
set root=(hd0,1)
chainloader +1
}

menuentry "reboot" {
reboot
}

以上假設第1顆硬碟sda的第1切割sda1即(hd0,1)安裝Windows XP,
第2切割sda2即(hd0,2)安裝grub2開機系統及ubuntu 9.04,thinstation兩種.iso.

# reboot
重新開機之後,就會看到4個選項,如下,



預設5秒進入第1個選項即thinstation.iso.
進入thinstation畫面如下,



每種連線協定皆有兩個圖示,有加(fs)者為全螢幕(fullscreen).
可點選其中的MS Windows圖示,
在Server Name or IP Number,輸入欲連線的Windows IP,
即以rdesktop套件,走rdp協定,連線到Windows桌面.
若想要全螢幕,可在Options,輸入 -f 參數,事後即可用Ctrl-Alt-Enter作全半螢幕切換.

註1: grub2的grub.cfg選單本來設計成程式自動產生,但這裏只用其開機掛載iso功能,
故為求精簡,直接手動編輯.
註2: 此>=100MB硬碟切割其實適合安裝於任何開機硬碟中,
所佔空間少,基本的mount,ssh.scp,e3vi功能也都有,可當作救援開機碟用.
前提是grub2要安裝佔用開機硬碟的mbr (master boot record)即可.
註3:從左下Start功能表,開啟rxvt終端機,用free指令,可觀察目前所用記憶體.
正常只用rdesktop應該不超過100MB,
若你當初在Thinstation-2.2.2g/build.conf選用較多模組,所用記憶體可能到達170MB.

2011年6月11日 星期六

ssh without password


使用ssh協定,要登入遠方主機或拷貝遠方檔案時,有免去輸入帳密方法,如下:
原理: 將自己的公開金鑰(localhost:~/.ssh/*.pub)加入
遠方主機的授權金鑰檔內(remotehost:~/.ssh/authorized_keys)

工具: 可利用以下reg_ssh_key.sh批次檔作登入及加入動作.
以後,利用終端機ssh remotehost或scp file remotehost:時,就可以免問帳密.

方法: localhost> vi reg_ssh_key.sh # 建立註冊批次檔,user為遠端主機帳號
cat ~/.ssh/*.pub | ssh user@$* "cat >> .ssh/authorized_keys"

localhost> sh reg_ssh_key.sh remotehost # 利用註冊批次檔,向遠方主機remotehost註冊
金鑰
Password:

localhost> ssh remotehost # 測試ssh自動登入遠方主機,不問密碼

remotehost>

註:
1.遠方主機的檔案目錄必需設定權限如下:
remotehost:~/.ssh 目錄權限為711,即己/群/他權限分別為rwx/x/x,
remotehost:~/.ssh/authorized_keys 檔案權限為644,即己/群/他權限分別為rw/r/r,

2.個人金鑰生成法:
若有ssh-user-config指令,以問答方式產生個人金鑰,
若無該指令,可用ssh-keygen指令產生

3.本地/遠方所需ssh組態檔如下,
客戶端: /etc/ssh_config 或 /etc/ssh/ssh_config
伺服端: /etc/sshd_config 或 /etc/ssh/sshd_config

------------------ reg_ssh_key.sh ----------------------
#
# http://josephjiang.com/article/understand-ssh-key/
#
# run to get /etc/ssh_config, /etc/sshd_config
# ssh-host-config
# run to get ~/.ssh/identify.pub, id_rsa.pub, id_dsa.pub
# ssh-user-config
# #ssh-keygen -t rsa1
# #ssh-keygen -t rsa
# #ssh-keygen -t dsa
# chmod 711 remote:~/.ssh
# chmod 644 remote:~/.ssh/authorized_keys
#
cat ~/.ssh/*.pub | ssh user@$* "cat >> .ssh/authorized_keys"