Linux用戶管理全集

記得好像是從論壇裏面找到了,今天在電腦上看到了,就貼上來大家看一下
 
Linux用戶管理一

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 中,rootUID0,擁有系統最高權限;把幾個用戶設置爲同樣的UID會造成系統安全的隱患,尤其是設置成root UID0

Linux系統中的用戶角色:

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

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

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

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

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

    多數發行版本,添加新用戶時的UID500開始的,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 中的每條記錄分四個字段,中間使用:隔開

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

 

Linux用戶管理二

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權限來完成必要的系統管理工作,我們可以使用susudo來實現;

用戶帳號類型:

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

普通用戶和僞裝用戶:與超級用戶相對的就是普通用戶和虛擬(也被稱爲僞裝用戶),普通和僞裝用戶都是受限用戶;但爲了完成特定的任務,普通用戶和僞裝用戶也是必須的;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

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

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

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

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

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

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

su 的確爲管理帶來方便,通過切換到root下,能完成所有系統管理工具,只要把root的密碼交給任何一個普通用戶,他都能切換到root來完成所有的系統管理工作;但如果登陸的用戶比較多,而多個用戶都需要使用root權限,這時就可能會造成安全隱患,而且由於切換的過程是打開rootshell環境,很多情況下也會造成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_AliasUser_AliasRunas_AliasCmnd_Alias 制約,定義什麼類型的別名,就要有什麼類型的成員相配。我們用Host_Alias定義主機別名時,成員必須是與主機相關相關聯,比如是主機名(包括遠程登錄的主機名)、ip地址(單個或整段)、掩碼等;當用戶登錄時,可以通過w命令來查看登錄用戶主機信息;用User_AliasRunas_Alias定義時,必須要用系統用戶做爲成員;用Cmnd_Alias 定義執行命令的別名時,必須是系統存在的文件,文件名可以用通配符表示,配置Cmnd_Alias時命令需要絕對路徑;其中 Runas_Alias User_Alias 有點相似,但與User_Alias 絕對不是同一個概念,Runas_Alias 定義的是某個系統用戶可以sudo 切換身份到Runas_Alias 下的成員;我們在授權規則中以實例進行解說;

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

Linux用戶管理三

/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 文件是當創建用戶時的一些規劃,比如創建用戶時,是否需要家目錄,UIDGID的範圍;用戶的期限等等,這個文件是可以通過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、添加用戶工具有useraddadduser ,這兩個工具所達到的目的都是一樣的;

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

3、還有圖形下的工具;

1useradd 工具

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 ;

2userdel 用法;

userdel 的語法格式:

userdel [-r] 名稱

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

      userdel 參數 用戶名

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

Linux用戶管理四

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

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。

5groupdel的用法;

groupdel 是用來刪除用戶組的;

語法格式:groupdel 用戶組

6passwd命令;

我們已經學會如何添加用戶了,所以我們還要學習設置或修改用戶的密碼;passwd命令的用法也很多,我們只選如下的幾個參數加以說明;想了解更多,請參考man passwdpasswd --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...] <accountName>
  -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)

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

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

chage 用語法格式:

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

8chfn 修改用戶信息工具;

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. 注:更改完成;

9chsh 改變用戶的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. 注:更改完成; 

Linux用戶管理五

10gpasswd   設置一個組的羣組密碼

         格式:gpasswd 參數  用戶名 組名

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

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

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

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

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

finger 參數 用戶名

id 選項 用戶名

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

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.

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

wwhousers工具,是查詢已登錄當前主機的用戶;另外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秒的平均負載。

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

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

16pwcov 注:同步用戶從/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)測試添增用戶是否成功;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章