linux用戶:
linux用戶大體分為兩種:一是:管理員用戶;二是普通用戶,普通用戶又可以分為系統用戶和登錄用戶。因為linux是一個多用戶多任務的系統,所以每一個要使用系統資源的用戶,都要向管理員申請一個賬號,使用這個賬號登錄到系統。每個用戶都擁有一個自己的名字和密碼,以登錄到用戶。
每個用戶都有唯一的用戶標識(userid,UID),是以16bits二進制數字來表示0-65535。以CentOS為例管理員用戶的UID是0;普通用戶的UID為1-65535,其中系統用戶的UID在centos6及早些版本為1-499,在CentOS7中為1-999。登錄用戶在CentOS6及早些版本為500-60000,在CentOS7中為1000-60000。
Linux組的類別:
有些時候一些用戶需要統一管理,于是就可以創建一些用戶組。同理用戶組也分為管理員組和普通用戶組,他們也有他們的組標識(GID),他們的分配方法與UID的完全相同。有時一個用戶需要多重身統工作,所以用戶組又可以分為用戶的主組和附加組。也因為權限的不同可以分為私有組和公共組,顧名思義私有組屬于用戶自己私有,所以私有組與用戶名同名且只有一個用戶,公共組就可以擁有多個成員。
用戶的主要組(主組):
用戶必須屬于一個且只有一個主組(基本組)
組名同用戶名,且僅包含一個用戶:私有組
用戶的附加組(輔助組):
一個用戶可以屬于零個或多個輔助組,可以使用id 或 groups命令來查看用戶所屬的組
如圖所示用戶 test 就有屬于兩個組,主組為root,附加組為nobody。
用戶和組的配置文件
當用戶登錄linux系統時,由于linux并不認識賬號名稱,所以它會先去查找一個名為/etc/passwd的文件,通過識別UID進行名稱解析,用戶組名稱也需要解析,但是它是通/etc/group的文件進行名稱解析。用戶的密碼存儲在/etc/shadow文件下,用戶組的密碼存儲在/etc/gshadow下。而為了防止賬戶丟失,密碼都是通過加密保存的,加密算法通常有以下三類:對稱加密,非對稱加密和單項加密
Linux用戶和組的主要配置文件:
-
/etc/passwd:用戶及其屬性信息(名稱、UID、主組ID等)
-
/etc/group:組及其屬性信息
-
/etc/shadow:用戶密碼及其相關屬性(只有管理員用戶可以查看)
-
/etc/gshadow:組密碼及其相關屬性(只有管理員用戶可以查看)
可以用man來查看一下文件的具體信息,使用whatis命令可以看到,所需要了解的為man手冊的第五章。
man 5 passwd,可以看到這個文件中主要有這七個部分:
下面我們來具體的了解一下這四個配置文件:
1、passwd 文件格式
-
login name:登錄用名(wang)
-
passwd:密碼(x)
-
UID:用戶身份編號(1000)
-
GID:登錄默認所在組編號(1000)
-
GECOS:用戶全名或注釋
-
home directory:用戶主目錄(/home/wang)
-
shell:用戶默認使用shell (/bin/bash)
通過查看/etc/passwd這個文件可以查看用戶信息,也可以使用getent命令來實現
在文件中第二列密碼項是以“X”顯示,這是出于安全考慮,由于普通用戶也可以查看passwd文件,所以直接顯示密碼很不安全,所以這文件已密碼項用“X”取代,而真正的密碼存放著/etc/shadow文件中。 當然,我們也可以讓它顯示密碼,而帶來的結果就是/etc/shadow文件消失。
可以使用命令:pwunconv : passwd unconvert
使passwd文件中的密碼不轉換成x,而且shadow文件會消失
恢復命令 : pwconv
2、shadow文件格式
-
登錄用名
-
用戶密碼:一般用sha512加密
-
從1970年1月1日起到密碼最近一次被更改的時間
-
密碼再過幾天可以被變更(0表示隨時可被變更) minimum password age
#口令最短使用時間
-
密碼再過幾天必須被變更(99999表示永不過期)maximum password age
#口令最長使用時間,若時間小于最短使用時間,則表示禁止用戶修改口令
-
密碼過期前幾天系統提醒用戶(默認為一周) password warning period
-
密碼過期幾天后帳號會被鎖定 password warning period
-
從1970年1月1日算起,多少天后帳號失效。account expiration date
密碼時間表,如圖所示:
命令:chage -d0 USERNAME,,使用戶的最近一次被更改時間為0,迫使用戶下次登錄必須改口令
passwd -e USERNAME :迫使用戶下次登錄必須改口令
查看用戶的密碼信息可以直接查看shadow文件也可以使用getent命令
管理員可以使用命令鎖定用戶:usermod -L USERNAME
可以看到用戶的密碼前多了一個!,這就代表著禁止登陸。
解鎖用戶:usermod -U USERNAME,
解鎖用戶,將用戶/etc/shadow 密碼欄的! 拿掉
注意:centos早期版本可以連續執行兩次,使用戶空密碼,但在centos6,7中禁止連續執行解除用戶密碼。
可以看到用戶的第二列密碼項,是通過加密計算過的,加密算法通常有以下三類:對稱加密,非對稱加密和單項加密。
密碼加密
加密機制:
加密:明文–> 密文
解密:密文–> 明文
單向加密:哈希算法,原文不同,密文必不同
相同算法定長輸出,獲得密文不可逆推出原始數據
雪崩效應:初始條件的微小改變,引起結果的巨大改變
-
md5: message digest, 128bits
-
sha1: secure hash algorithm, 160bits
-
sha224: 224bits
-
sha256: 256bits
-
sha384: 384bits
-
sha512: 512bits
更改加密算法authconfig–passalgo=sha256 –update
(修改用戶以后新增或更改密碼的加密算法)
出于安全考慮密碼不僅經過了加密算法加密,而且還在其中加入了salt,這樣即使兩個用戶的密碼一樣,通過加入salt的加密,顯示也不會一樣。
我們平時使用密碼時,也需要一些密碼的安全策略,盡量使用復雜的密碼!
密碼的復雜性策略
-
使用數字、大寫字母、小寫字母及特殊字符中至少3種
-
足夠長
-
使用隨機密碼
-
定期更換;不要使用最近曾經使用過的密碼
3、group文件格式
-
群組名稱:就是群組名稱
-
群組密碼:通常不需要設定,密碼是被記錄在/etc/gshadow
-
GID:就是群組的ID
-
以當前組為附加組的用戶列表(分隔符為逗號)
命令:groups,id 查看用戶的組
更改用戶組成員關系后,必須從新登陸才能識別
從組中刪除用戶:groupmems -d USERNAME -g GROUP
4、gshdow文件格式
-
群組名稱:就是群組名稱
-
群組密碼:
-
組管理員列表:組管理員的列表,更改組密碼和成員
-
以當前組為附加組的用戶列表:(分隔符為逗號)
用戶有密碼,用戶組也有密碼,但是用戶組的密碼和用戶的密碼用途有所不同。如若新用戶知道某個用戶組的密碼,那么用戶完全可以自己通過組密碼臨時加入用戶組,執行一些權限。(較為危險?。?/p>
命令:newgrp :臨時切換主組(臨時生效)
用戶若知道組口令,則可以主動加入群組
用戶和組的配置文件,已經大致的說了一下。我們可以通過修改配置文件來實現某些目的,然而有時直接修改配置文件,往往會有一些失誤的操作。所以,直接通過文本編輯器修改配置文件較為危險。那么我們可以通過一些命令來達到修改文件的目的。
文件操作命令
-
vipw和vigr
-
pwck和grpck
vipw = vi /etc/passwd (可以檢查格式是否正確,較安全)
vigr = vi /etc/group
pwck passwd chcek (檢查passwd)
grpck group check ( 檢查group)
用戶和組管理命令
用戶管理命令
useradd
usermod
userdel
組帳號維護命令
groupadd
groupmod
groupdel
用戶管理命令:
用戶創建:useradd
語法: useradd[options] LOGIN
選項:
-
-u UID: [UID_MIN, UID_MAX]定義在/etc/login.defs
-
-o 配合-u 選項,不檢查UID的唯一性
-
-g GID:指明用戶所屬基本組,可為組名,也可以GID
-
-c "COMMENT":用戶的注釋信息
-
-d HOME_DIR:以指定的路徑(不存在)為家目錄
-
-s SHELL: 指明用戶的默認shell程序
可用列表在/etc/shells文件中
-
-G GROUP1[,GROUP2,…]:為用戶指明附加組,組必須事先存在
-
-N 不創建私用組做主組,使用users組做主組
-
-r: 創建系統用戶CentOS 6: ID<500,CentOS 7: ID<1000
一條命令命令就可以創建用戶,而且文件的配置文件齊全,這是因為有默認值的存在,
默認值設定:/etc/default/useradd文件中
顯示默認設置:
-
useradd-D
更改默認設置:
-
useradd–D -s SHELL
新建用戶的相關文件和命令
-
/etc/default/useradd : 默認值的設定
-
/etc/skel/* : 用戶家目錄創建時拷貝的模板
-
/etc/login.defs : 定義新建用戶的一些信息
命令:newusers
-
newusers passwd格式文件 : 批量創建用戶
1、創建一個文件,格式為/etc/passwd文件的格式
2、newusers FILENAME
-
chpasswd 批量修改用戶口令
1、創建一個文件,格式為 username:passwd
2、cat FILENAME | chpasswd
例:
1、創建用戶gentoo,附加組為bin和root,默認shell為/bin/csh,注釋信息為"Gentoo Distribution"
[root@localhost ~]# useradd -G bin,root -s /bin/csh -c "Gentoo Distribution" gentoo
2、創建testuser uid 1234,主組:bin,輔助組:root,ftp,shell:/bin/csh home:/testdir/testuser
[root@localhost ~]# useradd -u 1234 -g bin -G root,ftp -s /bin/csh -d /testdir/testuser testuser
[root@localhost testuser]# echo "centos" | passwd –stdin testuser
[root@localhost testuser]# cp -r /etc/skel/.[^.]* /testdir/testuser/
用戶屬性修改: usermod
語法:usermod[OPTION] login
選項:
-
-u UID: 新UID
-
-g GID: 新基本組
-
-G GROUP1[,GROUP2,…[,GROUPN]]]:新附加組,原來的附加組將會被覆蓋;若保留原有,則要同時使用-a選項,表示append;
-
-s SHELL:新的默認SHELL;
-
-c 'COMMENT':新的注釋信息;
-
-d HOME: 新家目錄不會自動創建,原家目錄中的文件不會同時移動至新的家目錄;若要創建新家目錄并移動原家數據,同時使用-m選項
-
-l login_name: 新的名字;
-
-L: lock指定用戶,在/etc/shadow 密碼欄的增加!
-
-U: unlock指定用戶,將/etc/shadow 密碼欄的! 拿掉
-
-e YYYY-MM-DD: 指明用戶賬號過期日期;
-
-f INACTIVE: 設定非活動期限;
例:
3、修改testuser uid:4321,主組:root,輔助組:nobody, loginname :test,home:/home/test 家數據遷移
[root@localhost ~]# usermod -u 4321 -g root -G nobody -l test -d /home/test -m testuser
刪除用戶:userdel
語法:userdel[OPTION]… login
選項:-r: 刪除用戶家目錄;
可以看到用戶及用用戶之前的家目錄被刪除。
在平時的學習中,經常需要切換用戶來實現一些操作,如果退出再登陸用戶,有些麻煩。我們可以使用su命令,來切換用戶執行命令。
su命令:切換用戶或以其他用戶身份執行命令
語法:su [options…] [-] [user [args…]]
選項: -l –login
su-l UserName 相當于 su – UserName
切換用戶的方式:
su UserName:非登錄式切換,即不會讀取目標用戶的配置文件,不改變當前工作目錄
su – UserName:登錄式切換,會讀取目標用戶的配置文件,切換至家目錄,完全切換
root su至其他用戶無須密碼;非root用戶切換時需要密碼
有時切換用戶只是為了執行一條命令,那么這樣來回的切換也略顯得有些麻煩,那么我們可以使用su命令的其他選項。
換個身份執行命令:
su [-] UserName -c 'COMMAND'
執行完命令后 可以發現還是當前用戶
前面我們也提到了保存密碼的文件,/etc/passwd和/etc/shadow文件,每次修改命令我們完全沒有必要去修改文件那么麻煩,下面我們就來說一下專門用來更改用戶密碼的命令–passwd
設置密碼 passwd
語法:passwd[OPTIONS] UserName: 修改指定用戶的密碼,僅root用戶權限
passwd: 修改自己的密碼;
常用選項:
-
-l:鎖定指定用戶
-
-u:解鎖指定用戶
-
-e:強制用戶下次登錄修改密碼
-
-n mindays: 指定最短使用期限
-
-x maxdays:最大使用期限
-
-w warndays:提前多少天開始警告
-
-iinactivedays:非活動期限;
-
–stdin:從標準輸入接收用戶密碼;
-
echo "PASSWORD" | passwd–stdinUSERNAME
前面也提到了 passwd -e USERNAME命令,強制是用戶更改密碼,還有一種實現的方法也有提到,就是
chage -d0 USERNAME命令,而chage命令就是用來修改用戶的密碼策略的命令。
修改用戶密碼策略 chage
語法:chage[OPTION]… LOGIN
選項:
-
-d LAST_DAY
-
-E, –expiredateEXPIRE_DATE
-
-I, –inactive INACTIVE
-
-m, –mindaysMIN_DAYS
-
-M, –maxdaysMAX_DAYS
-
-W, –warndaysWARN_DAYS
-
–l,顯示密碼策略
下一次登錄強制重設密碼
chage -d0 USERNAME #強制使用戶下次登陸修改密碼
chage -m 0 –M 42 –W 14 –I 7 USERNAME #設置用戶的最小使用天數為0,最大使用天數為42天,提前14 天提醒密碼即將到期,密碼過期后7天內可以修改,超過7天沒有 修改密碼則鎖定賬號。
chage -E 2016-09-10 USERNAME #用戶到指定日期鎖定。
上文我們提到/etc/shadow文件的格式,(不記得的話向上翻頁查看),而chage命令就可以更改用戶密碼的使用策略。
創建組:groupadd
語法:groupadd[OPTION]… group_name
選項:
-g GID: 指明GID號;[GID_MIN, GID_MAX]
-r: 創建系統組;
CentOS 6: ID<500
CentOS 7: ID<1000
組屬性修改:groupmod
語法:groupmod [OPTION]… group
選項:
-n group_name: 新名字
-g GID: 新的GID;
組刪除:groupdel
語法:groupdel GROUP
groupadd,groumod,groupdel的使用方法和useradd,usermod,userdel的使用方法非常相似,只是一個是針對于組一個是針對于用戶而已。我們學會了如何使用useradd命令,自己就會了groupadd命令。
組密碼:gpasswd
語法:gpasswd [OPTION] GROUP
選項:
-a user: 將user添加至指定組中;
-d user: 從指定組中移除用戶user
-A user1,user2,…: 設置有管理權限的用戶列表
newgrp命令:臨時切換基本組;
如果用戶本不屬于此組,則需要組密碼
groups [OPTION].[USERNAME]… 查看用戶所屬組列表
gpasswd命令的使用方法和passwd的使用方法略有不同,gpasswd不僅可以更改組密碼,還可以增刪組成員。
而newgrp命令可以讓用戶暫時的加入某個組,并使這個組為主組,以方便一些操作。
知道了gpasswd命令可以增刪命令,還有一個命令比gpasswd的功能還要強大,它可以更改查看組的成員
更改和查看組成員:groupmems
語法:groupmems[options] [action]
options:
-
-g, –group groupname更改為指定組(只有root)
Actions:
-
-a, –add username 指定用戶加入組
-
-d, –delete username 從組中刪除用戶
-
-p, –purge 從組中清除所有成員
-
-l, –list 顯示組成員列表
原創文章,作者:Groot,如若轉載,請注明出處:http://www.www58058.com/28202