用戶密碼和組密碼分別保存在/etc/shadow和/etc/gshadow裏,下面我們對這兩個文件進行分析。
shadow裏保存的內容都是分段的,每段以”:“分隔,每一段的內容如下:
用戶名:加密後的密碼:最近一次修改密碼的日期:密碼最短使用天數:密碼最長使用天數:提前多少天提示用戶密碼即將過期:密碼非活動天數:密碼鎖定日期:保留字段
第二段:加密後的密碼
通過man 3 crypt可知:
$id$salt$encrtpted
id:表示加密方法
salt:是從[a-zA-Z0-9./]隨機選取的2個字符,用來擾亂算法的
encrtpted:用戶真正的經過加密算法計算過的密碼
第三段:最近一次修改密碼的日期,這項表示的是1970-01-01距離密碼修改日期共經歷了多少天
第四段:密碼最短使用天數,0表示沒有限制
第五段:密碼最長使用天數,99999表示無限制
第七段:密碼非活動天數,0表示密碼過期立即鎖定,-1表示密碼永不過期
第八段:密碼鎖定日期,這項表示的是1970-01-01距離密碼修改日期共經歷了多少天
和用戶密碼相關的命令有passwd,usermod,chage,接下來我們一一講解它們的用法:
1.passwd [option] USERNAME
a.新建hadoop用戶,並查看shadow
注意第二個字段是!!,因爲還沒有爲hadoop設置密碼,我們可以用passwd爲用戶設置密
格式:passwd USERNAME
a.1 :
passwd還有另一種爲用戶設置密碼的方式:
passwd --stdin USERNAME
passwd支持使用管道讀取標準輸入作爲新密碼。
b.鎖定用戶:
格式:passwd -l USERNAME
登錄失敗:
查看shadow,密碼段最前面多了!!,密碼不對了,不能登錄是正常的:
c.解鎖用戶:
格式:passwd -u USERNAME
d.修改密碼最短使用天數:
格式:passwd -n 天數 USERNAME
e.修改密碼最長使用天數
格式:passwd -x 天數 USERNAME
f.修改提前多少天提示用戶密碼即將過期:
格式:passwd -w 天數 USERNAME
g.修改密碼非活動天數:
格式:passwd -i 天數 USERNAME
h.使密碼立即過期,並強制用戶登錄時更改密碼:
格式:passwd -e USERNAME
2.chage [option] USERNAME
a.修改最後一次密碼修改日期:
格式:chage -d YYYY-MM-DD USERNAME
hadoop最後一次修改密碼是2014-04-30,第3個字段爲16190;通過chage更改了最後一次密碼修改日期爲爲2014-04-29,所以第3個字段變爲了16189
b.修改密碼最短使用天數:
格式:chage -m USERNAME
c.修改密碼最長使用天數
格式:chage -M USERNAME
d.修改提前多少天提示用戶密碼即將過期:
格式:chage -W USERNAME
e.修改密碼非活動天數:
格式:chage -I USERNAME
f.修改過期時間:
格式:chage -E YYYY-MM-DD USERNAME
現在是2014-04-30(距離1970-01-01是16190天),我們修改密碼2014-05-01過期,所以是16191
3.usermod
a.修改密碼過期日期:
格式:usermod -e YYYY-MM-DD USERNAME
格式:usermod -f 天數 USERNAME
例:
修改用戶最後一次修改密碼日期2014-4-20,密碼最短使用2天,最長使用10天,提前7天警告,非活動天數3天。
密碼2014-04-30過期,但是非活動天數是3天,2014-05-01到05-03是非活動天數,如果不修改密碼將鎖定。
由於密碼2014-04-30已過期,所以登錄會提示密碼已過期:
但是由於非活動天數3天,該到2014-05-03鎖定,那麼我們把現在的日期改爲2014-05-01,理論上用hadoop登錄系統時會提示修改密碼:
使用hadoop登錄系統:
果然,我們的猜想都是對的。
我們還可以給組設置密碼,使用gpasswd命令:
格式:gpasswd GRPNAME
我們給test組設置密碼:
切換到hadoop用戶,並新建a.txt文件:
我們如何用hadoop用戶新建b.txt的屬組是test組?
查看hadoop id信息:
我們新建oracle組,並將其添加到hadoop的附加組:
給oracle組設置密碼:
再切換到hadoop,並切換到oracle組,新建c.txt:
查看hadoop id信息:
由下圖可以看出:
鍵入exit並回車,新建的d.txt屬組爲用戶hadoop的基本組
總結:
1.newgrp命令的作用就是log in to a new group
1使用newgrp命令切換的new group將臨時作爲該用戶的基本組;
2.如果new group是該用戶的附加組,則不需要輸入密碼;否則,需要輸入密碼;
3.使用exit退出改用戶的臨時基本組,返回用戶自己的基本組;
newgrp的命令格式:
newgrp [-] [group],-的作用和su [-] anotheruser類似;
有關gpasswd和newgrp請自行man其詳細用法。
如上述內容有錯誤的地方,希望大家諒解,並指出錯誤所在,小弟感激不盡!
我是一隻小小小菜鳥,希望能飛得更高!