1. 程式人生 > >linux使用者和使用者組管理(新增、刪除、修改)及說明

linux使用者和使用者組管理(新增、刪除、修改)及說明

理解Linux的單使用者多工,多使用者多工概念

Linux 是一個多使用者、多工的作業系統;我們應該瞭解單使用者多工和多使用者多工的概念;

1、Linux 的單使用者多工;
單使用者多工;比如我們以beinan 登入系統,進入系統後,我要開啟gedit 來寫文件,但在寫文件的過程中,我感覺少點音樂,所以又開啟xmms 來點音樂;當然聽點音樂還不行,MSN 還得開啟,想知道幾個弟兄現在正在做什麼,這樣一樣,我在用beinan 使用者登入時,執行了gedit 、xmms以及msn等,當然還有輸入法fcitx ;這樣說來就有點簡單了,一個beinan使用者,為了完成工作,執行了幾個任務;當然beinan這個使用者,其它的人還能以遠端登入過來,也能做其它的工作。

2、Linux 的多使用者、多工;

有時可能是很多使用者同時用同一個系統,但並不所有的使用者都一定都要做同一件事,所以這就有多使用者多工之說;

舉個例子,比如LinuxSir.Org 伺服器,上面有FTP 使用者、系統管理員、web 使用者、常規普通使用者等,在同一時刻,可能有的弟兄正在訪問論壇;有的可能在上傳軟體包管理子站,比如luma 或Yuking 兄在管理他們的主頁系統和FTP ;在與此同時,可能還會有系統管理員在維護系統;瀏覽主頁的用的是nobody 使用者,大家都用同一個,而上傳軟體包用的是FTP使用者;管理員的對系統的維護或檢視,可能用的是普通帳號或超級許可權root帳號;不同使用者所具有的許可權也不同,要完成不同的任務得需要不同的使用者

,也可以說不同的使用者,可能完成的工作也不一樣

值得注意的是:多使用者多工並不是大家同時擠到一接在一臺機器的的鍵盤和顯示器前來操作機器,多使用者可能通過遠端登入來進行,比如對伺服器的遠端控制,只要有使用者許可權任何人都是可以上去操作或訪問的;

3、使用者的角色區分;

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

root 使用者:系統唯一,是真實的,可以登入系統,可以作業系統任何檔案和命令,擁有最高許可權;
虛擬使用者:這類使用者也被稱之為偽使用者或假使用者,與真實使用者區分開來,這類使用者不具有登入系統的能力,但卻是系統執行不可缺少的使用者,比如bin、daemon、adm、ftp、mail等;這類使用者都系統自身擁有的,而非後來新增的,當然我們也可以新增虛擬使用者;
普通真實使用者:這類使用者能登入系統,但只能操作自己家目錄的內容;許可權有限;這類使用者都是系統管理員自行新增的;

4、多使用者作業系統的安全;

多使用者系統從事實來說對系統管理更為方便。從安全形度來說,多使用者管理的系統更為安全,比如beinan使用者下的某個檔案不想讓其它使用者看到,只是設定一下檔案的許可權,只有beinan一個使用者可讀可寫可編輯就行了,這樣一來只有beinan一個使用者可以對其私有檔案進行操作,Linux 在多使用者下表現最佳,Linux能很好的保護每個使用者的安全,但我們也得學會Linux 才是,再安全的系統,如果沒有安全意識的管理員或管理技術,這樣的系統也不是安全的。

從伺服器角度來說,多使用者的下的系統安全性也是最為重要的,我們常用的Windows 作業系統,它在系紡許可權管理的能力只能說是一般般,根本沒有沒有辦法和Linux或Unix 類系統相比;

使用者(user)和使用者組(group)概念


1、使用者(user)的概念

通過前面對Linux 多使用者的理解,我們明白Linux 是真正意義上的多使用者作業系統,所以我們能在Linux系統中建若干使用者(user)。比如我們的同事想用我的計算機,但我不想讓他用我的使用者名稱登入,因為我的使用者名稱下有不想讓別人看到的資料和資訊(也就是隱私內容)這時我就可以給他建一個新的使用者名稱,讓他用我所開的使用者名稱去折騰,這從電腦保安角度來說是符合操作規則的;

當然使用者(user)的概念理解還不僅僅於此,在Linux系統中還有一些使用者是用來完成特定任務的,比如nobody和ftp 等,我們訪問LinuxSir.Org 的網頁程式,就是nobody使用者;我們匿名訪問ftp 時,會用到使用者ftp或nobody ;如果您想了解Linux系統的一些帳號,請檢視 /etc/passwd ;

2、使用者組(group)的概念

使用者組(group)就是具有相同特徵的使用者(user)的集合體;比如有時我們要讓多個使用者具有相同的許可權,比如檢視、修改某一檔案或執行某個命令,這時我們需要使用者組,我們把使用者都定義到同一使用者組,我們通過修改檔案或目錄的許可權,讓使用者組具有一定的操作許可權,這樣使用者組下的使用者對該檔案或目錄都具有相同的許可權,這是我們通過定義組和修改檔案的許可權來實現的;

舉例:我們為了讓一些使用者有許可權檢視某一文件,比如是一個時間表,而編寫時間表的人要具有讀寫執行的許可權,我們想讓一些使用者知道這個時間表的內容,而不讓他們修改,所以我們可以把這些使用者都劃到一個組,然後來修改這個檔案的許可權,讓使用者組可讀,這樣使用者組下面的每個使用者都是可讀的;

使用者和使用者組的對應關係是:一對一、多對一、一對多或多對多;

一對一:某個使用者可以是某個組的唯一成員;
多對一:多個使用者可以是某個唯一的組的成員,不歸屬其它使用者組;比如beinan和linuxsir兩個使用者只歸屬於beinan使用者組;
一對多:某個使用者可以是多個使用者組的成員;比如beinan可以是root組成員,也可以是linuxsir使用者組成員,還可以是adm使用者組成員;
多對多:多個使用者對應多個使用者組,並且幾個使用者可以是歸屬相同的組;其實多對多的關係是前面三條的擴充套件;理解了上面的三條,這條也能理解;

實際使用者和有效使用者區別

Unix系統通過程序的有效使用者ID和有效使用者組ID來決定程序對系統資源的訪問許可權。

Unix高階程式設計第八章提到實際使用者和有效使用者,那麼這兩個使用者到底是什麼,它們之間有什麼區別呢?

  • 實際使用者ID(實際組ID):標識當前使用者(所屬組)是誰,當用戶登陸時取自口令檔案。即標識我是誰。也就是登入使用者的uid和gid。比如我的Linux以king使用者登入,在Linux執行的所有的命令的實際使用者ID都是king的uid,實際使用者組ID都是king的gid(可以用id命令檢視)
  • 有效使用者ID(有效組ID):用來決定我們(當前程序)對資源的訪問許可權或者對檔案的訪問權(即實際該程序是以那個使用者執行的)

一般情況下,有效使用者ID等於實際使用者ID,有效使用者組ID等於實際使用者組ID。當設定-使用者-ID(SUID)位設定,則有效使用者ID等於檔案的所有者的uid,而不是實際使用者ID;同樣,如果設定了設定-使用者組-ID(SGID)位,則有效使用者組ID等於檔案所有者的gid,而不是實際使用者組ID。

一個測試驗證程式


這個程式非常簡單沒有什麼好說的。我們編譯這個程式生成test 程式


通過id命令看到當前登入使用者為root,uid=0,gid=0。通過ls命令我們可以看出test程式沒有設定SUID和SGID,所有者是root,所有組也是root。執行test我們發現有效使用者ID等於實際使用者ID(0),有效使用者組ID等於實際使用者組ID(0)。

你可能注意到test的所有者root,組也是root,和實際使用者,實際使用者組是一樣的。下一步我們修改一下test所有者和組,再看結果。


發現結果和上面一樣,test程序的有效使用者ID等於實際使用者ID(0),有效使用者組ID等於實際使用者組ID(0)。

下面我們給test程式設定SUID


發現設定test程式的SUID位之後,test程序的有效使用者ID等於檔案所有者的UID(gkh的uid為500),有效使用者組ID還是等於實際使用者組ID(0)。這樣程式就可以訪問只有gkh才能訪問的資源了

先看看下面兩個的許可權是什麼



非常奇怪,/tmp目錄和 passwd檔案的許可權怎麼怪怪的,怎麼有s和t許可權呢。看了下面的內容你就明白了?

SUID

當s出現在檔案擁有者的x許可權上時,如我們上面看到的/usr/bin/passwd這個檔案的許可權時-rwsr-xr-x,此時就被稱為SET UID簡稱SUID.SUID對於一個檔案有什麼限制和功能呢?

  • 1.SUID許可權僅對二進位制可執行檔案有效
    2. 執行者對於該檔案具有x的許可權
    3. 本許可權僅在執行該檔案的過程中有效
    4. 執行者將具有該檔案擁有者的許可權

例如普通使用者用passwd修改自己的命令,實際上最終更改的是/etc/passwd檔案. 此檔案時使用者管理配置檔案,只有root許可權才能更改


既然是root使用者才擁有此許可權,為什麼我們可以通過passwd命令來修改密碼呢,那這就要歸功於passwd設定了suid許可權位了


此時普通使用者通過執行passwd命令,臨時擁有root許可權,間接的修改/etc/passwd,以達到修改自己密碼的許可權

SGID

當s出現在目錄或檔案所屬群的x許可權上時,此時就稱為SET GID簡稱SGID,那SGID對檔案和目錄分部有哪些功能呢?

SGID對目錄

  • 1. 使用者若對於此目錄具有 r 與 x 的許可權時,該使用者能夠進入此目錄
    2. 使用者在此目錄下的群組將會變成該目錄的群組
    3. 若使用者在此目錄下具有 w 的許可權(可以新建檔案),則使用者所建立的新檔案,該新檔案的群組與此目錄的群組相同

SGID對檔案

  • 1. SGID 對二進位制可執行檔案有效
    2. 程式執行者對於該檔案來說,需具備 x 的許可權
    3. 執行者在執行的過程中將會獲得該檔案群組的支援(用於改檔案群組的許可權)

SBIT

當s出現在目錄其他使用者的x許可權上時,此時就稱為Sticky Bit簡稱SBIT,那SBIT有哪些限制和作用呢?

  • 1. 僅對目錄有效,對檔案無效
    2. 當使用者在該目錄下建立檔案或目錄時(有許可權的情況下),僅自己與 root 才有權力刪除新建的目錄或檔案

我們知道/tmp目錄是這樣的許可權。


現在我們來驗證下,先用root賬號在tmp檔案中建立一個檔案test,然後用openstack(其他賬號)進入該目錄,刪除test檔案,看看發生什麼情況


我們看到這樣是不能刪除檔案的。因為/temp目錄有SBIT許可權

怎麼操作SUID、SBID、SBIT?

操作這些標誌與操作檔案許可權的命令是一樣的, 都是 chmod. 有兩種方法來操作,

(1)符號型別改變許可權(文字法:SUID: u+s ,SGID: g+s,SBIT: o+t )

  • 1. chmod u+s testbin-- 為testbin檔案加上setuid標誌.
    2. chmod g+s testdir-- 為testdir目錄加上setgid標誌
    3. chmod o+t testdir-- 為testdir目錄加上sticky標誌

(2) 數字型別改變檔案許可權(數字法:將原來的三位數擴充套件為四位數即可,SUID為4,SGID為2,SBIT為1,把它們放在許可權數字的最開頭。例如設定SUID,可以寫成4777,設定SGID可以寫成,2777)

採用八進位制方式. 對一般檔案通過三組八進位制數字來置標誌, 如 666, 777, 644等. 如果設定這些特殊標誌, 則在這三組數字之外再加一組八進位制數字. 如 4666, 2777等. 這一組八進位制數字三位的意義如下,

  • 1. setuid位, 如果該位為1, 則表示設定setuid 4---
    2. setgid位, 如果該位為1, 則表示設定setgid 2---
    3. sticky位, 如果該位為1, 則表示設定sticky 1---

設定完這些標誌後, 可以用 ls -l 來檢視. 如果有這些標誌, 則會在原來的執行標誌位置上顯示. 如

  • rwsrw-r-- 表示有setuid標誌
    rwxrwsrw- 表示有setgid標誌
    rwxrw-rwt 表示有sticky標誌

管理使用者(user)和使用者組(group)相關命令

1)管理使用者(user)的工具或命令;

useradd    注:新增使用者 
adduser    注:新增使用者
兩個使用者建立命令之間的區別
adduser: 會自動為建立的使用者指定主目錄、系統shell版本,會在建立時輸入使用者密碼。(一般使用 adduser)
useradd: 需要使用引數選項指定上述基本設定,如果不使用任何引數,則建立的使用者無密碼、無主目錄、沒有指定shell版本。
          需要單獨設定使用者密碼、指定家目錄、指定shell等

usermod    注:修改已經存在使用者的資訊 
userdel    注:刪除使用者
passwd     注:為使用者設定密碼
chage      注:更改使用者密碼過期資訊 
chfn       注:改變使用者備註資訊 
chsh       注:更改登入 shell
usermod    注:修改使用者命令,可以通過usermod 來修改登入名、使用者的家目錄等等。即更改passwd和shadow檔案中使用者的相關屬性 
pwcov      注:同步使用者從/etc/passwd 到/etc/shadow 
pwck       注:pwck是校驗使用者配置檔案/etc/passwd 和/etc/shadow 檔案內容是否合法或完整;
pwunconv   注:是pwcov 的立逆向操作,是從/etc/shadow和 /etc/passwd 建立/etc/passwd ,然後會刪除 /etc/shadow 檔案;
finger     注:檢視使用者資訊工具
id         注:檢視使用者的UID、GID及所歸屬的使用者組
chfn       注:更改使用者資訊工具
su         注:使用者切換工具(su 和 su - 這兩個切換使用者是有區別的。)
           su 命令 和 su - 命令最大的本質區別就是:前者只是切換了root身份,但Shell環境仍然是普通使用者的Shell;
           而後者連使用者和Shell環境一起切換成root身份了。只有切換了Shell環境才不會出現PATH環境變數錯誤。su切換成root使用者以後。
           pwd一下,發現工作目錄仍然是普通使用者的工作目錄;而用su -命令切換以後,工作目錄變成root的工作目錄了。
           用echo $PATH命令看一下su 和su - 以後的環境變數有何不同。
           要從當前使用者切換到其它使用者,推薦使用su - 命令,這樣連shell環境也切換了。
sudo       注:sudo 是通過另一個使用者來執行命令(execute a command as another user)。
           su 是用來切換使用者,然後通過切換到的使用者來完成相應的任務,
           但是 sudo 能後面直接執行命令,比如 sudo 不需要root 密碼就可以執行只有root使用者才能執行的命令;
           但是的通過visudo 來編輯/etc/sudoers來實現;
visudo     注:visodo 是編輯 /etc/sudoers 的命令;也可以不用這個命令,直接用vi 來編輯 /etc/sudoers 的效果是一樣的;
sudoedit   注:和sudo 功能差不多;

2)管理使用者組(group)的工具或命令;

groupadd     注:新增使用者組;
groupdel     注:刪除使用者組;
groupmod     注:修改使用者組資訊 
newgrp       注:切換到一個新組 
gpasswd      注:管理組和組密碼的命令。man gpasswd
groups       注:顯示使用者所屬的使用者組
grpck
grpconv      注:通過/etc/group和/etc/gshadow 的檔案內容來同步或建立/etc/gshadow ,如果/etc/gshadow 不存在則建立;
grpunconv    注:通過/etc/group 和/etc/gshadow 檔案內容來同步或建立/etc/group ,然後刪除gshadow檔案;

3、/etc/skel 目錄;

/etc/skel目錄一般是存放使用者啟動檔案的目錄,這個目錄是由root許可權控制,當我們新增使用者時,這個目錄下的檔案自動複製到新新增的使用者的家目錄下;/etc/skel 目錄下的檔案都是隱藏檔案,也就是類似.file格式的;我們可通過修改、新增、刪除/etc/skel目錄下的檔案,來為使用者提供一個統一、標準的、預設的使用者環境;

[[email protected] beinan]# ls -la /etc/skel/
總用量 92
drwxr-xr-x    3 root root  4096  8月 11 23:32 .
drwxr-xr-x  115 root root 12288 10月 14 13:44 ..
-rw-r--r--    1 root root    24  5月 11 00:15 .bash_logout
-rw-r--r--    1 root root   191  5月 11 00:15 .bash_profile
-rw-r--r--    1 root root   124  5月 11 00:15 .bashrc
-rw-r--r--    1 root root  5619 2005-03-08  .canna
-rw-r--r--    1 root root   438  5月 18 15:23 .emacs
-rw-r--r--    1 root root   120  5月 23 05:18 .gtkrc
drwxr-xr-x    3 root root  4096  8月 11 23:16 .kde
-rw-r--r--    1 root root   658 2005-01-17  .zshrc 

/etc/skel 目錄下的檔案,一般是我們用useradd 和adduser 命令新增使用者(user)時,系統自動複製到新新增使用者(user)的家目錄下;如果我們通過修改 /etc/passwd 來新增使用者時,我們可以自己建立使用者的家目錄,然後把/etc/skel 下的檔案複製到使用者的家目錄下,然後要用chown 來改變新使用者家目錄的屬主;

4、/etc/login.defs 配置檔案;

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

比如Fedora 的 /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   注:是否創使用者家目錄,要求建立;

5、/etc/default/useradd 檔案;

通過useradd 新增使用者時的規則檔案;

# useradd defaults file
GROUP=100
HOME=/home  注:把使用者的家目錄建在/home中;
INACTIVE=-1  注:是否啟用帳號過期停權,-1表示不啟用;
EXPIRE=   注:帳號終止日期,不設定表示不啟用;
SHELL=/bin/bash  注:所用SHELL的型別;
SKEL=/etc/skel   注: 預設新增使用者的目錄預設檔案存放位置;也就是說,當我們用adduser新增使用者時,使用者家目錄下的檔案,都是從這個目錄中複製過去的;

使用者管理

在linux中為了保障系統使用者的安全資訊,所以將使用者帳號,使用者密碼,使用者組資訊和使用者組密碼分開存放在不同的配置檔案中的。

  1. 使用者名稱配置檔案:/etc/passwd
  2. 使用者密碼配置檔案:/etc/shadow
  3. 使用者組配置檔案:/etc/group
  4. 使用者組密碼配置檔案:/etc/gshadow

把這四個檔案弄清楚,新增、刪除使用者和使用者組可以通過修改這4個檔案來完成。

使用者分類

linux使用者有三類:根使用者(root使用者,命令提示符介面顯示#)、普通使用者 (命令提示符顯介面示#)、虛擬使用者。

  1. root使用者:根使用者也就是超級使用者,擁有最高許可權任務,任何檔案許可權對根使用者無效,使用者UID為0
  2. 普通使用者:可以登陸系統,只能操作自己擁有檔案許可權的檔案。是由系統管理員建立的。使用者UID從501開始(500~60000 之間)
  3. 虛擬使用者:又稱偽使用者,不具備系統登陸的許可權,一般由系統建立或某些程式安裝後建立,

使用者名稱檔案 /etc/passwd 檔案結構


以上/etc/passwd檔案的屬性分解如下,共七個屬性(每個屬性用分號分割)

( /etc/passwd 每行7個欄位 “ 賬號:密碼:UID:GID:賬號資訊說明:家目錄:Shell ” )

示例                smbuser:x:500:500::/home/smbuser:/bin/bash
對應欄位解釋        使用者名稱: 加密口令: UID: 使用者所屬組的GID: 個人資訊描述: 使用者主目錄: 登陸shell

1.使用者名稱  :由字母、數字組成。必須以字母開頭,區分大小寫,長度不超過8個字元
2.加密口令:在早期的UNIX版本中,使用者和密碼放在一起的,使用者名稱在第一個選項位,密碼在第二個選項位,
            後來出於賬戶安全的考慮,對此進行了改進,將密碼另外存放,並用一個特殊字元X佔用第二個密碼選項位。
            因為passwd檔案對所有使用者都是可讀的,所以為了安全起見,系統將加密口令存放於/etc/shadow檔案中且只有超級使用者才有讀取許可權。
3.使用者UID: 系統中用來標識使用者的數字(root:UID為0  ,普通使用者UID為500-60000之間)
        管理員:0。其中0表示系統管理員ROOT賬戶。 一般使用者1-65535(一般使用者又分系統使用者和普通使用者)
        系統使用者:1-499(系統預設建立)。    1-499用於系統內建賬戶,如nobody,bin等
        普通使用者:500-65535(由管理員建立)。500-65535普通系統本地賬戶,系統安裝完成後,由ROOT使用者建立分配給有需要接入Linux主機的使用者使用。
        如果因為需要,可以將普通系統本地賬戶的UID改為0,就樣該使用者就有了ROOT使用者一樣的許可權了,但不建議這樣設定。 
4.使用者所屬組GID:預設剛建立,主GID和使用者UID相同,是主使用者組,可以更改(一般組分為主使用者組和附加組)
    使用者組的GID,使用者組名儲存在/etc/group檔案中,有時為了便於許可權的分配,可以將多個使用者加入到同一個使用者組中,對使用者組分配相應許可權,
    這樣該使用者組中的所有使用者都同時獲得了相同的許可權,可以簡化對每一個使用者來分配許可權。
    將使用者加入其它使用者組中的操作可以在/etc/group檔案中的使用者組名後批量新增相應的使用者名稱稱便可,不需要在此進行修改。
5.使用者的全名資訊,或描述等內容
6.使用者主目錄:   建立普通系統帳戶時會預設建立一個和使用者名稱相同的帳戶,使用者登陸後預設所處的目錄一般為~([[email protected] ~])
7.使用者登陸後使用的shell,其中/sbin/nologin為限制使用者登陸系統
        使用者登陸後啟動以接收並解析執行使用者輸入命令的程式,如./bin/bash  /bin/csh.     
        虛擬使用者一般該屬性為空或者是 /sbin/nologin     /bin/fase 表示禁止使用者登陸

使用者密碼檔案 /etc/shadow 檔案結構(以:作為分隔符,一共有九欄

[[email protected] tmp]# cat /etc/shadow
root:$6$hgwagXkBWGArriiQ$sajFOnZmrW2x0S6dipxvXXAJNfB1/BC0OvzjqeGZqQBVbng3aD9/CeD2j3YOnd6g2NJfPnk7zI1.9xqQ5aO6d0:16381:0:99999:7:::
bin:*:15980:0:99999:7:::
jacob:!!:16382:0:99999:7:::
帳號名稱:密碼:最近更改密碼日期:密碼不可被更改日期:密碼需重設定日期:密碼到期警告天數:密碼過期後能使用的天數:帳號失效的日期:保留

1 使用者名稱
2 經過加密碼後的密碼資訊。
  這個才是該賬號的真正的密碼,不過這個密碼已經加密過了,但是有些黑客還是能夠解密的。所以為了安全,該檔案屬性設定為600,只允許root讀寫。
3 最近改動密碼的日期,該日期引數是以1970年1月1日作為第1天而累加計算出的
4 密碼不可改動的天數,由選項3中的日期為第1天,如果該選項引數為0,表示隨時可以更改
5 密碼需要改動的天數,即強制使用者每多少天修改密碼,密碼過期後需要更新密碼後才可以登陸
6 密碼快要到期的前多少天提示警告資訊
7 密碼到期後可以寬限的天數,密碼過期後,在此時間內通過更改密碼後,並登陸來重新啟用賬號
8 賬號失效日期,在一些收費使用系統的應用中,可以設定此選項內容.
9 預留選項,未使用

使用者管理

新增使用者 useradd 命令

[email protected]:~# useradd -h

選項:
  -b, --base-dir BASE_DIR       設定基本路徑作為使用者的登入目錄  
  -c, --comment COMMENT         對使用者的註釋  
  -d, --home-dir HOME_DIR       設定使用者的登入目錄  
  -D, --defaults                改變設定  
  -e, --expiredate EXPIRE_DATE  新賬戶的過期日期。設定使用者的有效期  
  -f, --inactive INACTIVE       使用者過期後,讓密碼無效  
  -g, --gid GROUP               使使用者 “只屬於某個組 ”            (只能屬於一個組)
  -G, --groups GROUPS           新賬戶的附加組列表。使使用者加入某個組(可以屬於多個組)  
  -h, --help                    幫助
  -k, --skel SKEL_DIR           使用此目錄作為骨架目錄
  -K, --key KEY=VALUE           不使用 /etc/login.defs 中的預設值
  -l, --no-log-init             不把使用者加入到lastlog檔案中  
  -m, --create-home             自動建立登入目錄  
  -M, --no-create-home          不自動建立登入目錄  
  -N, --no-user-group           不建立同名的組
  -o, --non-unique              允許使用重複的 UID 建立使用者
  -p, --password PASSWORD       為新使用者使用加密密碼  
  -r, --system                  建立一個系統賬戶
  -R, --root CHROOT_DIR         chroot 到的目錄
  -s, --shell SHELL             登入時候的shell  
  -u, --uid UID                 為新使用者指定一個UID  
  -U, --user-group              建立與使用者同名的組
  -Z, --selinux-user SEUSER     為 SELinux 使用者對映使用指定 SEUSER

在建立使用者時,需要為新建使用者指定一使用者組,如果不指定其使用者所屬的工作組,自動生成一個同名同ID(UID=GID)的使用者組,即與使用者名稱同名的工作組。

useradd -g users user1    // 建立使用者 user1 的時候指定其所屬工作組 users

useradd test   // 增加使用者test,有一點要注意的,useradd增加一個使用者後,不要忘了給他設定密碼,不然不能登入的。
passwd test    // 設定使用者test 的密碼   

useradd -g test phpq   //新建phpq使用者並讓使用者 “只屬於test工作組”。  注::-g 所屬組 -d 家目錄 -s 所用的SHELL

useradd 使用者名稱 //建立一個新使用者 
useradd -G 使用者組 使用者名稱 //新建一個使用者,同時新增到附加組中 
useradd -u 600 liuyalei //建立一個使用者liuyalei,指定uid為600
useradd -M /sbin/nologin liuyalei //建立liuyalei使用者,不建立家目錄,不允許登入
useradd -e //帳號中指日期,日期的指定格式為MM/DD/YY
useradd -g //grop名稱或以數字來作為使用者登入起始使用者組。
//使用者組名需為系統現有存在的名稱。使用者組數字也需為現有存在的使用者組,預設的使用者組數字為1
useradd -G //定義此使用者為多個不同groups的成員。每個使用者組使用逗號隔開。使用者組名同-g的限制。預設值為使用者起始使用者組

新增使用者和組

使用 useradd test123 命令給linux系統新增一個新的使用者。
使用 passwd test123 命令給使用者“test123”新增密碼。輸入兩次一樣的密碼即可完成建立。
使用 groupadd groupTest 命令建立使用者組。
使用 usermod -G groupTest test123 將已有的使用者新增到已有的組中。
使用 cat /etc/group |grep group 命令檢視是否將剛才的使用者新增到組中。
使用 useradd -g test king 命令將新建的“king”使用者新增到已有的“test”組
示例: [[email protected] user_test]# useradd -c administrator -d /home/admin -e 2014-12-12 -g root -G,bin,mail

建立admin帳戶 使用者資訊,指定使用者資訊為administrator,家目錄為/home/admin,失效日期為2014年12月12日,指定預設組為root,附加組為bin,mail

設定帳號屬性 usermod (user modify) 命令

對於已建立好的使用者,可使用usermod命令來修改和設定賬戶的各項屬性,包括登入名,主目錄,使用者組,登入shell等,

命令用法:usermod [option] username

更多引數看幫助文件:man usermod     或者    usermod -h

(1)改變使用者帳戶名

使用-l引數來實現,命令用法為:usermod -l 新使用者名稱 原使用者名稱

例如,若要將使用者lijie更名為lijunjie,則操作命令為:

[[email protected] ~]# usermod -l lijunjie lijie
[[email protected] ~]# tail -1 /etc/passwd
lijunjie:x:502:502::/home/lijie:/bin/bash

從輸出結果可見,使用者名稱已更改為lijunjie。主目錄仍為原來的/home/lijie,若也要更改為/home/lijunjie,則可通過執行以下命令來實現

[[email protected] ~]# usermod -d /home/lijunjie lijunjie
[[email protected] ~]# tail -1 /etc/passwd
lijunjie:x:502:502::/home/lijunjie:/bin/bash
[[email protected] ~]# mv /home/lijie /home/lijunjie

(2)鎖定賬戶
若要臨時禁止使用者登入,可將該使用者賬戶鎖定。鎖定賬戶可利用-L引數來實現,命令用法為:usermod -L 要鎖定的賬戶
linux鎖定使用者,是通過在密碼檔案shadow的密碼欄位前加“!”來標識該使用者被鎖定。

(3)解鎖賬戶

要解鎖賬戶,可以使用帶-U引數的usermod命令來實現

修改使用者加入單個組和多個組

********************注意和建立使用者的 useradd 命令 -G 引數的區別*********************************
usermod -d /home/test -G test2 test   //將test使用者的登入目錄改成/home/test,並加入test2組,注意這裡是大G。
注意:將一個使用者新增到使用者組中,千萬不能直接用: usermod -G groupA userName 
這樣做會使你離開其他使用者組,僅僅做為 這個使用者組 groupA 的成員。 
usermod -g 組名 使用者名稱  // 是修改使用者所在組,其它組都給刪除了。

usermod -G 新增多個組要用","號隔開而且一次性新增,分開新增只能新增最後的那個組。
# usermod -G groupA,groupB,groupC user

如果真要使用 -G 選項追加組,應該加上 -a 選項(-a 代表 append, 也就是 將自己新增到 使用者組groupA 中,而不必離開 其他使用者組。 ): 
usermod -a -G groupA user    // 示例: usermod -a G dba grid


#Linux把使用者加入某個組(不退出當前所屬組 同時屬於多個組)
usermod -a -G groupname username
#檢視某使用者所屬組
groups username

gpasswd -a test test2 //將使用者test加入到test2組
gpasswd -d test test2 //將使用者test從test2組中移出

刪除使用者 userdel

更多選項參看:man userdel  或者  userdel -h

userdel 使用者名稱        //刪除使用者  示例:userdel test //將test使用者刪除
userdel -r liuyalei    //連同家目錄刪掉
生產環境中,我們可以通過注視配置檔案/etc/passwd,選擇先登出而不刪除使用者,類似回收站的作用,即使出了問題也能恢復。

將資料夾賦給相應使用者以及所在組

給oinstall組中的oracle相應的擁有者許可權
[[email protected] oracle]# chown -R oracle:oinstall /data/encryption/  

然後指定相應的使用者或組的相應許可權
[[email protected] oracle]# chmod -R 775 /data/encryption/

檢視使用者

a),檢視當前登入使用者
        [[email protected] ~]# w
        [[email protected] ~]# who
b),檢視自己的使用者名稱
        [[email protected] ~]# whoami
c),檢視單個使用者資訊
        [[email protected] ~]# finger apacheuser
        [[email protected] ~]# id apacheuser
d),檢視使用者登入記錄
        [[email protected] ~]# last 檢視登入成功的使用者記錄
        [[email protected] ~]# lastb 檢視登入不成功的使用者記錄
e),檢視所有使用者
        [[email protected] ~]# cut -d : -f 1 /etc/passwd
        [[email protected] ~]# cat /etc/passwd |awk -F \: '{print $1}'

檢視某個使用者所屬的組

命令:groups 使用者名稱
例如:[[email protected]~]# groups root
root : root bin daemon sys adm disk wheel
使用者root屬於root bin daemon sys adm disk wheel這7個group 

檢視系統中所有組

命令:more /etc/group 

使用者口令(密碼)管理

使用者管理的一項重要內容是使用者口令(密碼)的管理。使用者賬號剛建立時沒有口令,但是被系統鎖定,無法使用,必須為其指定口令後才可以使用,即使是指定空口令。

指定和修改使用者口令的Shell命令是:passwd [使用者名稱]超級使用者可以為自己和其他使用者指定口令,普通使用者只能用它修改自己的口令。
命令的格式為:passwd 選項 使用者名稱
可使用的選項:

名稱:passwd - 更改使用者密碼
用法:passwd [選項] [登入使用者名稱]
描述:passwd 命令用來更改使用者賬戶的密碼。
      普通使用者通常只更改其自己賬戶的密碼,而超級使用者可以更改任何賬戶的密碼。
      passwd 也能更改賬戶或相關的密碼有效期。

   密碼更改
       如果有舊密碼,首先提示使用者輸入舊密碼。加密這個密碼然後和儲存的密碼進行比較。使用者只有一次機會輸入正確密碼。
       允許超級使用者略過這個步驟,以便更改忘記了的密碼。

選項
       passwd 命令可以接受的選項有:

       -a, --all       此選項只能和 -S 一起使用,來顯示所有使用者的狀態。
       -d, --delete    使賬號無口令。 刪除使用者密碼(讓它為空)。這是禁用一個使用者密碼的快速方法。
       -e, --expire    讓一個賬戶的密碼立即過期。這可以強制一個使用者下次登入時更改密碼。
       -f              強迫使用者下次登入時修改口令。
       -h, --help      現實幫助資訊並退出。
       -i, --inactive INACTIVE    密碼過期一定天數之後禁用賬戶。
       -k, --keep-tokens    在過期後修改密碼
       -l, --lock     鎖定口令,即禁用賬號。此選項通過將密碼更改為一個不可能與加密值匹配的值來禁用(它在密碼開頭新增一個“!”)。
           注意,這並沒有禁用此賬戶。使用者仍然可以通過其它認證方式(如 SSH 密碼)來登入。要禁用此賬戶,管理員需要使用
           usermod --expiredate 1 (設定賬戶的過期時間為1970年1月2日)。
           被鎖定了密碼的使用者不允許更改密碼。

       -n, --mindays MIN_DAYS    設定到下次修改密碼所須等待的最短天數(更改密碼之間的時間間隔,即多長時間改一次密碼)
           在密碼更改之間的最小天數設定為 MIN_DAYS。此欄位中的 0 值表示使用者可以在任何時間更改其密碼。

       -q, --quiet    安靜模式。
       -r, --repository REPOSITORY    在 REPOSITORY 中更改密碼

       -R, --root CHROOT_DIR
           Apply changes in the CHROOT_DIR directory and use the configuration files from the CHROOT_DIR directory.

       -S, --status
           顯示賬戶狀態資訊。狀態資訊包含 7 個欄位。首個欄位是使用者的登入名,第二個欄位表示使用者賬戶是否已經鎖定密
           碼(L)、沒有密碼 (NP)或者密碼可用(P),第三個欄位給出最後一次更改密碼的日期。接下來的四個欄位分別是密碼的最小
           年齡、最大年齡、警告期和禁用期。這些年齡以天為單位計算。

       -u, --unlock    口令解鎖。解鎖指定使用者的密碼。此操作通過將密碼改回先前值(改回使用 -l 之前的值)重新啟用密碼。
       -w, --warndays WARN_DAYS
           設定在要求更改密碼之前警告的天數。WARN_DAYS 選項是在密碼過期之前提前警告的天數。

       -x, --maxdays MAX_DAYS
           設定密碼仍然有效的最大天數。MAX_DAYS 之後,密碼會要求更改。


檔案
       /etc/passwd          使用者賬戶資訊。
       /etc/shadow          使用者賬戶的密碼資訊。
       /etc/pam.d/passwd    passwd 的 PAM 配置。

退出值
       passwd 命令退出,並返回如下值:
       0    成功
       1    許可權不夠
       2    無效的選項組合
       3    意外的失敗,什麼也沒有做。
       4    意外的失敗,passwd 檔案丟失
       5    passwd 檔案忙,請重試
       6    給了選項一個無效的引數
參閱
       chpasswd(8), passwd(5), shadow(5), usermod(8).

示例

例如,假設當前使用者是sam,則下面的命令修改該使用者自己的口令:
$ passwd
Old password:******
New password:*******
Re-enter new password:*******

如果是超級使用者,可以用下列形式指定任何使用者的口令:
# passwd sam
New password:*******
Re-enter new password:*******

普通使用者修改自己的口令時,passwd命令會先詢問原口令,驗證後再要求使用者輸入兩遍新口令,如果兩次輸入的口令一致,則將這個口令指定給使用者;而超級使用者為使用者指定口令時,就不需要知道原口令。

為使用者指定空口令時,執行下列形式的命令:
# passwd -d sam
此命令將使用者sam的口令刪除,這樣使用者sam下一次登入時,系統就不再詢問口令。

passwd命令還可以用-l(lock)選項鎖定某一使用者,使其不能登入,例如:
# passwd -l sam

鎖定/解鎖賬戶密碼

在linux中,除了使用者賬戶可被鎖定外,賬戶密碼也可被鎖定,任何一方被鎖定後,都將無法登入系統。

只有root使用者才有權執行該命令,鎖定賬戶密碼使用帶-l引數的passwd命令,其用法為:
passwd -l 帳戶名
passwd -u 帳戶名 #解鎖賬戶密碼

查詢密碼狀態

要查詢當前賬戶的密碼是否被鎖定,可以使用帶-S引數的passwd命令來實現,其用法為:
passwd -S 賬戶名
例如
[[email protected] etc]# passwd -S lijunjie
lijunjie LK 2011-03-25 0 99999 7 -1 (密碼已被鎖定。)
[[email protected] etc]# passwd -u lijunjie      // 解鎖使用者 lijunjie 的密碼 。

[[email protected] etc]# passwd -S lijunjie
lijunjie PS 2011-03-25 0 99999 7 -1 (密碼已設定,使用 SHA512 加密。)

刪除賬戶密碼
如要刪除賬戶的密碼,使用帶-d引數的passwd命令來實現,該命令也只有root使用者才有權執行,其用法為:
passwd -d 帳戶名
帳戶密碼被刪除後,將不能登入系統,除非重新設定密碼。

使用者組管理

涉及命令:gpasswd (管理組)、groupadd(新增組)、groupmod (修改組) 、groupdel(刪除組)    

LINUX下把一個使用者加入多個組 ,實現方法:# gpasswd -a 使用者 組      // 示例:gpasswd -a user group  // 將 user 使用者加入到 group 組中

如果檢視/etc/shadow 或/etc/passwd等檔案看不出來使用者已經加入想要的組時,此時可以用 id 命令 來檢視

使用者ruan隸屬於ruan組,id為500,現在想要同時加入組ruanrongjian中
[[email protected] ~]# gpasswd -a rong ruanrongjian
Adding user rong to group ruanrongjian
先切換到ruan使用者,然後用ID檢視
[[email protected] ~]# su ruan
[[email protected]