Solaris使用與管理之實踐(Day 1)

bamboogz99發表於2009-03-03

終於開通了系裡的小型機,登入後顯示SunOS 5.9,查了一下,對應的是現在的Solaris 9這個版本的作業系統,據說這個機器花了十幾萬,不使用太可惜了。而且發現硬碟超大、CPU超多,哈哈,四個CPU。

相關資訊可以用: psrinfo -v檢視CPU, iostat -E檢視硬碟資訊。

今天去圖書館借了兩本書,開工了,準備把它拿下,初步有幾個打算:

(1)建立一個學生學習的WIKI或者BLOG;

(2)建立一個上傳用的FTP;

(3)利用它來進行NS2模擬或者計算應該很好!

在學習中,發現solaris與linux還是有小小的差別,會在以後中慢慢列出來。

(1)Linux下,新增使用者後,預設對應的使用者目錄在/home下,如/home/zz,而對應著Solaris下的/export/home。

Solaris的/home有著特殊的功能,主要用來做autofs,建議不要使用。我在home下建立目錄,提示出錯:

root@--help # mkdir fanzz
mkdir: 建立目錄 "fanzz" 失敗;操作不可應用

解決方法也可以,但如上所述,不建議如此使用:

# /etc/init.d/autofs stop
# umount /home

先停止autofs服務,然後umount即可。

先還是從使用者管理來體驗吧,可以檢視/etc/passwd檔案來找到使用者相關資訊;可以用usermod修改使用者資訊;

(2) useradd –D

用來檢視使用者新增使用者時採取的預設設定,如使用者根目錄,即/home,在我的機器上顯示:

root@--help # useradd -D
group=other,1  project=default,3  basedir=/home
skel=/etc/skel  shell=/bin/sh  inactive=0
expire=  auths=  profiles=  roles=

用這個就是改預設目錄的:

root@--help # useradd -D -b /tmp
group=other,1  project=default,3  basedir=/tmp
skel=/etc/skel  shell=/bin/sh  inactive=0
expire=  auths=  profiles=  roles=

(3)使用者和使用者組的許可權資訊在/etc/passwd和etc/group下。

和每一個使用者相關的有一個ID叫UID,必須小於2147483647,UID相當於使用者的KEY。

UDI分配表:0~99用於root, daemon,bin,sys,etc是系統賬號。其中root的UDI為0,daemon的UID=1。

(4)每個使用者都有一個預設的工作環境設定,類似於DOS下的環境變數,其設定通常是在使用者預設目錄下的一個檔案,如.login, .cshrc, .profile等。通常可以從/etc/skel/目錄下拷貝local.cshrc, local.login, local.profile到使用者的目錄下。

#cp /etc/skel/local.cshrc /home/zz/.cshrc

#cp /etc/skel/local.login /home/zz/.login

#cp /etc/skel/local.profile /home/zz/.profile

然後相應進行修改。此時必須先為每一個使用者初始化檔案設定允許,即:

#chmod 744 /home/zz/.*

(5) 不知道做了什麼操作,最後新增使用者時,竟然不成功,顯示錯誤:

UX: useradd: ERROR: Cannot update system files - login cannot be created.

在網上搜尋,資訊很少,但是berkeley大學的網站(http://compute.cnr.berkeley.edu/cgi-bin/man-cgi?useradd+1)顯示一個權威說法,出現這種錯誤是因為/etc/passwd或者/etc/shadow不存在。

     The following indicates that the /etc/passwd or  /etc/shadow
     files do not exist:

     UX: roleadd: ERROR: Cannot update system files - login cannot be created.

但是實際上這兩個檔案存在,我只是試圖修改它,但是提示說為只讀檔案。

嘗試辦法:

A. reboot機器,無效;

B. 用ls -l檢視檔案/etc/passwd檔案的屬性,顯示:-r--r--r--,根據網上查詢結果,用chmod修改其屬性,即: chmod 744 /etc/passwd,chmod 744 /etc/shadow,仍然無效。

求解答案中…… [mailme]  //最後知道是因為磁碟空間滿,導致新增使用者失效。

C. 繼續查詢,發現一個最接近的答案,首先用pwconv來檢查口令檔案的完整性,顯示錯誤如下:

# pwconv
/usr/bin/pwconv: Unexpected failure. Conversion not done.

D. 又一個接近的答案,來自於maillist:

Hi guys, Looks like my / file system is corrupt and needs a good checking, so I will most probably take the machine down to single-user and check and reboot. This should fix it up. Suggestions were:
1. permissions on passwd and shadow files
2. full / file system
3. corrupt useradd file
4. missing files
5. truss -o /tmp/useradd.truss -f useradd xxxxxxxx (Good stuff!)

上面的truss是用來trace系統呼叫的,-o表示跟蹤結果輸出到檔案中,-f表示trace的物件,即在跟蹤useradd失敗時產生的錯誤資訊。又在網上一陣狂搜,發現原因可能與上面第2點,即磁碟空間滿了有關。按照網上提供的方法,用df - h檢視,暈:

檔案系統               大小   用了   可用 容量      掛接在
/dev/md/dsk/d0          14G    14G    17M   100%    /
/proc                    0K     0K     0K     0%    /proc
mnttab                   0K     0K     0K     0%    /etc/mnttab
fd                       0K     0K     0K     0%    /dev/fd
swap                    15G   168K    15G     1%    /var/run
swap                    15G    32K    15G     1%    /tmp
/dev/md/dsk/d7          30G   8.3G    21G    29%    /data1
/dev/md/dsk/d5          45G   5.5G    39G    13%    /opt
/dev/md/dsk/d8          38G    38M    37G     1%    /data2

這個系統不知道多久沒人用,可能又安裝了一些資料庫什麼的,所以我用了沒兩天就這樣。終於找到原因了,接下來就是考慮如何給磁碟瘦身了。

相關文章