歡迎您光臨本站 註冊首頁

Linux 用戶管理工具介紹

←手機掃碼閱讀     火星人 @ 2014-03-29 , reply:0

Linux 用戶管理工具介紹
本文主要介紹Linux系統的用戶和用戶組的查詢、添加、修改及刪除等管理工具;

Linux是一個多用戶的操作系統,她有完美的用戶管理工具,這些工具包括用戶的查詢、添加、修改,以及用戶之間相互切換的工具等;通過這些工具,我們能安全、輕鬆的完成用戶管理;

一、與用戶管理相關的配置文件
1、/etc/passwd 和/etc/groups

在linux系統下,對用戶和用戶組進行添加、修改、刪除等操作的最終目的都是通過修改用戶和組的配置文件來實現的,這些主要配置文件主要有:/etc/passwd、/etc/shadows、/etc/groups、/etc/gshadow、/etc/skel 目錄等;

用戶和用戶組的配置文件,是系統管理員最應該了解和掌握的系統基礎之一,從另一方面來說,了解這些文件也是系統安全管理的重要組成部分;

1、/etc/passwd 用戶帳號密碼文件

[root@jekay /]# cat /etc/passwd

登陸名 口令 UID GID 用戶全稱和描述 用戶主目錄 用戶登陸的shell環境

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

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

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

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

sync:x:5:0:sync:/sbin:/bin/sync

……

在/etc/passwd 中,每一行都表示的是一個用戶的信息;一行有7個段位;每個段位用:號分割,如上:

說明:

UID是用戶的ID值,是確認用戶許可權的標識,在系統中每個用戶的UID的值是唯一的,更確切的說每個用戶都要對應一個唯一的UID ,系統管理員應該確保這一規則。系統用戶的UID的值從0開始,是一個正整數,至於最大值可以在/etc/login.defs 可以查到,一般Linux發行版約定為60000; 在Linux 中,root的UID是0,擁有系統最高許可權;把幾個用戶設置為同樣的UID會造成系統安全的隱患,尤其是設置成root的 UID號0;

Linux系統中的用戶角色:

用戶在系統中是分角色的,在Linux 系統中,由於角色不同,許可權和所完成的任務也不同;值得注意的是用戶的角色是通過UID和識別的,特別是UID;在系統管理中,系統管理員一定要堅守UID 唯一的特性;

root 用戶:系統唯一,是真實的,可以登錄系統,可以操作系統任何文件和命令,擁有最高許可權;

虛擬用戶:這類用戶也被稱之為偽用戶或假用戶,與真實用戶區分開來,這類用戶不具有登錄系統的能力,但卻是系統運行不可缺少的用戶,比如bin、daemon、adm、ftp、mail等;這類用戶都系統自身擁有的,而非後來添加的,當然我們也可以添加虛擬用戶;

普通用戶:這類用戶能登錄系統,但只能操作自己家目錄的內容;許可權有限;這類用戶都是系統管理員自行添加的;



/etc/login.defs是設置用戶帳號限制的文件,在這裡我們可配置密碼的最大過期天數,密碼的最大長度約束等內容;

多數發行版本,添加新用戶時的UID從500開始的,GID也是從500開始;500內的為系統預留;



2、/etc/shadows 用戶帳號的加密文件

[root@jekay /]# cat /etc/shadow

root:$1$MebjzxXM$0hVmQ6MMDB5ZVVAGuUG7G1:13599:0:99999:7:::

bin:*:13599:0:99999:7:::

daemon:*:13599:0:99999:7:::

adm:*:13599:0:99999:7:::

lp:*:13599:0:99999:7:::

sync:*:13599:0:99999:7:::

……

/etc/shadow 文件的內容包括9個段位,每個段位之間用:號分割;

第一欄位: 用戶名(也被稱為登錄名),在/etc/shadow中,用戶名和/etc/passwd 是相同的,這樣就把passwd 和shadow中用的用戶記錄聯繫在一起;這個欄位是非空的;
第二欄位:密碼(已被加密),如果是有些用戶在這段是x,表示這個用戶不能登錄到系統;這個欄位是非空的;
第三欄位:上次修改口令的時間;這個時間是從1970年01月01日算起到最近一次修改口令的時間間隔(天數),您可以通過passwd 來修改用戶的密碼,然後查看/etc/shadow中此欄位的變化;
第四欄位:兩次修改口令間隔最少的天數;如果設置為0,則禁用此功能;也就是說用戶必須經過多少天才能修改其口令;此項功能用處不是太大;默認值是通過/etc/login.defs文件定義中獲取,PASS_MIN_DAYS 中有定義;
第五欄位:兩次修改口令間隔最多的天數;這個能增強管理員管理用戶口令的時效性,應該說在增強了系統的安全性;如果是系統默認值,是在添加用戶時由/etc/login.defs文件定義中獲取,在PASS_MAX_DAYS 中定義;
第六欄位:提前多少天警告用戶口令將過期;當用戶登錄系統后,系統登錄程序提醒用戶口令將要作廢;如果是系統默認值,是在添加用戶時由/etc/login.defs文件定義中獲取,在PASS_WARN_AGE 中定義;
第七欄位:在口令過期之後多少天禁用此用戶;此欄位表示用戶口令作廢多少天後,系統會禁用此用戶,也就是說系統會不能再讓此用戶登錄,也不會提示用戶過期,是完全禁用;
第八欄位:用戶過期日期;此欄位指定了用戶作廢的天數(從1970年的1月1日開始的天數),如果這個欄位的值為空,帳號永久可用;
第九欄位:保留欄位;

/etc/shadow文件是/etc/passwd 的投影文件,這個文件並不由/etc/passwd 而產生的,這兩個文件是應該是對應互補的;shadow內容包括用戶及被加密的密碼以及其它/etc/passwd 不能包括的信息,比如用戶的有效期限等;這個文件只有root許可權可以讀取和操作,許可權如下:

-r-------- 1 root root 740 Mar 27 17:03 /etc/shadow



3、/etc/groups 用戶組帳號文件

具有某種共同特徵的用戶集合起來就是用戶組(Group)。用戶組(Group)配置文件主要有 /etc/group和/etc/gshadow,其中/etc/gshadow是/etc/group的加密信息文件;

/etc/group文件相對來說比較簡單,通過這個配置文件,我們可以清楚地看到系統中用戶組,以及用戶屬於哪個組,某個組中的用戶成員有誰等;



Linux系統下用戶組分為2種,用戶私有組和公有組;

私用組:只包含一個用戶,創建用戶時自動創建一個和用戶同名的組

公有組:可以包含多個用戶

當一個用戶屬於多個用戶組時,某個用戶的許可權只能是當前所屬組的許可權,而不能是多個組許可權的累加,這與windows是不一樣的;

不要隨便把普通用戶加入到root組;

[root@jekay /]# cat /etc/group

組名 群組密碼 GID 組中用戶列表

root:x:0:root

bin:x:1:root,bin,daemon

daemon:x:2:root,bin,daemon

sys:x:3:root,bin,adm

adm:x:4:root,adm,daemon

tty:x:5:

……

在/etc/group 中的每條記錄分四個欄位,中間使用:隔開

GID和UID類似,是一個正整數或0,是用戶組的ID值,GID從0開始, 0被系統賦予root用戶組;系統會預留一些較靠前的GID給系統虛擬用戶組之用;多數linux發行版本預留了500,也就是說新用戶組的GID從500開始;查看 /etc/login.defs 中的 GID_MIN 和GID_MAX 值,可以知道GID的最大設置值;



4、/etc/gshadow 用戶組帳號的加密文件

[root@jekay /]# cat /etc/gshadow

用戶組名 用戶組密碼 用戶組的管理者 組成員列表

root:::root

bin:::root,bin,daemon

daemon:::root,bin,daemon

sys:::root,bin,adm

adm:::root,adm,daemon

tty:::

……

/etc/gshadow是/etc/group的加密文件;

用戶組密碼,用於結構比較複雜的許可權模型;

5、/etc/skel 目錄 用來初始化用戶的主目錄

[root@jekay /]# ls -al /etc/skel

total 20

drwxr-xr-x 2 root root 4096 Mar 27 16:59 .

drwxr-xr-x 32 root root 4096 Mar 27 17:04 ..

-rw-r--r-- 1 root root 24 Feb 11 2003 .bash_logout

-rw-r--r-- 1 root root 191 Feb 11 2003 .bash_profile

-rw-r--r-- 1 root root 124 Feb 11 2003 .bashrc

目錄中存放有與用戶相關的配置文件。一般來說,每個用戶都有自己的主目錄,用戶

成功登錄后就處於自己的主目錄下。

當為新用戶創建主目錄時,系統會在新用戶的主目錄下建立一份/etc/skel目錄下所有文件的拷貝,用來初始化用戶的主目錄。

2、超級許可權控制sudo 的配置文件 /etc/sudoers

root超級用戶是系統最高許可權的擁有者;幾乎無所不能,多數的系統設置和許可權設置對root帳號來說是無用的;所以root帳號許可權管理不善就會造成系統安全的隱患;

在對系統操作時盡量避免使用root登陸,也應該盡量避免直接使用root帳號對系統進行配置和操作;但有時普通用戶可能需要root許可權來完成必要的系統管理工作,我們可以使用su和sudo來實現;

用戶帳號類型:

超級用戶:在Linux操作系統中,root的許可權是最高的,也被稱為超級許可權的擁有者。普通用戶無法執行的操作,root用戶都能完成,所以也被稱之為超級管理用戶。在系統中,每個文件、目錄和進程,都歸屬於某一個用戶,沒有用戶許可其它普通用戶是無法操作的,但對root除外。root用戶的特權性還表現在root可以超越任何用戶和用戶組來對文件或目錄進行讀取、修改或刪除(在系統正常的許可範圍內);對可執行程序的執行、終止;對硬體設備的添加、創建和移除等;也可以對文件和目錄進行屬主和許可權進行修改,以適合系統管理的需要(因為root是系統中許可權最高的特權用戶);UID為0;

普通用戶和偽裝用戶:與超級用戶相對的就是普通用戶和虛擬(也被稱為偽裝用戶),普通和偽裝用戶都是受限用戶;但為了完成特定的任務,普通用戶和偽裝用戶也是必須的;Linux是一個多用戶、多任務的操作系統,多用戶主要體現在用戶的角色的多樣性,不同的用戶所分配的許可權也不同;這也是Linux系統比Windows系統更為安全的本質所在;

但值得注意的是超級用戶的操作是在系統最高許可範圍內的操作;有些操作就是具有超級許可權的root也無法完成;如:/proc目錄、加了防寫的文件等;

[root@jekay /]# ls -ld /proc

dr-xr-xr-x 47 root root 0 Mar 27 12:03 /proc



[root@jekay tmp]# chattr +i file

[root@jekay tmp]# rm -f file

rm: cannot remove `file': Operation not permitted



獲取超級許可權的過程,就是切換普通用戶身份到超級用戶身份的過程;這個過程主要是通過su和sudo 來解決;

使用 su 命令臨時切換用戶身份

su命令就是切換用戶的工具;

su [OPTION選項參數] [用戶]
-, -l, --login 登錄並改變到所切換的用戶環境;
-c, --commmand=COMMAND 執行一個命令,然後退出所切換到的用戶環境;



su 在不加任何參數,默認為切換到root用戶,不改變shell環境;

su 加參數 - ,表示默認切換到root用戶,並且改變到root用戶的環境;

su 的確為管理帶來方便,通過切換到root下,能完成所有系統管理工具,只要把root的密碼交給任何一個普通用戶,他都能切換到root來完成所有的系統管理工作;但如果登陸的用戶比較多,而多個用戶都需要使用root許可權,這時就可能會造成安全隱患,而且由於切換的過程是打開root的shell環境,很多情況下也會造成root許可權外瀉;

sudo工具

由於su 對切換到超級許可權用戶root后,許可權的無限制性,所以su並不能擔任多個管理員所管理的系統。通過sudo,我們能把某些超級許可權有針對性的下放,並且不需要普通用戶知道root密碼,所以sudo 相對於許可權無限制性的su來說,還是比較安全的,所以sudo 也能被稱為受限制的su ;另外sudo 是需要授權許可的,所以也被稱為授權許可的su;

sudo 執行命令的流程是當前用戶切換到root(或其它指定切換到的用戶),然後以root(或其它指定的切換到的用戶)身份執行命令,執行完成後,直接退回到當前用戶;而這些的前提是要通過sudo的配置文件/etc/sudoers來進行授權;

sudo的配置文件是/etc/sudoers ;可通過命令visudo直接進行編輯;

通過sudo -l 來查看哪些命令是可以執行或禁止的;

/etc/sudoers 文件中每行算一個規則,前面帶有#號可以當作是說明的內容,並不執行;如果規則很長,一行列不下時,可以用\號來續行,這樣看來一個規則也可以擁有多個行;

/etc/sudoers 的規則可分為兩類;一類是別名定義,另一類是授權規則;別名定義並不是必須的,但授權規則是必須的;

默認/etc/sudoers配置文件

[root@jekay]# cat /etc/sudoers

# sudoers file.

# This file MUST be edited with the 'visudo' command as root.

# See the sudoers man page for the details on how to write a sudoers file.

# Host alias specification

# User alias specification

# Cmnd alias specification

# Defaults specification

# User privilege specification

root ALL=(ALL) ALL

# Uncomment to allow people in group wheel to run all commands

# %wheel ALL=(ALL) ALL

# Same thing without a password

# %wheel ALL=(ALL) NOPASSWD: ALL

# Samples

# %users ALL=/sbin/mount /cdrom,/sbin/umount /cdrom

# %users localhost=/sbin/shutdown -h now



別名規則定義格式如下:

Alias_Type NAME = item1, item2, ...

或Alias_Type NAME = item1, item2, item3 : NAME = item4, item5

別名類型(Alias_Type):別名類型包括如下四種

Host_Alias 定義主機別名;項目可以是主機名、可以是單個ip(整段ip地址也可以),也可以是網路掩碼;

Host_Alias BE01=localhost,bt05,tt04,10.0.0.4,255.255.255.0,192.168.1.0/24 註:定義主機別名HT01,通過=號列出成員

User_Alias 用戶別名,別名成員可以是用戶,用戶組(前面要加%號)

User_Alias SYSAD=jekay,linux,lt,benet:NETAD=jekay:WEBMASTER=admin

Runas_Alias 用來定義runas別名,這個別名指定的是「目的用戶」,即sudo 允許切換至的用戶;

Runas_Alias OP = root, operator

Cmnd_Alias 定義命令別名;

Cmnd_Alias DISKMAG=/sbin/fdisk,/sbin/parted
Cmnd_Alias NETMAG=/sbin/ifconfig,/etc/init.d/network
Cmnd_Alias KILL = /usr/bin/kill



NAME 就是別名了,NMAE的命名是包含大寫字母、下劃線以及數字,但必須以一個大寫字母開頭;

item 按中文翻譯是項目,在這裡我們可以譯成成員,如果一個別名下有多個成員,成員與成員之間,通過半形,號分隔;成員在必須是有效並事實存在的。

item成員受別名類型 Host_Alias、User_Alias、Runas_Alias、Cmnd_Alias 制約,定義什麼類型的別名,就要有什麼類型的成員相配。我們用Host_Alias定義主機別名時,成員必須是與主機相關相關聯,比如是主機名(包括遠程登錄的主機名)、ip地址(單個或整段)、掩碼等;當用戶登錄時,可以通過w命令來查看登錄用戶主機信息;用User_Alias和Runas_Alias定義時,必須要用系統用戶做為成員;用Cmnd_Alias 定義執行命令的別名時,必須是系統存在的文件,文件名可以用通配符表示,配置Cmnd_Alias時命令需要絕對路徑;其中 Runas_Alias 和User_Alias 有點相似,但與User_Alias 絕對不是同一個概念,Runas_Alias 定義的是某個系統用戶可以sudo 切換身份到Runas_Alias 下的成員;我們在授權規則中以實例進行解說;

別名規則是每行算一個規則,如果一個別名規則一行容不下時,可以通過\來續行;同一類型別名的定義,一次也可以定義幾個別名,他們中間用:號分隔,





/etc/sudoers中的授權規則

授權規則是分配許可權的執行規則,我們前面所講到的定義別名主要是為了更方便的授權引用別名;如果系統中只有幾個用戶,其實下放許可權比較有限的話,可以不用定義別名,而是針對系統用戶直接直接授權,所以在授權規則中別名並不是必須的;

授權用戶 主機=命令動作

這三個要素缺一不可,但在動作之前也可以指定切換到特定用戶下,在這裡指定切換的用戶要用( )號括起來,如果不需要密碼直接運行命令的,應該加NOPASSWD:參數,但這些可以省略;

授權用戶 主機=[(切換到哪些用戶或用戶組)] [是否需要密碼驗證] 命令1,[(切換到哪些用戶或用戶組)] [是否需要密碼驗證] [命令2],[(切換到哪些用戶或用戶組)] [是否需要密碼驗證] [命令3]......

註解:

凡是[ ]中的內容,是可以省略;命令與命令之間用,號分隔;可以使用NOPASSWD參數,就不要在運行命令時提示密碼輸入;

舉例:

jekay ALL=(root) /bin/chown,/bin/chmod 執行時會提示輸入jekay的密碼

jekay ALL=(root) NOPASSWD: /bin/chown,/bin/chmod 就不需要密碼



jekay ALL=(root) NOPASSWD: /bin/more

切換到jekay用戶下使用more /etc/shadow就可以了,不會提示輸入密碼



User_Alias SYSUSER=jekay

SYSUSER ALL=(root) /sbin/fdisk

使用用戶別名來完成;



sudo [參數選項] 命令
-l 列出用戶在主機上可用的和被禁止的命令;一般配置好/etc/sudoers后,要用這個命令來查看和測試是不是配置正確的;
-v 驗證用戶的時間戳;如果用戶運行sudo 后,輸入用戶的密碼后,在短時間內可以不用輸入口令來直接進行sudo 操作;用-v 可以跟蹤最新的時間戳;
-u 指定以以某個用戶執行特定操作;
-k 刪除時間戳,下一個sudo 命令要求用求提供密碼;



3、添加用戶規則文件 /etc/login.defs 和 /etc/default/useradd

/etc/login.defs 配置文件

/etc/login.defs 文件是當創建用戶時的一些規劃,比如創建用戶時,是否需要家目錄,UID和GID的範圍;用戶的期限等等,這個文件是可以通過root來定義的;

/etc/logins.defs 文件內容;

# *REQUIRED*
# Directory where mailboxes reside, _or_ name of file, relative to the
# home directory. If you _do_ define both, MAIL_DIR takes precedence.
# QMAIL_DIR is for Qmail
#
#QMAIL_DIR Maildir
MAIL_DIR /var/spool/mail 註:創建用戶時,要在目錄/var/spool/mail中創建一個用戶mail文件;
#MAIL_FILE .mail
# Password aging controls:
#
# PASS_MAX_DAYS Maximum number of days a password may be used.
# PASS_MIN_DAYS Minimum number of days allowed between password changes.
# PASS_MIN_LEN Minimum acceptable password length.
# PASS_WARN_AGE Number of days warning given before a password expires.
#
PASS_MAX_DAYS 99999 註:用戶的密碼不過期最多的天數;
PASS_MIN_DAYS 0 註:密碼修改之間最小的天數;
PASS_MIN_LEN 5 註:密碼最小長度;
PASS_WARN_AGE 7 註:
#
# Min/max values for automatic uid selection in useradd
#
UID_MIN 500 註:最小UID為500 ,也就是說添加用戶時,UID 是從500開始的;
UID_MAX 60000 註:最大UID為60000;
#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN 500 註:GID 是從500開始;
GID_MAX 60000
#
# If defined, this command is run when removing a user.
# It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument).
#
#USERDEL_CMD /usr/sbin/userdel_local
#
# If useradd should create home directories for users by default
# On RH systems, we do. This option is ORed with the -m flag on
# useradd command line.
#
CREATE_HOME yes 註:是否創用戶家目錄,要求創建;



/etc/default/useradd 文件

通過useradd 添加用戶時的規則文件;

# useradd defaults file
GROUP=100
HOME=/home 註:把用戶的家目錄建在/home中;
INACTIVE=-1 註:是否啟用帳號過期停權,-1表示不啟用;
EXPIRE= 註:帳號終止日期,不設置表示不啟用;
SHELL=/bin/bash 註:所用SHELL的類型;
SKEL=/etc/skel 註: 默認添加用戶的目錄默認文件存放位置;也就是說,當我們用adduser添加用戶時,用戶家目錄下的文件,都是從這個目錄中複製過去的;



二、用戶相關工具命令;

1、添加用戶工具有useradd和adduser ,這兩個工具所達到的目的都是一樣的;

2、通過修改用戶配置文件/etc/passwd和/etc/groups的辦法來實現;

3、還有圖形下的工具;

1、useradd 工具

Useradd添加用戶時,先讀取/etc/login.defs和/etc/default/useradd中所定義的規則添加用戶;並向/etc/passwd和/etc/groups文件添加用戶和用戶組記錄;當然/etc/passwd和/etc/groups的加密文件也同步生成記錄;同時發生的還有系統會自動在/etc/add/default中所約定的目錄中建用戶的主目錄,並複製/etc/skel中的文件(包括隱藏文件)到新用戶的主目錄中;

useradd 的語法:

(1) 對/etc/default/useradd進行修改,設置添加的新用戶的默認設置;

useradd -D [-g group] [-b base] [-s shell]
[-f inactive] [-e expire ]



-D選項出現時,顯示/etc/default/useradd配置文件中設置的useradd的設置;

-b default_home 註:定義用戶所屬目錄的前一個目錄。用戶名稱會附加在default_home後面用來建立新用戶的目錄。當然使用-d后則此選項無效。
-e default_expire_date 註:用戶帳號停止日期。
-f default_inactive 註:帳號過期幾日後停權。
-g default_group 註:新帳號起始用戶組名或ID。用戶組名須為現有存在的名稱。用戶組ID也須為現有存在的用戶組。
-s default_shell 註:用戶登入后使用的shell名稱。往後新加入的帳號都將使用此shell.
如不指定任何參數,useradd顯示目前預設的值。



(2)useradd 添加用戶;

useradd [-u uid [-o]] [-g group] [-G group,...]
[-d home] [-s shell] [-c comment] [-m [-k template]]
[-f inactive] [-e expire ] [-p passwd] name

useradd 可使用的選項為
-c comment 註:新帳號 password 檔的說明欄 。
-d home_dir 註:新帳號每次登入時所使用的home_dir。預設值為default_home內login名稱,併當成登入時目錄名稱。
-e expire_date 註:帳號終止日期。日期的指定格式為MM/DD/YY。
-f inactive_days 註:帳號過期幾日後永久停權。當值為0時帳號則立刻被停權。而當值為-1時則關閉此功能,預設值為-1
-g initial_group 註:group名稱或以數字來做為用戶登入起始用戶組(group)。用戶組名須為現有存在的名稱。用戶組數字也須為現有存在的用戶組。預設的用戶組數字為1。
-G group,[...]
註:定義此用戶為此一堆groups的成員。每個用戶組使用","區格開來,不可以夾雜空白字元。用戶組名同-g選項的限制。定義值為用戶的起始用戶組。。
-m 註:用戶目錄如不存在則自動建立。如使用-k選項skeleton_dir內的檔案將複製至用戶目錄下。然而在/etc/skel目錄下的檔案也會複製過去取代。任何在skeleton_dir or /etc/skel的目錄也相同會在用戶目錄下一一建立。The-k同-m不建立目錄以及不複製任何檔案為預設值。
-M 不建立用戶目錄,即使/etc/login.defs系統檔設定要建立用戶目錄。
-n 預設值用戶用戶組與用戶名稱會相同。此選項將取消此預設值。
-r 此參數是用來建立系統帳號。系統帳號的UID會比定義在系統檔上/etc/login.defs.的UID_MIN來的小。注意useradd此用法所建立的帳號不會建立用戶目錄,也不會在乎紀錄在/etc/login.defs.的定義值。如果你想要有用戶目錄須額外指定-m參數來建立系統帳號。
-s shell 註:用戶登入后使用的shell名稱。預設為不填寫,這樣系統會幫你指定預設的登入shell。
-u uid uid用戶的ID值。必須為唯一的ID值,除非用-o選項。數字不可為負值。預設為以/etc/login.defs中的UID_MIN的值為準,0到UID_MIN的值之間,為系統保留的UID ;



2、userdel 用法;

userdel 的語法格式:

userdel [-r] 名稱

userdel很簡單,只有一個參數可選 -r ;如果加參數-r ,表示在刪除用戶的同時,一併把用戶的家目錄及本地郵件存儲的目錄或文件也一同刪除;

userdel 參數 用戶名

警告: 請不要輕易用-r參數;他會刪除用戶的同時刪除用戶所有的文件和目錄;如果用戶目錄下有重要的文件,在刪除前請備份;



3、usermod 用戶修改工具(極其強大)

usermod 不僅能改用戶的SHELL類型,所歸屬的用戶組,也能改用戶密碼的有效期,還能改登錄名。

usermod [-u uid [-o]] [-g group] [-G group,...]
[-d 主目錄 [-m]] [-s shell] [-c 註釋] [-l 新名稱]
[-f 失效日] [-e 過期日] [-p 密碼] [-L|-U] 用戶名
-c comment
更新用戶帳號password檔中的註解欄,一般是使用chfn(1)來修改。
-d home_dir
更新用戶新的登入目錄。如果給定-m選項,用戶舊目錄會搬到新的目錄去,如舊目錄不存在則建個新的。
-e expire_date 加上用戶帳號停止日期。日期格式為MM/DD/YY.
-f inactive_days 帳號過期幾日後永久停權。當值為0時帳號則立刻被停權。而當值為-1時則關閉此功能。預設值為-1。
-g initial_group 更新用戶新的起始登入用戶組。用戶組名須已存在。用戶組ID必須參照既有的的用戶組。用戶組ID預設值為1。
-G group,[...] 定義用戶為一堆groups的成員。每個用戶組使用","區格開來,不可以夾雜空白字元。用戶組名同-g選項的限制。如果用戶現在的用戶組不再此列,則將用戶由該用戶組中移除。
-l login_name 變更用戶login時的名稱為login_name。其它不變。特別是,用戶目錄名應該也會跟著更動成新的登入名。
-s shell 指定新登入shell。如此欄留白,系統將選用系統預設shell。
-u uid用戶ID值。必須為唯一的ID值,除非用-o選項。數字不可為負值。預設為最小不得小於/etc/login.defs中定義的UID_MIN值。0到UID_MIN值之間是傳統上保留給系統帳號使用。用戶目錄樹下所有的檔案目錄其userID會自動改變。放在用戶目錄外的檔案則要自行手動更動。
警告:usermod不允許你改變正在線上的用戶帳號名稱。當usermod用來改變userID,必須確認這名user沒在電腦上執行任何程序。你需手動更改用戶的crontab檔。也需手動更改用戶的at工作檔。採用NISserver須在server上更動相關的NIS設定。



警告: usermod 最好不要用它來改用戶的密碼,因為他在/etc/shadow中顯示的是明口令;修改用戶的口令最好用passwd ;



4、添加用戶組命令groupadd ;

語法格式:

groupadd [-g gid [-o]] [-r] [-f] 組名

-g 後接GID值,除非使用-o參數不然該值必須是唯一,不可相同,數值不可為負,預設值以/etc/login.defs為準;
-r 此參數是用來建立系統帳號的GID會比定義在系統檔文件上/etc/login.defs 的GID_MIN來的小。注意useradd此用法所建立的帳號不會建立使用者目錄,也不會紀錄在/etc/login.defs.的定義值。如果你想要有使用者目錄須額外指定-m參數來建立系統帳號,它會自動幫你選定一個小於的GID_MIN的值,不需要再加上-g參數。
-f This is force flag.新增一個已經存在的用戶組帳號,系統會出現錯誤訊息然後結束groupadd。



5、groupdel的用法;

groupdel 是用來刪除用戶組的;

語法格式:groupdel 用戶組



6、passwd命令;

我們已經學會如何添加用戶了,所以我們還要學習設置或修改用戶的密碼;passwd命令的用法也很多,我們只選如下的幾個參數加以說明;想了解更多,請參考man passwd或passwd --help ;


passwd [OPTION...]

passwd 作為普通用戶和超級許可權用戶都可以運行,但作為普通用戶只能更改自己的用戶密碼,但前提是沒有被root用戶鎖定;如果root用戶運行passwd ,可以設置或修改任何用戶的密碼;

passwd 命令後面不接任何參數或用戶名,則表示修改當前用戶的密碼;

[root@localhost]# passwd 註:沒有加任何用戶,我是用root用戶來執行的passwd 表示修改root用戶的密碼;下面也有提示;
Changing password for user root.
New UNIX password: 註:請輸入新密碼;
Retype new UNIX password: 註:驗證新密碼;
passwd: all authentication tokens updated successfully. 註:修改root密碼成功;



如果新建用戶后,要為新用戶創建密碼,則用 passwd 用戶名 ,注意要以root用戶的許可權來創建;

passwd 幾個比較重要的參數;

[root@localhost]# passwd --help
Usage: passwd [OPTION...]
-k, --keep-tokens keep non-expired authentication tokens
註:保留即將過期的用戶在期滿后能仍能使用;
-d, --delete delete the password for the named account (root only)
註:刪除用戶密碼,僅能以root許可權操作;
-l, --lock lock the named account (root only)
註:鎖住用戶無權更改其密碼,僅能通過root許可權操作;
-u, --unlock unlock the named account (root only)
註:解除鎖定;
-f, --force force operation
註:強制操作;僅root許可權才能操作;
-x, --maximum=DAYS maximum password lifetime (root only)

註:兩次密碼修正的最大天數,後面接數字;僅能root許可權操作;
-n, --minimum=DAYS minimum password lifetime (root only)

註:兩次密碼修改的最小天數,後面接數字,僅能root許可權操作;
-w, --warning=DAYS number of days warning users receives before

註:在距多少天提醒用戶修改密碼;僅能root許可權操作;
password expiration (root only)
-i, --inactive=DAYS number of days after password expiration when an

註:在密碼過期后多少天,用戶被禁掉,僅能以root操作;
account becomes disabled (root only)
-S, --status report password status on the named account (root only)

註:查詢用戶的密碼狀態,僅能root用戶操作;
--stdin read new tokens from stdin (root only)

注意: 當我們清除一個用戶的密碼時,登錄時就無需密碼;這一點要加以注意;



7、chage 修改用戶密碼有效期限的命令;

chage 用語法格式:

chage [-l] [-m 最小天數] [-M 最大天數] [-W 警告] [-I 失效日] [-E 過期日] [-d 最後日] 用戶



8、chfn 修改用戶信息工具;

chfn 這個工具主要是用來改用戶的全名,辦公室地址,電話之類的;用法如下:

chfn [ -f full-name ] [ -o office ] [ -p office-phone ] [ -h home-phone ] [ -u ] [ -v ] [ username ]



[root@localhost]# chfn linux 註:更改用戶linux的信息;
Changing finger information for linux.
Name []: jekay Linux 註:用戶全名jekay Linux ,隨便寫一個就行;
Office []: benet
Office Phone []: 44444444
Home Phone []: 88888888
Finger information changed. 註:更改完成;



9、chsh 改變用戶的SHELL類型;

[root@localhost]# chsh --help
Usage: chsh [ -s shell ] [ --list-shells ] [ --help ] [ --version ] [ username ]

如果chsh 不加任何參數及用戶名的情況下,默認為更改當前操作用戶的SHELL類型;

舉例說明:

[root@localhost]# chsh --list-shells 註:列出當前系統中所有的SHELL;
/bin/sh
/bin/bash
/sbin/nologin 註:這個是不允許用戶登錄系統所用,是極為有用的;您可以通過查看/etc/passwd 中看哪些用戶是nologin;
/bin/ksh
/bin/tcsh
/bin/csh
/bin/zsh
[root@localhost]# chsh -s /bin/ksh linux 註:更改linux所用的shell為ksh ;
Changing shell for linux.
Shell changed. 註:更改完成;





10、gpasswd 設置一個組的群組密碼

格式:gpasswd 參數 用戶名 組名

-a----將一個用戶加入到一個組中

-d----將一個用戶從一個組中刪除掉

-r----取消一個用戶組的群組密碼

-g----修改一個用戶組的gid號

-n----修改一個用戶組的組名 groupmod -n 新組名 老組名

finger 參數 用戶名

id 選項 用戶名



除了直接查看用戶(User)和用戶組(Group)配置文件的辦法除外,我們還有id和finger工具可用,我們一樣通過命令行的操作,來完成對用戶的查詢;id和finger,是兩個各有測重的工具,

id工具更測重用戶、用戶所歸屬的用戶組、UID 和GID 的查看;

finger側重用戶資訊的查詢,比如用戶名(登錄名)、電話、家目錄、登錄SHELL類型、真實姓名、空閑時間等等;

id 命令用法:

[root@localhost /]# id jekay

uid=500(jekay) gid=500(jekay) groups=500(jekay)



finger 的用法:

finger [參數選項] [用戶名]
-l 採用長格式(默認),顯示由-s選項所包含的所有信息,以及主目錄、辦公地址、辦公電話、登錄SHELL、郵件狀態、.plan、.project和.forward;
-m 禁止對用戶真實名字進行匹配;
-p 把.plan和.project文件中的內容省略;
-s 顯示短格式,用戶名(也被稱為登錄名Login)、真實名字(NAME)、在哪個終端登錄(Tty)、寫狀態、空閑時間(Idle)、登錄時間(Login Time)、辦公地點、辦公電話等;



[root@localhost /]# finger jekay

Login: jekay Name: (null)

Directory: /home/jekay Shell: /bin/bash

Never logged in.

No mail.

No Plan.



查看用戶信息還可以通過配置文件去查詢用戶和組的信息;

w、who和users工具,是查詢已登錄當前主機的用戶;另外finger -s 也同樣能查詢;側重點不一樣;

[root@localhost /]# w

22:43:44 up 3:03, 1 user, load average: 0.00, 0.00, 0.00

USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT

root pts/0 192.168.1.104 7:41pm 0.00s 1.93s 0.35s w

[root@localhost /]# who

root pts/0 Mar 27 19:41 (192.168.1.104)

[root@localhost /]# users

rootbeinan pts/4 :0.0 12:06 0.00s 0.21s 0.00s w



w命令功能更加強大,它不但可以顯示有誰登錄到系統,還可以顯示出這些用戶當前正在進行的工作,並且統計數據相對who命令來說更加詳細和科學,可以認為w命令就是who命令的一個增強版。

w命令的顯示項目按以下順序排列:

-----當前時間,系統啟動到現在的時間,登錄用戶的數目,系統在最近1秒、5秒和15秒的平均負載。

然後是每個用戶的各項數據,項目顯示順序如下:

-----登錄帳號、終端名稱、遠程主機名、登錄時間、空閑時間、JCPU、PCPU、當前正在運行進程的命令行。

16、pwcov 註:同步用戶從/etc/passwd 到/etc/shadow

pwck 註:pwck是校驗用戶配置文件/etc/passwd 和/etc/shadow 文件內容是否合法或完整;

pwunconv 註:是pwcov 的立逆向操作,是從/etc/shadow和 /etc/passwd 創建/etc/passwd ,然後會刪除 /etc/shadow 文件;

visudo 來編輯/etc/sudoers來實現;visodo 是編輯 /etc/sudoers 的命令;也可以不用這個命令,直接用vi 來編輯 /etc/sudoers 的效果是一樣的;

通過修改用戶和用戶組配置文件的辦法來添加用戶和組

流程:

1)修改 /etc/passwd ,添加用戶記錄;

jekay:x:508:508::/home/jekay:/bin/bash

然後執行pwconv ,讓/etc/passwd 和/etc/shadow同步,您可以查看 /etc/shadow的內容是否同步;

[root@localhost]# pwconv

2)修改/etc/group,添加私有用戶組

jekay:x:508:

其次,是運行 grpconv 來同步/etc/group 和/etc/gshadow內容,您可以通過查看/etc/gshadow的內容變化確認是不是添加組成功了;

[root@localhost]# grpconv

3)創建用戶的主目錄,並把用戶啟動文件也複製過去;

在/home下創建jekay用戶的主目錄,名稱與用戶名相同,另外我們還需要把/etc/skel 目錄下的.*隱藏文件複製過去;

[root@localhost]# cp -R /etc/skel/ /home/jekay
[root@localhost]# ls -la /home/jekay

4)改變新增用戶家目錄的屬主和許可權;

我們發現新增用戶的主目錄的屬主目前是root ,並且主目錄下的隱藏文件也是root許可權;

[root@localhost]# chown -R jekay.jekay /home/jekay

[root@localhost]# chmod 700 /home/jekay/

5)設置新增用戶的密碼;

passwd 的用法:

passwd 用戶名

6)測試添增用戶是否成功;

[火星人 ] Linux 用戶管理工具介紹已經有759次圍觀

http://coctec.com/docs/linux/show-post-202774.html