2012年5月16日 星期三

Ubuntu之權限管理雜記 (12.04)

1.鎖定/解鎖  帳號
指令:  sudo  passwd  -l (-u)  帳號
ex:       sudo  passwd  -l  pizzahot   鎖定pizzahot這個帳號, 反之 -u 就是解鎖(激活)

參考:
(1) http://manpages.ubuntu.com/manpages/hardy/man1/passwd.1.html

2.使某個帳號獲得sudo權限
編輯 /etc 中的 group , 在sudo的後面加上要獲得權限的帳號名  (需sudo)


2012年5月6日 星期日

Ubuntu 12.04對DNS的設定做了修改

今天使用新的虛擬機器發現apt-get抓不到伺服器,  懷疑是網路聯外問題
於是ping了yahoo  =>   unknown host
直接ping ip           =>   成功

所以開始懷疑是DNS的問題
經過請教同學和google,發現Ubuntu Server 12.04對於DNS的設定位置有做了修改
資訊如下:



最近安裝了一台 Ubuntu Server 12.04 beta 來試用,準備一切就緒後把 10.04 這個 LTS 版本升級到 12.04。
不過,今天連線更新時,重新開機後,居然無法對外連線,檢查了 /etc/resolv.conf 之後,發現裡面沒有任何 dns 的設定,所以,我就開心的寫下
nameserver 163.20.174.1
nameserver 168.95.192.1
 結果重新開機後,剛剛在 resolv.conf 裡的設定通通不見了,仔細一看,它在開頭的地方寫著:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN

看起來的意思是說,resolvconf 這支程式會動態產生 nameserver 的資料,所以不要直接修改 /etc/resolv.conf。
利用 「man resolvconf」看了一下說明,原來,nameserver 的設定都移到 /etc/network/interface 這個檔案裡了,直接在設定 ip 的時候,指定 dns 的資訊,簡單的用法如下:
dns-nameservers 203.27.153.5  168.95.192.1
dns-search slps.ntpc.edu.tw


經過設定DNS後,apt-get抓不到伺服器的問題就順利解決了!


文章出處:
http://learninginfree.blogspot.com/2012/03/ubuntu-1204-server-beta1-resolvconf.html    by Freelearn


參考:
http://www.stgraber.org/2012/02/24/dns-in-ubuntu-12-04/

2012年3月12日 星期一

which、whereis、locate、find功能區分

which、whereis、locate跟find這四個都是查詢的指令。
which是找指令,所以它只會到$PATH環境變數設定下的路徑去尋找。

whereis跟locate是找檔案,但是這兩個指令並非直接在硬碟上做搜尋,而是尋找已經建立好的「/var/lib/slocate.db」的資料庫做搜尋。可以直接下updatedb更新資料庫,或是在/etc/cron.daily/slocate.cron設定更新排程。linux剛安裝好時資料庫尚未建立,若是沒有執行updatedb的動作的話,locate指令是找不到任何資料。此外whereis只會找到名稱完全符合的檔案,locate則會找出含有搜尋字串的檔案。find就很花時間,會整個硬諜搜尋檔案,因此也很傷硬諜。

========================================================

find
這個算是功能最多的指令,可以用依檔名、擁有者、群組和權限...等等一堆來搜尋檔案,不過,find 指令是一定要指定搜尋的路徑,否則就只有搜尋目前所在的資料夾,例如,阿舍在家目錄用 find hosts 的指令來搜尋 hosts 檔的話,就一定找不到東西,如果改用 find /etc hosts 的話,就會出現一堆檔案名稱裡有 hosts 這個四個字的所有檔案出來,如果再改成 sudo find /etc -name hosts 就會找出更接近我們要找的檔案列表出來的。

locate
這個指令和其他三個指令不同的地方是,locate 指令並不是宜的去搜尋檔案,而是去搜尋由 updatedb 指令所建立和更新的資料庫並讀入記憶體中,所以,locate 指令的搜尋速度遠比其他的指令來的快,因此,當阿舍執行 locate hosts 指令後,幾乎是馬上就列出檔案名稱裡有 hosts 這個四個字的所有檔案出來哩 ! 不過,通常優點都是來自弱點,只要是安裝之後,在還沒有執行updatedb 之前,這些新的檔案用 locate 指令是找不到的。

whereis
這個指令只會搜尋幾個特定的路徑,像是 /usr、/bin 或 /etc 等,適合用來搜尋 Ubuntu 的執行檔和原始檔及 man 說明,如果用 whereis host 來搜尋 host 檔,就能夠找出需要的結果,如果用來搜尋家目錄的檔案,就會找不到的。

which
這個指令搜尋的範圍比前一個的 whereis 更小,which 指令只用來搜尋 Ubuntu/Linux 的指令程式,如果,阿舍用 which hosts 的指令來找 hosts 的話,很抱歉喔 ! 一定是找不到的,因為 hosts 不是指令,那麼如果阿舍改成 which which 或 which php5 的話,馬上就會有結果跑出來,因為 which 和 php5 都是指令哩 !

這樣整理下來,阿舍的結論是,要快就用 locate,要準就用 find,要查系統檔案就用 whereis,要查指令就用 which,怕麻煩的話,就只要好好學會 find 指令就可以了。

=========================================================

資料出處:

2012年3月11日 星期日

沒有man指令可用怎麼辦?

manpages contains only the man(ual) pages for various system functions.

The reader, man, should be in /usr/bin/ (as a symbolic link to /usr/lib/man-db/man).

If it's not, install it with sudo apt-get install man-db

=========================================

今天發現,系統裡雖然有最新版manpage存在,但用man指令卻出現 bash: man: command not found

使用
which man => 沒東西

whereis man => 有列出幾個資料夾:/usr/local/man /usr/share/man
進去看,前面的那個裡面是空的,後面那個裡面一堆東西,可是沒有名子就叫"man"的檔案(否則which也 會發現巴)

echo $PATH => 感覺沒問題,都有包含到上面的目錄

在目錄下雙擊tab列出所有指令 => 發現...根本沒有man這個指令...Orz

正在丈二金剛摸不著頭,google了半天,終於發現了上面的解答
原來manpages是文件們,man這個指令則是一個reader,我找不到man就是reader沒裝
所以照著解答:

apt-get install man-db


man is back!

花了好久時間理解,算是第一次自己解決自己在linux上碰到的難題

keyword: Where is the man command?