passwd shadow檔案說明,

來源:互聯網
上載者:User

passwd shadow檔案說明,
使用者帳號:/etc/passwd, /etc/shadow

  由上面的說明您大概已經知道,嘿嘿!帳號管理最重要的兩個檔案就是‘ /etc/passwd 與 /etc/shadow ’了!這兩個檔案可以說是 Linux 裡頭最重要的檔案之一了! 如果沒有這兩個檔案的話,呵呵!您可是無法登入 Linux 的呦!所以,底下我們先針對這兩個檔案來進行說明。 當然囉,更詳細的資料您可以自行 man 5 passwd 及 man 5 shadow 的啦~

  # /etc/passwd
  這個檔案的構造是這樣的:每一行都代表一個帳號, 有幾行就代表有幾個帳號在你的系統中!不過需要特別留意的是, 裡頭很多帳號本來就是系統中必須要的,我們可以簡稱他為系統帳號, 例如 bin, daemon, adm, nobody 等等,這些帳號是系統正常運作時所需要的,請不要隨意的殺掉他呢! 這個檔案的內容有點像這樣:

  root:x:0:0:root:/root:/bin/bash
  bin:x:1:1:bin:/bin:/sbin/nologin
  daemon:x:2:2:daemon:/sbin:/sbin/nologin
  adm:x:3:4:adm:/var/adm:/sbin/nologin

  我們先來看一下每個 Linux 系統都會有的第一行,就是 root 這個系統管理員那一行好了, 你可以明顯的看出來,每一行使用‘:’分隔開,共有七個咚咚,分別是:

  1. 帳號名稱:就是帳號名稱啦!對應 UID 用的!例如 root 就是預設的系統管理員的帳號名稱;

  2. 密碼:早期的 Unix 系統的密碼是放在這個檔案中的, 但是因為這個檔案的特性是所有的程式都能夠讀取,所以,這樣一來很容易造成資料的被竊取, 因此後來就將這個欄位的密碼資料給他改放到 /etc/shadow 中了,關於 /etc/shadow 這一部份等一下再說。而這裡你會看到一個 x ,呵呵!別擔心,這表示密碼已經被移動到 shadow 這個加密過後的檔案囉;

  3. UID:這個就是使用者識別碼 (ID) 囉!通常 Linux 對於 UID 有幾個限制需要說給您瞭解一下:
  id 範圍   該 ID 使用者特性
  0   當 UID 是 0 時,代表這個帳號是‘系統管理員’!所以當你要作另一個系統管理員帳號時, 你可以將該帳號的 UID 改成 0 即可;這也就是說,一部系統上面的系統管理員不見得只有 root 喔! 不過,不很建議有多個帳號的 UID 是 0 啦~
  1~499   保留給系統使用的 ID,其實 1~65534 之間的帳號並沒有不同, 也就是除了 0 之外,其他的 UID 並沒有不一樣,預設 500 以下給系統作為保留帳號只是一個習慣。這樣的好處是,以有名的 DNS 伺服器的啟動服務‘ named ’為例,這個程式的預設所有人 named 的帳號 UID 是 25 ,當有其他的帳號同樣是 25 時,很可能會造成系統的一些小問題!為了杜絕這樣的問題,建議保留 500 以前的 UID 給系統吧!
  不過,一般來說, 1~99 會保留給系統預設的帳號,另外 100~499 則保留給一些服務來使用。
  500~65535   給一般使用者用的。事實上,目前的 linux 核心 (2.6.x 版)已經可以支援到 4294967295 (2^32-1) 這麼大的 U識別碼喔!

  上面這樣說明可以瞭解了嗎?是的, UID 為 0 的時候,就是 root 呦!所以請特別留意一下你的 /etc/passwd 檔案!

  4. GID:這個與 /etc/group 有關!其實 /etc/group 的觀念與 /etc/passwd 差不多,只是他是用來規範 group 的而已!

  5. 使用者資訊說明欄:這個欄位基本上並沒有什麼重要用途, 只是用來解釋這個帳號的意義而已!不過,如果您提供使用 finger 的功能時, 這個欄位可以提供很多的訊息呢!底下的 chfn 可以解釋一下囉!

  6. 家目錄:這是使用者的家目錄,以上面為例, root 的家目錄在 /root ,所以當 root 登入之後,就會立刻跑到 /root 裡頭啦!呵呵! 如果你有個帳號的使用空間特別的大,你想要將該帳號的家目錄移動到其他的硬碟去, 沒有錯!可以在這裡進行修改呦!預設的使用者家目錄在 /home/yourIDname

  7. Shell:所謂的 shell 是用來溝通人類下達的指令與硬體之間真正動作的介面!我們通常使用 /bin/bash 這個 shell 來進行指令的下達!嘿嘿!發現了吧?我們在 bash 章節裡面提到很多次,登入 Linux 時為何預設是 bash 呢?就是這裡設定的啦~ 這裡比較需要注意的是,有一個 shell 可以用來替代成讓帳號無法登入的指令!那就是 /sbin/nologin 這個東西!這也可以用來製作純 pop 郵件帳號者的資料呢!

  # /etc/shadow
  上面約略提到,由於每個程式都需要取得 uid 與 gid 來判斷許可權的問題,所以, /etc/passwd 的許可權必須要設定成為 -rw-r--r-- 這樣的許可權,在這樣的情況下, 使用者的密碼不就任何人都可以看到嗎?即使這個檔案內的密碼欄是加密的, 壞心腸的朋友也可能利用暴力破解法去 try and error 找出您的密碼資料......

  因為這樣的關係,所以後來發展出將密碼移動到 /etc/shadow 這個檔案分隔開來的技術, 而且還加入很多的密碼限制參數在 /etc/shadow 裡頭呢!我們先來瞭解一下這個檔案的構造吧! 我的 /etc/shadow 檔案有點像這樣:

  root:$1$i9Ejldjfjio389u9sjl$jljsoi45QE/:12959:0:99999:7:::
  bin:*:12959:0:99999:7:::
  daemon:*:12959:0:99999:7:::
  adm:*:12959:0:99999:7:::

  基本上, shadow 同樣以‘:’作為分隔字元號,如果數一數,會發現共有九個欄位啊, 這九個欄位的用途是這樣的:

  1. 帳號名稱:由於密碼也需要與帳號對應啊~因此, 這個檔案的第一欄就是帳號,必須要與 /etc/passwd 相同才行!

  2. 密碼:這個才是真正的密碼,而且是 經過編碼過的密碼啦! 你只會看到有一些特殊符號的字母就是了!需要特別留意的是, 雖然這些加密過的密碼很難被解出來,但是‘很難’不等於‘不會’,所以, 這個檔案的預設屬性是‘-rw-------’或者是‘-r--------’,亦即只有 root 才可以讀寫就是了!你得隨時注意,不要不小心更動了這個檔案的屬性呢!另外, 如果是在密碼欄的第一個字元為‘ * ’或者是‘ ! ’,表示這個帳號並不會被用來登入的意思。 所以萬一哪一天你的某個使用者不乖時,可以先在這個檔案中,將他的密碼欄位的最前面多加一個 * !嘿嘿!他就無法使用該帳號囉!直到他變乖了,再給他啟用啊!

  3. 最近更動密碼的日期:這個欄位記錄了‘更動密碼的那一天’的日期, 不過,很奇怪呀!在我的例子中怎麼會是 12959 呢?呵呵,這個是因為計算 Linux 日期的時間是以 1970 年 1 月 1 日作為 1 ,而 1971 年 1 月 1 日則為 366 啦! 所以這個日期是累加的呢!得注意一下這個資料呦!那麼最近的 2005 年 1 月 1 日就是 12784 啦,瞭解了嗎?

  4. 密碼不可被更動的天數: 第四個欄位記錄了這個帳號的密碼需要經過幾天才可以被變更!如果是 0 的話, 表示密碼隨時可以更動的意思。這的限制是為了怕密碼被某些人一改再改而設計的!如果設定為 20 天的話,那麼當你設定了密碼之後, 20 天之內都無法改變這個密碼呦!

  5. 密碼需要重新變更的天數: 由於害怕密碼被某些‘有心人士’竊取而危害到整個系統的安全,所以有了這個欄位的設計。 你必須要在這個時間之內重新設定你的密碼,否則這個帳號將會暫時失效。 而如果像上面的 99999 的話,那就表示,呵呵,密碼不需要重新輸入啦! 不過,如果是為了安全性,最好可以設定一段時間之後,嚴格要求使用者變更密碼呢!

  6. 密碼需要變更期限前的警告期限:當帳號的密碼失效期限快要到的時候, 就是上面那個‘必須變更密碼’的那個時間時, 系統會依據這個欄位的設定,發出‘警告’言論給這個帳號,提醒他‘再過 n 天你的密碼就要失效了,請儘快重新設定你的密碼呦!’,如上面的例子,則是密碼到期之前的 7 天之內,系統會警告該使用者。

  7. 密碼到期的恕限時間:如果使用者過了警告期限沒有重新輸入密碼, 使得密碼失效了,也就是說,你在‘必須變更密碼的期限前,並沒有變更你的密碼!’ 那麼該組密碼就稱為‘失效的密碼’囉~怎麼辦?沒關係,還有這個欄位的天數設計啊~ 意思就是說,當密碼失效後,你還可以用這個密碼在 n 天內進行登入的意思。 而如果在這個天數後還是沒有變更密碼,呵呵!那麼您的帳號就失效了!無法登入!

  8. 帳號失效日期:這個日期跟第三個欄位一樣,都是使用 1970 年以來的總日數設定。這個欄位表示: 這個帳號在此欄位規定的日期之後,將無法再使用。 這個欄位會被使用通常應該是在‘收費服務’的系統中, 你可以規定一個日期讓該帳號不能再使用啦!

  9. 保留:最後一個欄位是保留的,看以後有沒有新功能加入。

  舉個例子來說好了,假如我的 dmtsai 這個使用者的密碼欄如下所示:

  dmtsai:$1$8zdAKdfC$XDa8eSus2I7nQL7UjRsIy/:13025:5:60:7:2:13125:

  這表示什麼呢?要注意的是, 13025 是 2005/08/30 ,所以, dmtsai 這個使用者他的密碼相關意義是:

  * 最近一次更動密碼的日期是 2005/08/30 (13025);
  * 能夠修改密碼的時間是 5 天以後,也就是 2005/09/04 以前 dmtsai 不能修改自己的密碼; 如果使用者還是嘗試要更動自己的密碼,系統就會出現這樣的訊息:

  You must wait longer to change your password
  passwd: Authentication token manipulation error

  * 使用者必須要在 2005/09/04 到 2005/10/29 之間的 60 天限制內去修改自己的密碼,若 2005/10/29 之後還是沒有變更密碼時,該帳號就會宣告失效;
  * 如果使用者一直沒有更改密碼,那麼在 2005/10/29 之前的 7 天內,系統會警告 dmtsai 應該修改密碼的相關資訊;例如當 dmtsai 登入時,系統會主動提示如下的資訊:

  Warning: your password will expire in 5 days

  * 如果該帳號一直到 2005/10/29 都沒有更改密碼,由於還有兩天的恕限時間,因此, dmtsai 還是可以在 2005/10/31 以前繼續登入;
  * 如果使用者在 2005/10/29 以前變更過密碼,那麼那個 13025 的日期就會跟著改變,因此, 所有的限制日期也會跟著相對變動喔!^_^
  * 無論使用者如何動作,到了 13125 ,大約是 2005/12/8 左右,該帳號就失效了~

  透過這樣的說明,您應該會比較容易理解了吧?! ^_^
  Tips:
  常常聽到:我的密碼忘記或者被更動了?怎麼辦?

  有的時候會發生這樣的情況,就是說,你的 root 密碼忘記了!要怎麼辦?重新安裝嗎?另外, 有的時候是被入侵了, root 的密碼被更動過,該如何是好?

  這個時候就必須要使用到 /etc/shadow 這個資料了!我們剛剛知道密碼是存在這個檔案中的, 所以只要你能夠以各種可行的方法開機進入 Linux ,例如單人維護模式,或者是以 live CD (KNOPPIX) 來進入 Linux 系統。之後,將硬碟順利掛載,然後進入 /etc/shadow 這個檔案中,將 root 的密碼這一欄全部清空!然後再登入 Linux 一次,這個時候 root 將不要求輸入密碼 (有的時候需要輸入空白字元) 就可以登入了!這個時候請趕快以 passwd 設定 root 密碼即

可。


原文:http://blog.163.com/hanye_online/blog/static/19221717320119151321690/ 




聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.