1. 程式人生 > >【轉】關於Ubuntu中passwd、shadow、group等檔案

【轉】關於Ubuntu中passwd、shadow、group等檔案

摘要: 在Ubuntu系統中,/etc目錄下,有三個檔案:passwd shadow group,可能我們已經在用了,但是沒有注意到其詳細。 這三個配置檔案用於系統帳號管理,都是文字檔案,可用vi等文字編輯器開啟。

在Ubuntu系統中,/etc目錄下,有三個檔案:passwd shadow group,可能我們已經在用了,但是沒有注意到其詳細。

這三個配置檔案用於系統帳號管理,都是文字檔案,可用vi等文字編輯器開啟。/etc/passwd用於存放使用者帳號資訊,/etc/shadow 用於存放每個使用者加密的密碼,/etc/group用於存放使用者的組資訊。

  1. /etc/passwd

/etc/passwd檔案的內容如下:

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4::sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh

每一行是由分號分隔的字串組成,它的格式如下:

username:password:uid:gid:gecos:homedir:shell
各域對應的中文說明如下:
使用者名稱:密碼:使用者ID:組ID:使用者全名:主目錄:登入shell
gecos是通用電子計算機作業系統的縮寫,是Bell實驗室中的一臺大型主機。

Unix系統最初是用明文儲存密碼的,後來由於安全的考慮,採用crypt()演算法加密密碼並存放在/etc/passwd檔案。現在,由 於計算機處理能力的提高,使密碼破解變得越來越容易。/etc/passwd檔案是所有合法使用者都可訪問的,大家都可互相看到密碼的加密字串,這給系統 帶來很大的安全威脅。現代的Unix系統使用影子密碼系統,它把密碼從/etc/pa sswd檔案中分離出來,真正的密碼儲存在/etc/shadow檔案中,shadow檔案只能由超級使用者訪問。這樣入侵者就不能獲得加密密碼串,用於破 解。使用shadow密碼檔案後,/etc/passwd檔案中所有帳戶的password域的內容為”x”,如果password域的內容為”*”,則 該帳號被停用。使用passwd這個程式可修改使用者的密。

  1. /etc/shadow

/etc/shadow存放加密的口令,該檔案只能由root讀取和修改。下面是shadow檔案的內容:

root:143ZR5j08$kuduq1uH36ihQuiqUGi/E9::0::7:::
daemon:*::0::7:::
bin:*::0::7:::
sys:*::0::7:::
sync:*::0::7:::

我們可用chage命令顯示test使用者的帳號資訊:
debian:~# chage -l test
最小: 0
最大:
警告日: 7
失效日: -1
最後修改: 7月 09 2005
密碼過期: 從不
密碼失效: 從不
帳戶過期: 從不

/etc/shadow檔案的格式如下:

username:password:last_change:min_change:max_change:warm:failed_expire:expiration:reserved
各欄位的簡要說明:
last_change:表示自從Linux使用以來,口令被修改的天數。可用chage -d命令修改。
min_change:表示口令的最小修改間隔。可用chage -m命令修改。
max_change:

它的格式如下:

groupname:password:gid:members

這裡的password代表組口令,很少用到。它可使原先不在這個群組中的使用者可以通過newgrp命令暫時繼承該組的許可權,使用 newgrp命令時會新開一個shell。口令的加密方式和passwd檔案中的口令一樣,所以如果需設定組口令,要用passwd程式虛設一個使用者,再 把該使用者password節中的加密口令拷貝到/etc/group檔案中。members列代表組成員,我們可把需加入該組的使用者以逗號分隔新增到這裡 即可。同一組的成員可繼承該組所擁有的許可權。

這樣,使用者帳戶本身在 /etc/passwd 中定義。Linux 系統包含一個 /etc/passwd 的同伴檔案,叫做 /etc/shadow。該檔案不像 /etc/passwd,只有對於 root 使用者來說是可讀的,並且包含加密的密碼資訊。我們來看一看 /etc/shadow 的一個樣本行:
CODE:
drobbins:11234567890123456789012345678901:11664:0:-1:-1:-1:-1:0

每一行給一個特殊帳戶定義密碼資訊,同樣的,每個欄位用 : 隔開。第一個欄位定義與這個 shadow 條目相關聯的特殊使用者帳戶。第二個欄位包含一個加密的密碼。其餘的欄位在下表中描述:

欄位 3 自 1/1/1970 起,密碼被修改的天數
欄位 4 密碼將被允許修改之前的天數(0 表示“可在任何時間修改”)
欄位 5 系統將強制使用者修改為新密碼之前的天數(1 表示“永遠都不能修改”)
欄位 6 密碼過期之前,使用者將被警告過期的天數(-1 表示“沒有警告”)
欄位 7 密碼過期之後,系統自動禁用帳戶的天數(-1 表示“永遠不會禁用”)
欄位 8 該帳戶被禁用的天數(-1 表示“該帳戶被啟用”)
欄位 9 保留供將來使用

shadow 是 passwd 的影子檔案。
在linux中,口令檔案在/etc/passwd中,早期的這個檔案直接存放加密後的密碼,前兩位是”鹽”值,是一個隨機數,後面跟的是加密的密碼。為了安全,現在的linux都提供了 /etc/shadow這個影子檔案,密碼放在這個檔案裡面,並且是隻有root可讀的。
/etc/passwd檔案的每個條目有7個域,分別是名字:密碼:使用者id:組id:使用者資訊:主目錄:shell
例如:ynguo:x:509:510::/home/ynguo:/bin/bash
在利用了shadow檔案的情況下,密碼用一個x表示,普通使用者看不到任何密碼資訊。影子口令檔案儲存加密的口令;/etc/passwd檔案中的密碼全部變成x。Shadow只能是root可讀,從而保證了安全。
/etc/shadow檔案每一行的格式如下:使用者名稱:加密口令:上一次修改的時間(從1970年1月1日起的天數):口令在兩次修改間的最小天數:口令修改之前向用戶發出警告的天數:口令終止後賬號被禁用的天數:從1970年1月1日起賬號被禁用的天數:保留域。
例如:root:1t4sFPHBq$JXgSGgvkgBDD/D7FVVBBm0:11037:0:99999:7:-1:-1:1075498172

  1. /etc/group

/etc/group 檔案是使用者組的配置檔案,內容包括使用者和使用者組,並且能顯示出使用者是歸屬哪個使用者組或哪幾個使用者組,因為一個使用者可以歸屬一個或多個不同的使用者組;同一用 戶組的使用者之間具有相似的特徵。比如我們把某一使用者加入到root使用者組,那麼這個使用者就可以瀏覽root使用者家目錄的檔案,如果root使用者把某個檔案 的讀寫執行許可權開放,root使用者組的所有使用者都可以修改此檔案,如果是可執行的檔案(比如指令碼),root使用者組的使用者也是可以執行的; 使用者組的特性在系統管理中為系統管理員提供了極大的方便,但安全性也是值得關注的,如某個使用者下有對系統管理有最重要的內容,最好讓使用者擁有獨立的使用者 組,或者是把使用者下的檔案的許可權設定為完全私有;另外root使用者組一般不要輕易把普通使用者加入進去.

/etc/group 內容具體分析
/etc/group 的內容包括使用者組(Group)、使用者組口令、GID及該使用者組所包含的使用者(User),每個使用者組一條記錄;格式如下:

group_name:passwd:GID:user_list

在/etc/group 中的每條記錄分四個欄位:
第一欄位:使用者組名稱;
第二欄位:使用者組密碼;
第三欄位:GID
第四欄位:使用者列表,每個使用者之間用,號分割;本欄位可以為空;如果欄位為空表示使用者組為GID的使用者名稱; 我們舉個例子:
root:x:0:root,linuxsir 注:使用者組root,x是密碼段,表示沒有設定密碼,GID是0,root使用者組下包括root、linuxsir以及GID為0的其它使用者(可以通過/etc/passwd檢視);
beinan:x:500:linuxsir 注:使用者組beinan,x是密碼段,表示沒有設定密碼,GID是500,beinan使用者組下包括linuxsir使用者及GID為500的使用者(可以通過/etc/passwd檢視);
linuxsir:x:502:linuxsir 注:使用者組linuxsir,x是密碼段,表示沒有設定密碼,GID是502,linuxsir使用者組下包使用者linuxsir及GID為502的使用者(可以通過/etc/passwd檢視);
helloer:x:503: 注:使用者組helloer,x是密碼段,表示沒有設定密碼,GID是503,helloer使用者組下包括GID為503的使用者,可以通過/etc/passwd檢視;

而/etc/passwd 對應的相關的記錄為:

root:x:0:0:root:/root:/bin/bash
beinan:x:500:500:beinan sun:/home/beinan:/bin/bash
linuxsir:x:505:502:linuxsir open,linuxsir office,13898667715:/home/linuxsir:/bin/bash
helloer:x:502:503::/home/helloer:/bin/bash

由此可以看出helloer使用者組包括 helloer使用者;所以我們檢視一個使用者組所擁有的使用者,可以通過對比/etc/passwd和/etc/group來得到;

關於GID ;
GID和UID類似,是一個正整數或0,GID從0開始,GID為0的組讓系統付予給root使用者組;系統會預留一些較靠前的GID給系統虛擬使用者(也被 稱為偽裝使用者)之用;每個系統預留的GID都有所不同,比如Fedora 預留了500個,我們新增新使用者組時,使用者組是從500開始的;而Slackware 是把前100個GID預留,新新增的使用者組是從100開始;檢視系統新增使用者組預設的GID範圍應該檢視 /etc/login.defs 中的 GID_MIN 和GID_MAX 值; 我們可以對照/etc/passwd和/etc/group 兩個檔案;我們會發現有預設使用者組之說;我們在 /etc/passwd 中的每條使用者記錄會發現使用者預設的GID ;在/etc/group中,我們也會發現每個使用者組下有多少個使用者;在建立目錄和檔案時,會使用預設的使用者組;我們還是舉個例子; 比如我把linuxsir 加為root使用者組,在/etc/passwd 和/etc/group 中的記錄相關記錄為:
linuxsir使用者在 /etc/passwd 中的記錄;我們在這條記錄中看到,linuxsir使用者預設的GID為502;而502的GID 在/etc/group中查到是linuxsir使用者組;
linuxsir:x:505:502:linuxsir open,linuxsir office,13898667715:/home/linuxsir:/bin/bash

linuxsir 使用者在 /etc/group 中的相關記錄;在這裡,我們看到linuxsir使用者組的GID 為502,而linuxsir 使用者歸屬為root、beinan使用者組;
root:x:0:root,linuxsir
beinan:x:500:linuxsir
linuxsir:x:502:linuxsir

我們用linuxsir 來建立一個目錄,以觀察linuxsir使用者建立目錄的許可權歸屬;
[[email protected] ~]mkdirtestdir[linuxsir@localhost] ls -lh
總用量 4.0K
drwxrwxr-x 2 linuxsir linuxsir 4.0K 10月 17 11:42 testdir

通過我們用linuxsir 來建立目錄時發現,testdir的許可權歸屬仍然是linuxsir使用者和linuxsir使用者組的;而沒有歸屬root和beinan使用者組,明白了吧; 但值得注意的是,判斷使用者的訪問許可權時,預設的GID 並不是最重要的,只要一個目錄讓同組使用者可以訪問的許可權,那麼同組使用者就可以擁有該目錄的訪問權,在這時使用者的預設GID 並不是最重要的;

  1. /etc/gshadow

/etc/gshadow 解說;

/etc/gshadow是/etc/group的加密資訊檔案,比如使用者組(Group)管理密碼就是存放在這個檔案。/etc/gshadow和/etc/group是互補的兩個檔案;對於大型伺服器,針對很多使用者和組,定製一些關係結構比較複雜的許可權模型,設定使用者組密碼是極有必要的。比如我們不想讓一些非使用者組成員永久擁有使用者組的許可權和特性,這時我們可以通過密碼驗證的方式來讓某些使用者臨時擁有一些使用者組特性,這時就要用到使用者組密碼;

/etc/gshadow 格式如下,每個使用者組獨佔一行;
groupname:password:admin,admin,…:member,member,…

第一欄位:使用者組
第二欄位:使用者組密碼,這個段可以是空的或!,如果是空的或有!,表示沒有密碼;
第三欄位:使用者組管理者,這個欄位也可為空,如果有多個使用者組管理者,用,號分割;
第四欄位:組成員,如果有多個成員,用,號分割;

舉例:

beinan:!::linuxsir
linuxsir:oUS/q7NH75RhQ::linuxsir

第一欄位:這個例子中,有兩個使用者組beinan用linuxsir
第二欄位:使用者組的密碼,beinan使用者組無密碼;linuxsir使用者組有已經,已經加密;
第三欄位:使用者組管理者,兩者都為空;
第四欄位:beinan使用者組所擁有的成員是linuxsir ,然後還要對照一下/etc/group和/etc/passwd檢視是否還有其它使用者,一般預設新增的使用者,有時同時也會建立使用者組和使用者名稱同名稱; linuxsir 使用者組有成員linuxisir;

如何設定使用者組的密碼? 我們可以通過 gpasswd來實現;不過一般的情況下,沒有必要設定使用者組的密碼;不過自己實踐一下也有必要;下面是一個為linuxsir使用者組設定密碼的例子;

gpasswd 的用法: gpasswd 使用者組

[email protected] ~]# gpasswdlinuxsir
正在修改 linuxsir 組的密碼
新密碼:
請重新輸入新密碼:

newgrp

使用者組之間的切換,應該用 newgrp ,這個有點象使用者之間切換的su ;我先舉個例子:
[[email protected] ~]newgrplinuxsir[beinan@localhost] mkdir lingroup
[[email protected] ~]lsldlingroup/drwxrxrx2beinanlinuxsir4096101815:56lingroup/[beinan@localhost] newgrp beinan
[[email protected] ~]mkdirbeinangrouptest[beinan@localhost] ls -ld beinangrouptest
drwxrwxr-x 2 beinan beinan 4096 10月 18 15:56beinangrouptest

說明:我是以beinan使用者組切換到linuxsir使用者組,並且建了一個目錄,然後再切換回beinan使用者組,又建了一個目錄,請觀察兩個目錄屬使用者組的不同;還是自己體會吧;

轉自:http://www.cnblogs.com/haochuang/ 8年IT工作經驗,5年測試技術與管理,2年產品與專案管理,曾參與過雲端計算\雲端儲存\車聯網產品研發工作; 業餘自媒體人,有技術類垂直微信公眾號;如有招聘或求職方面需求,請Mail to [email protected] ;或通過 QQ:363573922 微博:@念槐聚 聯絡;

相關推薦

Linux記錄終端輸出到txt文字檔案

轉載: http://blog.csdn.net/tengh/article/details/41823883   一,把命令執行的結果儲存到檔案當中:用 > 把輸出轉向就可以了  例子:  $ ls > ls.txt    #或者&

QTQWidgetQDialog及QMainWindow的區別

屏幕 編輯 派生 標記 裝飾 按鈕 set 沒有 idg QWidget類是所有用戶界面對象的基類。 窗口部件是用戶界面的一個基本單元:它從窗口系統接收鼠標、鍵盤和其它事件,並且在屏幕上繪制自己。每一個窗口部件都是矩形的,並且它們按Z軸順序排列。一個窗口部件可以被它的父窗口

SQL的取整函數FLOORROUNDCEILTRUNCSIGN

log rec 截取 符號 floor 個數 clas 絕對值 sign --------------------------------------------------------------------------1 trunc(value,precision)按精

githubREADME.md程式碼高亮加入表格解決方法

【原文】http://blog.csdn.net/guodongxiaren/article/details/23690801 本文解決了往github的readme檔案中換行、插圖、加url連結的問題,寫的相當詳細。 (新增:字型變紅 <font color=

演算法時間複雜度概括——o(1)o(n)o(logn)o(nlogn)

       在描述演算法複雜度時,經常用到o(1), o(n), o(logn), o(

js15個常用的正則表達式

顏色 字符 8.4 特殊字符 cnp 浮點數 == div mail 1 用戶名正則 //用戶名正則,4到16位(字母,數字,下劃線,減號) var uPattern = /^[a-zA-Z0-9_-]{4,16}$/; //輸出 true console.log(uPa

VS2010 C++創建DLL圖解

-a rar cls ret ria endif -s pan 項目 標簽: dllc++2010threadlibraryc 本文章已收錄於: .embody { padding: 10px 10px 10px; margin: 0 -20px; b

JavaSE--網絡安全之證書密鑰密鑰庫名詞解釋

detail 發的 都是 base64 request 服務器 win art ive 轉載:http://www.cnblogs.com/alanfang/p/5600449.html 那些證書相關的名詞解釋(SSL,X.509,PEM,DER,CRT,CER,KEY,

Ubuntu下外放有聲音 耳機沒聲音

新的 驅動 手機 發現 停止 執行 恢復 保存 機會 真是使用linux每天都有新的發現啊,今天早上起來用電腦,想聽幾首歌,插上耳機後發現沒聲音,我還以為是耳機壞了,就把耳機插在了手機上,發現耳機有聲音,很納悶,我象是不是電腦接口有問題了,但是在進系統的時候耳機會響一下,所

C#的兩把雙刃劍:抽象類和接口

實例 可維護 對象 為什麽不使用 程序 一定的 代碼 方式 索引 轉:http://www.cnblogs.com/djzxjblogs/p/7587735.html 第一次面試的時候, 面試官問我,抽象類和接口的區別。 本人也是,按照面試寶典上的回答,說了一大堆。

C++const在函數名前面和函數後面的區別

const成員函數 調用 參數傳遞 成員 指向 int 區別 ... urn 一、概念   當const在函數名前面的時候修飾的是函數返回值,在函數名後面表示是常成員函數,該函數不能修改對象內的任何成員,只能發生讀操作,不能發生寫操作。 二、原理:   我們都知道在調用

瀏覽器輸入url後發生了什麽

正常 工作 orb 問題: serve es2017 背景 ace perm 原文地址:http://www.jianshu.com/p/c1dfc6caa520 在學習前端的過程中經常看到這樣一個問題:當你在瀏覽器中輸入url後發生了什麽?下面是個人學習過程中的總結,供個

js的事件委托或是事件代理詳解

ava 程序 fff 員工 我們 cnblogs 上傳 on() 類型 起因: 1、這是前端面試的經典題型,要去找工作的小夥伴看看還是有幫助的; 2、其實我一直都沒弄明白,寫這個一是為了備忘,二是給其他的知其然不知其所以然的小夥伴們以參考; 概述: 那什麽叫

權限管理學習 一ASP.NET FORMS身份認證

datetime archive 什麽 void ole data nbsp onf href 【轉】權限管理學習 一、ASP.NET Forms身份認證 說明:本文示例使用的VS2017和MVC5。系統無論大小、牛逼或屌絲,一般都離不開註冊、登錄。那麽接下來我們就來分析下

範數規則化L0L1與L2範數

spa http span get font lan pan href -s http://blog.csdn.net/zouxy09/article/details/24971995【轉】範數規則化L0、L1與L2範數

AppDomain 詳解二-C#動態加載和卸載DLL

all created 新版本 odin generic reflect 可能 params 詳細 在C++中加載和卸載DLL是一件很容易的事,LoadLibrary和FreeLibrary讓你能夠輕易的在程序中加載DLL,然後在任何地方 卸載。在C#中我們也能使用Asse

Python操作mysql的pymysql模塊詳解

定義 padding 參數化查詢 finall 支持 順序 執行sql mysq syntax Python中操作mysql的pymysql模塊詳解 前言 pymsql是Python中操作MySQL的模塊,其使用方法和MySQLdb幾乎相同。但目前pymysql支持p

CSS的浮動和清除浮動

但是 spa 下拉 而已 ges 推薦 授權 自己的 -c 以下轉自《CSS中的浮動和清除浮動,梳理一下!》 浮動到底是什麽? 浮動核心就一句話:浮動元素會脫離文檔流並向左/向右浮動,直到碰到父元素或者另一個浮動元素。請默念3次! 浮動最初設計的目

C#Func與Action的理解

.net ring UNC 簡單 代碼 操作 不必要 返回值 tps 原文地址:https://www.cnblogs.com/ultimateWorld/p/5608122.html Action 與 Func是.NET類庫中增加的內置委托,以便更加簡潔方便的使用委托。最

android開發學習 ------- android的單例模式 (詳解)

lan post tail -- and 使用 href details android開發 https://blog.csdn.net/u011418943/article/details/60139644 這篇文章 前因後果 都說出來了 ,值得學習。 htt