1. 程式人生 > >Linux密碼檔案

Linux密碼檔案

(1).密碼檔案

[[email protected] ~]# head -3 /etc/shadow
root:$6$kcgcu794R0VP3fDL$aYN8XUbtWvZ4QQtT2xVW.N2CgE3YLPdtnprAAtKZUgNdq8itUJEN6NoYQDarLUevcDCWrxMVId8b18ujwST1b0::0:99999:7:::
bin:*:17632:0:99999:7:::
daemon:*:17632:0:99999:7:::

  內容格式如下,用冒號隔開,可以用man 5 shadow檢視幫助:

name

登入名稱,必須是有效使用者名稱

password

已加密密碼,分為三個部分用$分隔,第一部分表示用哪種雜湊演算法;第二部分是用於加密雜湊的salt;第三部分是已加密的雜湊

雜湊演算法:1表示MD5;6表示SHA-512;5表示SHA-256

lastchanage

最近一次更改密碼的日期,以距離1970/1/1的天數表示

min-age

密碼更改後多少天內不能再次更改。0表示可以隨時更改

max-age

密碼過期時間,必須在期限內修改密碼

warning

警告期,警告使用者再過多少天密碼將過期。0表示不提供警告

inactive

寬限期,密碼過期多少天仍然可以使用

expire

帳號過期時間,以距離1970/1/1的天數表示。0或空字元表示永不過期

blank

預留欄位

  注意1:兩個不同的使用者使用相同的密碼,加密過後雜湊值不同,因為salt不同。

例項展示:

[[email protected] ~]# useradd t1
[[email protected] ~]# useradd t2
[
[email protected]
~]# passwd t1    //互動式修改密碼 更改使用者 t1 的密碼 。 新的 密碼: 無效的密碼: 密碼少於 8 個字元 重新輸入新的 密碼: passwd:所有的身份驗證令牌已經成功更新。 [[email protected] ~]# echo 123456 | passwd --stdin t2    //非互動式修改密碼 更改使用者 t2 的密碼 。 passwd:所有的身份驗證令牌已經成功更新。 [[email protected] ~]# tail -2 /etc/shadow t1:$6$wS6JOIbp$gqRhtxnFFpB5W6yptxXVEOlvqaRFtgEBBTqJoiWTrml2Uz73/hGgePtJF8E8B0ppsXMalSBMTJgRUoMBIGPjJ.:17902:0:99999:7::: t2:$6$mZnceAg8$t8l5AEXGs7iUhl98Zxx5hlKVn1qhOzlKsOMbgMuSTrp7HRsyRPgi12Dk5jRdQL/F3zPxMK7XhcdaU.MkgcRE91:17902:0:99999:7:::

         注意2:兩段加密互換等於互換密碼,不影響登入。

         注意3:salt是passwd命令自動生成的。

(2).配置檔案/etc/login.defs

egrep是grep的高階用法等同於grep -e,-v選項表示取反值,"^$|^#"中^表示以什麼開頭,$表示空行,完整意思表示以空行或#開頭。

[[email protected] ~]# egrep -v "^$|^#" /etc/login.defs
MAIL_DIR        /var/spool/mail
PASS_MAX_DAYS   99999
PASS_MIN_DAYS   0
PASS_MIN_LEN    5
PASS_WARN_AGE   7
UID_MIN                  1000
UID_MAX                 60000
SYS_UID_MIN               201
SYS_UID_MAX               999
GID_MIN                  1000
GID_MAX                 60000
SYS_GID_MIN               201
SYS_GID_MAX               999
CREATE_HOME     yes
UMASK           077
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512

詳細說明:

CREATE_HOME(boolean) 指示是否應該為新使用者預設建立主目錄。此設定並不應用到系統使用者,並且可以使用命令列覆蓋。

GID_MAX(number),GID_MIN(number) useradd,groupadd或newusers建立的常規組的組ID範圍。GID_MIN預設值1000(CentOS6為500),GID_MAX預設值60000。

MAIL_DIR(string)郵箱目錄。修改或刪除使用者賬戶時需要處理郵箱,如果沒有指定,將使用編譯時指定的預設值。

MAIL_FILE(string) 定義使用者郵箱檔案的位置(相對於主目錄)。

注意:MAIL_DIR和MAIL_FILE變數由useradd,usermod和userdel用於建立、移動或刪除使用者郵箱。如果MAIL_CHECK_ENAB設定為yes,它們也被用於定義MAIL環境變數。

MAX_MEMBERS_PER_GROUP(number) 每個組條目的最大成員數。達到最大值時,在/etc/group開始一個新條目(行)(使用同樣的名稱,同樣的密碼,同樣的GID)。預設值是0,意味著組中的成員數沒有限制。此功能(分割組)允許限制組檔案中的行長度。這對於確保NIS組的行比長於1024字元。如果要強制這個限制,可以使用25。

注意:分割組可能不受所有工具的支援(甚至在Shadow工具集中)。如果沒有必要你不應該使用這個變數。

PASS_MAX_DAYS(number) 一個密碼可以使用的最大天數。如果密碼比這個舊,將會強迫更改密碼。如果不指定,就假定為-1,這會禁用此限制。

PASS_MIN_DAYS(number) 兩次更改密碼時間最小間隔。將會拒絕任何早於此的更改密碼的嘗試。如果不指定就假定為-1,將會禁用此限制。

PASS_WARN_AGE(number) 密碼過期之前鬼畜警告的天數。0表示在過期當天警告,負值表示不警告。如果沒有指定,不會給出警告。

SYS_GID_MAX(number),SYS_GID_MIN(number) useradd、groupadd或newusers建立的系統組的組ID範圍。SYS_GID_MIN預設101(CentOS6為201),SYS_GID_MAX預設GID_MIN-1。

SYS_UID_MAX(number),SYS_UID_MIN(number) useradd或newusers建立的系統使用者的使用者ID的範圍。SYS_UID_MIN預設101(CentOS6為201),SYS_UID_MAX預設UID_MIN-1。

UID_MAX(number),UID_MIN(number) useradd或newusers建立的普通使用者的使用者ID的範圍。UID_MIN預設1000(CentOS6為500),UID_MAX預設60000。

UMASK(number) 檔案模式建立掩碼初始化為此值。如果沒有指定,掩碼初始化為022。Useradd和newusers使用此掩碼設定它們建立的使用者主目錄的模式。也被login用於指定使用者的初始umask。注意,此掩碼可以被使用者的GECOS行覆蓋(當設定了QUOTAS_ENAB時),也可以被帶K指示符的limits(5)定義的限制值覆蓋。

USERGROUPS_ENAB(boolean) 如果uid和gid相同,使用者名稱和主使用者名稱也相同,使非root組的組掩碼位和屬主位相同(如:022->002,077->007)。如果設定為yes,組中也沒有成員了,userdel將移除此使用者組,useradd建立使用者時,也會建立一個同名的預設組。

 (3).擴充套件命令chage

chage [選項] 登入名

1)選項

-m 密碼更改後多少天內不能再次更改。0表示可以隨時更改
-M 密碼過期時間,必須在期限內修改密碼
-W 警告期,警告使用者再過多少天密碼將過期。0表示不提供警告
-E 帳號過期時間,以距離1970/1/1的天數表示。0或空字元表示永不過期
-d最近一次更改密碼的日期,以距離1970/1/1的天數表示。為0表示強制在下次登入時更新密碼
-I寬限期,密碼過期多少天仍然可以使用
-l 顯示使用者當前設定資訊

2)例項

強制使用者下次修改密碼

[[email protected] ~]# chage -d 0 t1
[[email protected] ~]# ssh [email protected]
The authenticity of host '192.168.0.10 (192.168.0.10)' can't be established.
ECDSA key fingerprint is SHA256:r8TKDXZGzdWkjGnXtfb/YGwCTYViIh9PvJxjrkA4hXU.
ECDSA key fingerprint is MD5:99:ea:1a:2c:c3:81:de:6c:95:b2:86:c1:d0:7e:60:96.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.10' (ECDSA) to the list of known hosts.
[email protected]'s password:
You are required to change your password immediately (root enforced)
Last login: Sun Jan  6 18:42:35 2019 from 192.168.0.99
WARNING: Your password has expired.
You must change your password now and login again!
更改使用者 t1 的密碼 。
為 t1 更改 STRESS 密碼。
(當前)UNIX 密碼:
新的 密碼: