Linux 建立修改刪除使用者和組

pursuer.chen發表於2016-05-05

介紹

在日常的維護過程中建立使用者操作用的相對會多一些,但是在這個過程中涉及到的知識點就不單單就是useradd了,接下來就來詳細瞭解賬號管理的相關資訊。

 

 

使用者資訊

先從使用者資訊開始分析,可以通過查詢/etc/password檔案,每一行代表一個使用者資訊
root:x:0:0:root:/root:/bin/bash

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

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

mysql:x:496:501::/home/mysql:/bin/bash

每個冒號分隔一部分,整行總共分為7個部分。

1.使用者名稱

2.使用者密碼,早期版本的賬號密碼是直接存在這裡,為了相容所以也保留下了這部分,用X代替。

3.UID:所屬的使用者ID,每個檔案的前面都有該檔案所屬的使用者和組,其實存的是UID只不過是通過UID再去etc/password、/etc/shadow中找到對應的UID和GID的名稱。

超級使用者的uid=0

系統使用者(1-499):其中1-99是系統建立的,100-499是使用者建立的系統賬戶,系統使用者不能登入但是可以執行系統的一些命令,這個跟最後指定的shell有關;有一個特殊的shell是/sbin/nologin

普通使用者(500-65535)

4.GID:賬號所屬的使用者組ID,和/etc/group組檔案有關聯

5.使用者描述

6.使用者的家目錄:建立使用者的家目錄預設是在/home/使用者/,在建立使用者的時候可以指定使用者的家目錄,系統使用者的家目錄比較特殊,比如root使用者的家目錄是/root

7.shell:shell是終端和kernel(核心)溝通的橋樑、核心再和低層的硬體互動(包括CPU、主機板、硬碟、顯示卡、光碟機等),linux預設的shell是/bin/bash

 

密碼資訊

使用者密碼檔案中每一行記錄一個使用者的密碼資訊,總共有九個部分

[root@localhost ~]# cat /etc/shadow
root:$1$4/CBv0UU$GZ1mEvqxy6/9UaTGI9YUT0:16862:0:99999:7:::

1.使用者名稱:對應/etc/password檔案中的使用者資訊

2.密碼:密碼存的是密文

3.最近更改密碼的日期:linux將1970年1月1日作為1,所以上面的16862是累加的,具體就不去算了

4.密碼不可被更改的天數:0代表密碼隨時可以被更改,通常可以用來設定某個使用者在多少天密碼不能被更改

5.密碼需要重新更改的天數:99999為273年,改時間是在第3部分的基礎上再相加的。

6.密碼需要修改前的警告天數:改天數是在第5的基礎上計算的,這裡預設是7天也就是密碼在需要更改前的第7天開始就發出警告。

7.密碼過期後賬號寬限的天數:當密碼超過了需要更改的天數後,如果使用者依然沒有更改密碼,那麼該密碼就過期了,在過期的這幾天裡密碼依舊可以登入當使用者在寬限的時間內登入系統系統會強制使用者修改密碼,如果使用者在寬限的天內還未修改密碼那麼密碼就永久過期無法再登入,只有賬戶超出了密碼過期的天數之後賬戶才失效,所以一個賬戶總的有效時間是3+6+7。

8.使用者失效的日期:改日期同第3部分一樣都是從1970年1月1日開始計算出來的數字,超過這個日期之後無論使用者密碼是否過期使用者都失效不能再使用,改日期通常會用在規定一個使用者在規定的日期之後就使用者就不能使用的收費系統中。

9.保留部分

 

計算當前日期通過1970年換算過來的數字

[root@localhost ~]# echo $(($(date +'%s')/86400+1))
16927

計算指定日期通過1970年換算過來的數字

[root@localhost ~]# echo $(($(date --date="2016-01-01" +'%s')/86400+1))
16802

 

建立使用者

 明白了上面的概念之後就可以來建立使用者了,建立使用者的命令是useradd,接下來看幾個主要的引數。

 useradd [-u UID] [-g 初始群組] [-G 次要群組] [-m\M] [-c 說明] [-d 家目錄絕對路徑] [-s shell] 賬號名
  -c, --comment COMMENT         使用者說明
  -d, --home-dir HOME_DIR       使用者的家目錄
  -D, --defaults                預設的使用者配置
  -e, --expiredate EXPIRE_DATE  使用者的失效日期,這裡需要指定的是從1970年1月1日開始計算出來的數字,比如16925代表2016年5月4日過期,對應密碼檔案的第8部分
  -f, --inactive INACTIVE       指定密碼過期的時間,這裡指定的是數字,比如10代表密碼在過期的10天內還可以登入但是登入後需要強制修改密碼, 對應密碼檔案的第7部分
  -g, --gid GROUP               使用者的GID
  -G, --groups GROUPS           列出使用者還能加人的組、次要組
-h, --help 幫助資訊 -k, --skel SKEL_DIR use this alternative skeleton directory -K, --key KEY=VALUE override /etc/login.defs defaults -l, --no-log-init do not add the user to the lastlog and faillog databases -m, --create-home 強制需要建立家目錄 -M, --no-create-home 強制不建立家目錄 -N, --no-user-group 不建立使用者的組名和使用者名稱一樣 -o, --non-unique 允許建立的使用者uid相同,預設情況下使用者的UID是唯一的,加上-o引數可以建立相同UID的不用使用者
-p, --password PASSWORD 指定建立使用者的密碼,這裡的密碼儲存的是密文,所以還需要知道密文對應的明文密碼是多少 -r, --system 建立一個系統使用者 -s, --shell SHELL 指定使用者的shell -u, --uid UID 指定使用者的uid -U, --user-group 建立的使用者組名同使用者名稱,這是預設的
  -Z, --selinux-user SEUSER     use a specific SEUSER for the SELinux user mapping

 

1.建立使用者test

建立使用者不加引數預設會建立一個同名的使用者組、密碼為空,使用者的UID和GID都是500之後在現有的UID和GID的基礎上往後自動新增、預設會建立一個同名的家目錄家目錄的預設許可權是700

[root@localhost ~]# useradd test
[root@localhost ~]# grep test /etc/passwd /etc/shadow /etc/group
/etc/passwd:test:x:501:502::/home/test:/bin/bash
/etc/shadow:test:!!:16925:0:99999:7:::
/etc/group:test:x:502:

  [root@localhost ~]# ll -d /home/test
  drwx------. 4 test test 4096 May 4 16:25 /home/test

 

2.建立使用者new備註使用者為test,指定使用者UID為600,使用者的組初始組為test、使用者的次要組為mysql,指定使用者的失效日期(注意這裡的失效日期也是需要通過1970年1月1日進行換算)、指定使用者的過期天數

3.建立系統使用者old

建立的系統使用者雖然在使用者檔案中有指定家目錄,但是實際上在home目錄下並不會建立對應使用者的目錄,且不會建立使用者郵件通知目錄。

 4.建立不允許登入的使用者

useradd test -s /sbin/nologin

5.指定使用者家目錄

先建立使用者家目錄

[root@localhost ~]# mkdir -p /test/home
[root@localhost ~]# mkdir /test/home/testuser

建立使用者並指定家目錄

[root@localhost ~]# useradd -d /test/home/testuser testuser
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.

注意:這裡的家目錄是絕對路徑,也就是你指定了那個目錄家目錄就是哪個目錄不會在你指定的目錄下再建立目錄,這裡會有警告說使用者不能拷貝檔案到家目錄,因為家目錄的許可權還是之前建立目錄使用者的許可權,這個時候需要給家目錄賦予使用者擁有者。

[root@localhost ~]# chown testuser:testuser /test/home/testuser
[root@localhost ~]# ll /test/home
total 4
drwxr-xr-x. 2 testuser testuser 4096 May  5 06:22 testuser
[root@localhost ~]# 

 

刪除使用者

userdel [options] LOGIN
  -f, --force                   強制刪除使用者,不管該使用者是否在使用                             
-h, --help 幫助資訊
-r, --remove 刪除使用者和組並且刪除使用者的家目錄和郵件通知目錄 -Z, --selinux-user 刪除SELinux使用者

1.不加引數刪除使用者

userdel testuser

不加引數刪除只會刪除使用者、密碼、使用者組,不會刪除使用者的家目錄和使用者的郵件目錄

2.刪除使用者同時刪除使用者的家目錄和郵件通知目錄

userdel -r test

使用-r引數刪除使用者會同時刪除使用者的家目錄和使用者的郵件通知目錄,如果使用者的使用者組是使用其它使用者的使用者組,其它使用者組不會被刪除。

 

使用者組

建立使用者組

groupadd groupname

刪除使用者組

groupdel groupname

修改使用者組

--修改使用者組名
groupmod -h newname oldname

--修改使用者組ID
groupmod -g newgid oldgid

單獨對使用者組的操作用的不會很多,這裡只需要瞭解一下就好。

總結

 修改使用者這裡就不做詳細的解釋,跟建立使用者的語法相差不大,

 

 

 

備註:

    作者:pursuer.chen

    部落格:http://www.cnblogs.com/chenmh

本站點所有隨筆都是原創,歡迎大家轉載;但轉載時必須註明文章來源,且在文章開頭明顯處給明連結。

《歡迎交流討論》

相關文章