管理沒有自動還原功能的 Ubuntu 系統偷吃步

紀錄一下管理公用電腦的時候解決使用者老是不把東西帶走(刪除)的簡單處理方法。

由於沒錢搞商業解決方案,也不想走網路開機(效能還是相對稍差一些),只能每星期手動作一、兩次系統還原(好在 GNU/Liunx distro 跟 Windows 這種系統比起來還是很輕量的),除了權限控管的問題以外,另外還有像是讓軟體不要存下歷史紀錄等設定 … 讓使用者儘量能有乾淨環境且保有隱私(雖然使用者自己不是很在意,但管理員還是得考慮進去 …)

這邊想做的事情是把 “桌面” 以及 “下載” 這兩個常用資料夾在每次使用者登出後都自動清理乾淨

環境是基於 Ubuntu + LxdeLubuntu 13.10,因為是圖形介面,所以沒辦法直接寫 .bash_logout 這種設定來做處理

先寫一個簡單的script來清理~ 桌面只留捷徑,下載資料夾則可以全砍~

[shell]
#!/bin/sh
cd ~/桌面/
find . | grep -v desktop$ | grep -v ‘^\.$’ | sed ‘s/\\/\\\\/g’ | sed ‘s/ /\\ /g’ | xargs rm -rf
cd ~/下載/
find . | grep -v ‘^\.$’ | sed ‘s/\\/\\\\/g’ | sed ‘s/ /\\ /g’ | xargs rm -rf
[/shell]

其中 sed 是用來處理空白以及反斜線的跳脫(不知道有沒有程式可以幫忙自動處理?)

把 script 存到一般使用者沒有權限修改的地方、避免被砍掉,例如: /home/clean.sh (也要注意檔案的權限設定),然後設執行權限: chmod +x /home/clean.sh

到這邊已經完成了八成,可以先touch檔案到該目錄並且執行clean.sh測試

Ubuntu 目前預設使用的X視窗管理程式是 lightdm ,這邊要利用他的 session-cleanup-script 這個設定來達到使用者登出的環境清理工作
編輯 lightdm 的設定檔:
[shell] $ sudo vim /etc/lightdm/lightdm.conf[/shell]

插入這行:
session-cleanup-script=/home/clean.sh

重啟lightdm:
[shell]$ sudo service lightdm restart[/shell]

在桌面跟下載資料夾隨便塞一些檔案~重新登入看看~It works!

這下子下一個使用者個環境終於可以比較乾淨了… XD

Debian / Ubuntu 系列 GNU/Linux 服務開機自動啟動調整

有些服務不是apt-get安裝完之後就完了,像是apache2開機的時候會自己帶起來,但vsftp就不會

利用update-rc.dinsserv可以來做調整,加入需要開機自動啟動的程式、反之移除沒需要的

其實就是幫你把init.d底下的script link進rc*.d底下去~ (* = runlevel) 就會跟著系統啟動一起執行這些程式~

Debian 6.0以前用update-rc.d、6.0開始用insserv(舊的看起來還是會動就是了),而Ubuntu則是用update-rc.d

最常用的應該就…

設啟動
insserv servicename

update-rc.d servicename defaults

從預設啟動裡面移除
insserv -r servicename

update-rc.d servicename remove

runlevel什麼的就先不管它了 暫時沒需求 :P

Reference:
LSBInitScripts/DependencyBasedBoot – Debian Wiki
The Debian GNU/Linux FAQ – Customizing your installation of Debian GNU/Linux
Update-rc.d – LQWiki
Ubuntu Manpage: update-rc.d – install and remove System-V style init script links

PS:
Redhat系列的好像是chkconfig servicename on這樣?

dpkg: error: parsing file ‘/var/lib/dpkg/available’ near line N

好像是因為上一次用apt-get在安裝套件的時候意外中斷造成的

剛剛在裝irssi來掛IRC的時候就卡在這…


peterdavehello@vm-0:~$ sudo apt-get install irssi
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
libperl5.14
Suggested packages:
irssi-scripts
The following NEW packages will be installed:
irssi libperl5.14
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/902 kB of archives.
After this operation, 2,446 kB of additional disk space will be used.
Do you want to continue [Y/n]?
dpkg: error: parsing file '/var/lib/dpkg/available' near line 63:
missing package name
E: Sub-process /usr/bin/dpkg returned an error code (2)

解法:
peterdavehello@vm-0:~$ sudo dpkg --clear-avail
搞定收工!

在 AWS 上的 Ubuntu 安裝 zram-config 出錯

放在 Amazon Web Services (AWS) 上的機器因為用途跟價格的關係, ram 的規格開很小,靠 swap 來緩衝的話吃 IO 吃比較兇會被多收錢,想要用 zram 來壓記憶體

zram 的說明可以參考 Wikipediahttp://zh.wikipedia.org/wiki/Zram

zram 是 Linux 核心的一個模組,之前被稱為「compcache」。zram 透過在RAM內的壓縮塊裝置上分頁,直到必須使用硬碟上的交換空間,以避免在磁碟上進行分頁,從而提高效能。由於 zram 可以用記憶體替代硬碟為系統提供交換空間的功能,zram 可以讓 Linux 在需要大量 RAM 的情況下在記憶體上進行交換/分頁,而提高記憶體的使用率,顯著得減少系統啟動時(此時 Linux 還不能使用外部儲存)對記憶體大小的要求。在實體記憶體較少的舊電腦上,尤其如此。

Lubuntu (13.10 開始) 以及 Chrome OS 預設都有啟用這項功能
所以就來安裝 zram-config,沒想到竟然失敗 …

錯誤訊息大概是這樣:

testuser@ubuntu:~$ sudo apt-get install zram-config
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
zram-config
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/3,078 B of archives.
After this operation, 42.0 kB of additional disk space will be used.
Selecting previously unselected package zram-config.
(Reading database ... 107939 files and directories currently installed.)
Unpacking zram-config (from .../zram-config_0.1_all.deb) ...
Processing triggers for ureadahead ...
Setting up zram-config (0.1) ...
start: Job failed to start
invoke-rc.d: initscript zram-config, action "start" failed.
dpkg: error processing zram-config (--configure):
subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
zram-config
E: Sub-process /usr/bin/dpkg returned an error code (1)
閱讀全文