Linux用戶密碼文件/etc/shadow相關


(1).密碼文件

[root@xuexi ~]# 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不同。

實例展示:

[root@xuexi ~]# useradd t1
[root@xuexi ~]# useradd t2
[root@xuexi ~]# passwd t1    //交互式修改密碼
更改用戶 t1 的密碼 。
新的 密碼:
無效的密碼: 密碼少於 8 個字符
重新輸入新的 密碼:
passwd:所有的身份驗證令牌已經成功更新。
[root@xuexi ~]# echo 123456 | passwd --stdin t2    //非交互式修改密碼
更改用戶 t2 的密碼 。
passwd:所有的身份驗證令牌已經成功更新。
[root@xuexi ~]# 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選項表示取反值,"^$|^#"中^表示以什么開頭,$表示空行,完整意思表示以空行或#開頭。

[root@xuexi ~]# 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)實例

強制用戶下次修改密碼

[root@xuexi ~]# chage -d 0 t1
[root@xuexi ~]# ssh t1@192.168.0.10
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.
t1@192.168.0.10'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 密碼:
新的 密碼:

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM