ecryptfs-utils 裡的 ecryptfsd 可以透過 netlink 或 misc 方式與 kernel 的 ecryptfs module 溝通,Ubuntu 有修改過 kernel 的 ecryptfs ,讓 ecryptfsd 以 misc 的方式溝通。
而我,就卡在這裡搞了好久,因為我始終用 kernel 的預設值,也就是 netlink 的方式。
照理來說,netlink 應該也是可以才對,只是在 ecryptfsd 裡有段 code(嚴格來說應該是 libecryptfs.so),在以 sendto 送出封包以後,檢查回傳值,如果大於 0 ,就當作錯誤。你可以查一下 sendto 函式的說明,裡面清楚地寫了,當傳送成功,會回傳 sendto() 所送出的 byte 數。ecryptfsd 以 sendto 送出了 16 bytes,收也收到了 16 bytes,這樣應該是要當作成功,但程式裡卻視為失敗。
我不知道修正這裡以後還會遇到什麼問題,所以我決定很鴕鳥地去改用 ubuntu 的 kernel …
直接設定密碼免提示輸入
用 passwd 設定密碼是免不了要回答提示問題的,有方法可以省掉嗎?
如果可以省掉,在大量設定密碼的情況下會很方便。
方法說穿了很簡單,先用 mkpasswd 產生密碼,再用 usermod 來變更使用者密碼。
以下節錄自 call useradd and passwd through no prompt script – LinuxQuestions.org
#!/bin/bash
## Set a default password and perform a password reset
l_user=$1
if [ "$l_user" != "" ]
then
l_password="Reset"
l_encrypted_pass=$(mkpasswd -s --hash=md5 ${l_password})
echo "/usr/sbin/usermod -p ${l_encrypted_pass} ${l_user}"
fi
感恩啦!本來已經想用 sed/awk 去硬改 passwd/shadow 檔案了說…
TPM 與 ecryptfs
基本都是參考:
- [Ecryptfs-users] Ecryptfs with TPM via Trousers on Centos 5.2
- Encrypting file systems using eCryptfs
- Create an Encrypted Private Directory with eCryptfs | Tombuntu
- How to use a TPM with Linux – GrouNation
另外遇到問題可以參考 IBM 的 troubleshooting,最近 IBM 不知道是網站改版還怎樣,之前留的網址都失聯了,你可以用 ibm ecryptfs troubleshooting 去 google 找。
下面的步驟最好全部以 root 或 sudo 來執行:
- 進 BIOS 把 TPM clear 掉
- 我的環境正好是用 infineon 的,所以用 modprobe tpm_infineon,一般好像是用 tpm_tis 就行了。
- 啟動 trousers:tcsd -f,不用 -f 的話,會掛…這個 daemon 提供 tspi 服務並且與 TPM device 溝通。
- 取得 ownership:tpm_takeownership ,這個步驟裡,SRK password 跟其後的 Confirm password 不要輸入!!否則要回到步驟 0 重設。SRK 是 Storage Root Key 的縮寫,不使用密碼保護的原因是為了 ecryptfs 取用方便。
- 掛載 ecryptfs:modprobe ecryptfs
- 啟動 ecryptfsd
- 產生 UUID:ecryptfs-generate-tpm-key -p 1 ,這個 UUID 是提領 key 用的,實際的 key 會透過 PCR 1 的 key 來取得(如果我沒理解錯的話)。
至此,準備工作已經完成,接下來就是操作,這裡我假設 private 是放置要加密的資料的地方:
- 先建立:mkdir private
- 進行掛載:mount -t ecryptfs private private
- 依序回答問題,第一個先選 tspi,第二個問題(cipher)選 aes,第三個問題(key bytes)選 16 bytes,第四個問題(passthrough)選 n,最後問題照預設值。第一個問題是加密方式,你也可以使用其他方式,但這樣就用不到 TPM 了;cipher 跟 key bytes 可以視需要自行調整。這樣就能 mount 上,mount 以後,ecryptfs 會把 UUID 存到 keyring (用 keyctl show 可以看 keyring 內容)裡。
在 private 資料夾裡的操作,基本上不能複寫,只能複製、貼上,但 vim 可編輯。
umount 之前,最好先輸入 mount,把參數記下。
umount 之後,可以直接以參數來掛載,這樣就不用再次回答問題:mount -t ecryptfs -o sig=UUID,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_passthrough=n private private
參數裡,有個 sig,這個 sig 就是填 UUID,不過你輸入 mount 時,看到的卻不是 UUID,而是一個較短的字串。這字串其實是一個提領 UUID 的鑰匙,ecryptfs 會用這個鑰匙去 keyring 裡(用 keyctl show 可以看到),取出 UUID,再以 UUID 去掛載。keyring 主要存放在 kernel 的某個地方,所以重開機以後就會消失,我還不知道怎麼把 keyring 內容存起來。
好吧,以上就是我這幾天跟 TPM 奮戰的紀錄…
amr 轉 mp3
環境:Ubuntu 8.10
- 安裝必要的套件:
sudo apt-get install amrnb sox lame
- 輸入以下指令:
amrnb-decoder file.amr file.raw # 先轉成 raw 檔 sox -r 8000 -w -c 1 -s file.raw -r 16000 -w -c 1 file.wav # 再轉為 wav lame babycry.wav babycry.mp3 # 最後轉為 mp3
整理一下,把它作成 script:
#!/bin/bash # amr2mp3.sh FILE=`basename $1 .amr` # remove .amr amrnb-decoder $1 $FILE.raw sox -r 8000 -w -c 1 -s $FILE.raw -r 16000 -w -c 1 $FILE.wav lame $FILE.wav $FILE.mp3 rm -f $FILE.raw $FILE.wav exit 0
收工。
pam_smbpass.so
安裝 samba 以後,讓 samba 密碼跟 linux 密碼一致的好方法,先安裝 libpam-smbpass,然後執行 sudo pam-auth-update,把 SMB password synchronization 選起來即可。以後改密碼時,samba 密碼也會自動被更改。
對了,我的 linux 是 ubuntu 8.10,samba security level 是 user,安裝以後有先利用 smbpasswd -a 把必要的使用者加進去。
Foxit Reader 1.0 Beta for Linux in Ubuntu
一月底的時候,Foxit釋出了Foxit Reader 1.0 Beta for Desktop Linux,很可惜的是,官方沒有提供 .deb 的版本。
不過沒關係,我們有外星人(alien)。
- 先到Foxit下載網頁下載 rpm 版本
- 安裝 alien:sudo apt-get install alien
- 進行轉換:sudo alien –to-deb –scripts FoxitReader10_Linux_enu_i386.rpm
- 進行安裝:sudo dpkg -i foxitreader_1.0-2_i386.deb
- 完成!
javascript + gtk = seed
昨天在這兒:Building desktop Linux applications with JavaScript看到的,現在可以用 JavaScript 來寫 GTK Application 了,如果以後再支援 DOM、selector與類似 XUL 語法(GLADE?)的話,應該會吸引一堆會 javascript + html 的人來用吧~
不過話說回來,XUL 好像也沒非常風行啊~
該專案的官方網站在:Seed
Anyway, 如果你想試試的話,已經有人打包了 for Ubuntu 的 package 了,位置在這裡:PPA for Orange Owners
詳細安裝方法,文章裡都寫的很清楚,這裡就不再贅述了。
less + source-highlight
參考這篇:借我一双写轮眼──Less 语法高亮 — LinuxTOY
但 Ubuntu 下,需要作點修改:
# .bashrc PAGER='less -X -M' export LESSOPEN="| /usr/share/source-highlight/src-hilite-lesspipe.sh %s" export LESS=' -R '
主要差異在 src-hilite-lesspipe.sh 的位置。
registry-tools
由於太座的大意,使得 NB 中了 USB 病毒,而小紅傘解不掉。我知道進 Linux 以後就能把 USB 病毒埋的檔案砍掉,但砍了再砍,重開機進 Windows 以後,病毒還是繼續作怪,看來,病毒還是有埋我不知道的暗樁。
Registry 裡面有兩個機碼 Run 跟 RunOnce,在每次開機、登入時,都會去執行這裡有指定的程式。
本來不奢求 Linux 有工具可以存取 Windows Registry 的,沒想到用 apt-cache 一找,還真的有,這個套件叫做 registry-tools。
套件提供了 regshell、regpatch、regdiff、regtree 這幾個工具,可以讓你存取 Windows Registry。
但 Windows Registry 檔案在哪裡呢?Windows 2000 以後,HKEY_CURRENT_USER 改放到使用者的 Home 目錄下,也就是 c:\documents and settings\your_name\ntuser.dat
所以只要進 Linux,把 Windows 分割區掛載起來,用 regshell -f ntuser.dat 開啟以後就可以對 Registry 操作了。
regshell 的命令列介面也不難,基本上就是 cd、ls、rm 這幾個,用 help 可以看詳細的指令列表,這裡不多說了。
總之切到 Software\Microsoft\Windows\CurrentVersion\Run 跟 Software\Microsoft\Windows\CurrentVersion\RunOnce 下把一些奇怪的項目刪掉以後,就大功告成了。
envyng
如果你用 nVidia 或 ATi 的顯示卡的話,用 envyng 可以很快的搞定一切設定。
早知道有這麼好用的 script ,當初設定 ATi 顯卡時,就不用那麼累了。
我唯一踩到的地雷是把 LANG 設為 C,導致 envyng 執行時,出現錯誤,要記得使用 utf-8,例如:export LANG=en_US.utf-8
sudo /etc/init.d/gdm stop sudo apt-get install envyng-core sudo envyng -t sudo nvidia-xconfig sudo /etc/init.d/gdm start
參考來源:[ubuntu] [SOLVED] Intrepid Nvidia driver issue. Boots to text – Ubuntu Forums