Linux 使用者passwd檔案詳解

2021-09-24 14:54:12 字數 3297 閱讀 1758

使用者管理有兩個最重要的配置檔案,乙個是儲存使用者資訊的檔案/etc/passwd,乙個是儲存了使用者密碼的檔案/etc/shadow。

超級使用者的uid為0,在/etc/passwd裡面有很多偽使用者,這些使用者是不能登入的,他們的uid在1-499之間,安裝完系統就預設的新增了這些使用者。

uid為0的使用者就是超級使用者。

將/etc/passwd test:x:1002:1003::/home/test:/bin/bash將其改為test:x:0:1003::/home/test:/bin/bash

[root@centos oracle]# su - test

[root@centos ~]#

可以看到test使用者變為了超級使用者,許可權和root一樣。

在使用useradd新增的使用者是普通使用者,在系統安裝完畢在/etc/passwd裡面就有許多使用者,這裡面有很多使用者並不是真正可以登入系統和使用的。

root@localhost ~]# head  -n 5 /etc/passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

oracle:x:1001:1001:/home/oracle:/bin/bash

在/etc/passwd裡面儲存了每乙個使用者的資訊,可以使用man 5 passwd來檢視配置檔案幫助。

(密碼檔案)裡每行一條記錄,並且每行有這樣的格式:

account:password:uid:gid:gecos:directory:shell (帳號:密碼:使用者id:組id:一般的資訊:目錄:shell)

字段描述如下:

account   使用者在系統中的名字,它不能包含大寫字母.

password  加密的使用者密碼,或者星號。

uid       使用者 id 數。

gid       使用者的主要組 id 數。

gecos     這字段是可選的,通常為了存放資訊目的而設的. 通常,它包含了使用者的全名. gecos 意思是通用電氣綜合作業系統(general electric comprehen‐

sive    operating    system),    當     ge     的大型系統部分割售賣給     honeywell     時它被改為     gcos.     dennis     ritchie

作過報告:"有時我們傳送印刷品或批道作業到 gcos機器時,gcos 字段打斷了 $ident 卡的資訊,不太美觀。"

directory 使用者的 $home 目錄.

shell     登入時執行的程式(如果空的,使用 /bin/sh).  如果設為不存在的執行(程式),使用者不能通過 login(1) 登入.

在密碼位的地方沒有儲存密碼。在linux裡面核心只認識數字,不認識密碼,

偽使用者一般分為兩種,一種是與linux系統相關的,一種是與程式服務相關的。比如使用shutdown關機的時候就會呼叫偽使用者的身份。在linux系統裡面任何乙個程序操作都必須有乙個使用者身份,這個就通過呼叫偽使用者。比如安裝了apache,http的程序,啟動以後也要對應乙個使用者身份,但是不能對應root啟動這個程序,如果別人得到這個程序相當於竊取到管理員root的許可權,這樣很危險,所以都是通過一些偽使用者,新增一些服務的偽使用者,比如apache,mysql。這些實際上是這些程序啟動之後呼叫的使用者身份。

所以偽使用者最大的作用就是在一些系統操作或一些應用服務的呼叫的身份而已。

使用者組是同樣型別使用者的集合,乙個使用者可以屬於多個使用者組,比如有乙個使用者叫張三,可以讓其管理ftp server又可以管理web server,可以讓其同時屬於這兩個組。但是總要有乙個預設的組,uid就是定義預設組的組id,新增乙個乙個使用者的時候如果不指定預設組,預設建立乙個和使用者名稱相同的組並且將使用者新增進去。

在實際當中,新增乙個使用者必須指定所在的組。

乙個使用者屬於某個組就擁有這個組的許可權。所以使用者加入組就是讓使用者享有這個組的許可權。

描述資訊,這個部分可以寫內容也可以不寫,就是用來描述使用者資訊的,建議在新增使用者的時候寫上使用者的描述資訊。

每乙個普通使用者必須要有乙個宿主目錄來存放基本資訊,比如環境設定的選項,如果建立使用者不指定宿主目錄,那麼就會在/home下面建立和使用者同名的宿主目錄。

普通使用者使用的預設shell就是bashshell。

如果真的要將linux做乙個伺服器,那麼密碼最好使用8位或者8位以上的,大小寫數字字母的組合來組成密碼。unix最早採用的加密演算法是des,但是des識別的密碼位只有8位,現在使用的linux大多數時候使用的是des和md5混合使用的,md5是255位的。

md5進行密碼的加密,md5演算法對密碼的加密規則,第乙個,輸入的長度不固定但是輸出的長度是固定的,不管輸入的密碼長度是6位的還是8位的,生成的加密的密碼是固定長度的值,單向不可逆的,無法通過輸出推算出輸入的值。

[root@centos oracle]# echo "123456" | md5sum

f447b20a7fcbf53a5d5be013ea0b15af  -

[root@centos oracle]# echo "1" | md5sum

b026324c6904b2a9cb4b88d6d61c81d1  -

可以看到不同長度的密碼最終生成的密文都是同等長度的,在設定密碼的時候強度要足夠同時應該經常修改密碼。

為什麼不在/etc/passwd裡面密碼位放上使用者的加密密碼。

因為在/tec/passwd裡面儲存了使用者的資訊,有很多命令在使用的過程當中會呼叫這些資訊,呼叫這些資訊就需要/etc/passwd這個檔案。所以檢視/etc/passwd檔案會發現每乙個使用者對其都有乙個讀的許可權,那麼將加密密碼放在這裡每個人都可以拿到加密過後的密碼去嘗試破解,這樣就危險了。(使用者密碼是存放在/etc/shadow裡面)

[root@centos oracle]# ls -ld /etc/passwd

-rw-r--r--. 1 root root 2459 12月 25 21:25 /etc/passwd



Linux使用者檔案之passwd和shadow

passwd檔案是以行為單位的配置檔案,每行定義系統上的乙個使用者,行內分為字段,字段之間由乙個冒號隔開。這些字段依次為 使用者名稱 密碼 使用者id 主要組id gecos 主目錄 登入shell 字段解釋 使用者名稱 就是乙個使用者名稱,登入時候用的 密碼 在舊的unix系統上,這個字段含有使用...

passwd檔案寫入使用者密碼

在有 etc passwd寫入許可權的情況下,通過寫入一條賬號密碼,可以直接使用寫入的賬號密碼登入伺服器。openssl passwd 1 salt raj 生成加密後的密碼,salt 加鹽,1 linux密碼加密方式 123 wacky 輸入密碼 1 raj puzoloewpb0aeobnab6...

檢視使用者的資訊檔案 passwd

passwd 檔案 位置 etc passwd 作用 用於儲存使用者的賬戶資訊 注意點 由於passwd也可以作為乙個命令直接使用,也可以作為配置檔案,所以如果使用man命令進行檢視幫助資訊時,應該有2種寫法 man 5 passwd 檢視的是passwd命令的幫助 man 1 passwd 檢視的...