2012年3月31日 星期六

利用 setfacl 設定預設的群組 umask

要讓新檔案繼承資料夾的 group id 可以用 chmod g+s 來執行 setgid,但光是這樣還是沒辦法達到群組共享的效果,因為群組成員無法寫入其他人的檔案(umask == 0022)。

為了解決這個問題,我們需要 ACL 功能來針對特定資料夾設定 umask。首先你必須在掛載選項上加上 acl 標籤,例如「discard,noatime,defaults,acl」。要注意的是如果你有一些用 bind 的掛載點,記得最上層的那個掛載點的掛載選項一定要加 acl,只加 bind 掛載點的話沒辦法設定預設值(出現 Operation not supported 錯誤)。

加上選項並重掛載以後,可以用 setfacl 調整資料夾的 default umask:

setfacl -dm u::rwx,g::rwx,o::r-x [your_shared_folder]

2012年3月19日 星期一

ANSI code 控制游標顯示與隱藏

用 Linux framebuffer 做繪圖時可能會用到,不然圖畫到 fb node 以後會被游標破壞掉。
fputs("\e[?25h", stdout); // Show
fputs("\e[?25l", stdout); // Hide
※stdout 可以用其他的 tty node

據說這種方法並不是每個平台都適用,比較保險的做法還是要呼叫 ncurses 的函數。