Linux基礎系列(用戶,組管理)

   Linux是一個多用戶操作系統多任務的分時操作系統,平時的日常使用離不開用戶登錄以及用戶組的管理,熟練管理用戶和用戶組,會提升我們的工作效率。

 

Linux用戶管理:

  Linux包括系統管理員,普通用戶。普通用戶又分為系統用戶和登錄用戶。系統用戶一般不會登陸系統,其shell類型一般為/etc/nologin.

      管理員:root, 0
      普通用戶:1-65535
         系統用戶:1-499(CENTOS6), 1-999
            對守護進程獲取資源進行權限分配
         登錄用戶:500(CENTOS6)+, 1000+
         交互式登錄

   配置文件:

        /etc/passwd :存放用戶賬號信息

       /etc/shadow  :存放用戶密碼信息

/etc/passwd文件格式:

[root@localhost ~]# getent passwd root
root:x:0:0:root:/root:/bin/bash
gentoo:x:4322:4322:Gentoo Distribution:/home/gentoo:/bin/csh

可以看到/etc/passwd文件一共存在七個字段,每個字段用冒號隔開,其意義分別為:

   用戶名:密碼位:uid:gid:描述信息:家目錄:shell類型

可以看到密碼位為x,是因為為了保險起見,密碼被放在了另一個文件中,這個文件就是/etc/shadow,讓我們也來看看這個文件的格式內容

/etc/shadow:

[root@localhost test]# tail /etc/shadow
gentoo:!!:17015:0:99999:7:::
natasha:$6$Fr6mxmMZ$QZzqqAJAlZzsygjzHo6NwaEkgM0oOl16sn8h.lfVht4k2VbnhMpImBqy2VOy8eRPHkhvGrjyEflmwaYSYLaq41:17015:0:99999:7:::
harry:$6$cf2ssZV3$roPCkbiIdQKZGwyg5EW9bP5g/KWDYxFBlx8db5JbT4J575zlOGAjUEBLmK/8G1hUL/fBS28DbQ0dyNpaUPMfy.:17015:0:99999:7:::
sarah:$6$Cx7kTnrR$n.Ly6GsbMxkM9Xen/QzahpQjAM8N.7u.TMqXMf.UTbdJy8XUucCByCkMnGYOkGzHcGvTSxpFgO9UAy2BXHAwP/:17015:0:99999:7:::
rooter:!!:17015:0:99999:7:::
router:!!:17015:0:99999:7:::
user1:!!:17016:0:99999:7:::

   同上,這個文件也是用冒號隔開,不過一共有九個字段

用戶名:加密的口令:最后一次更改密碼的時間:密碼最短使用時間:密碼最長使用時間:提前幾天通知:密碼過期后可以使用幾天:賬戶可用時間:保留字段

  可以看到加密的口令字段開頭都有$6,這是一種加密方式,加密類型為sha512:512bits。加密口令后面跟著好幾個時間,下面有個圖,可以較為清晰地來區分這幾個時間。


注意:添加用戶時如果沒有設密碼,此時密碼位顯示兩個??!號,表示雙重鎖定的意思,如果將! !刪去,那用戶便可以空密碼登錄。

在centos6,7中,使用usermod -L 解鎖只能去掉一個!號,在redhat5中,使用usermod -L可以解鎖兩個!號 ,從而實現空密碼登錄

QQ截圖20160802110223.jpg


last change date :最后一次修改密碼的時間,如若此值為0,則表示下次登錄必須修改密碼

min days:密碼最少被使用的天數(0表示隨時可被變更)

max days:密碼最長能使用多少天(99999表示永不過期)

warn days:當密碼最長使用天數快到時,提前幾天通知

inactive days:當密碼過期后,還能使用多少天

賬號管理命令:

    useradd
    usermod
    userdel

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

練習:創建一個用戶jane,要求其的UID為2222,注釋信息為“hello world”,用戶家目錄為/testdir/hello,默認shell類型為csh,附加組為root。

[root@localhost ~]# useradd -u 2222 -c "hello world" -d /testdir/hello -s /shell/csh -G root jane
[root@localhost ~]# getent passwd jane
jane:x:2222:2222:hello world:/testdir/hello:/shell/csh
[root@localhost ~]# useradd -u 2222 -c "hello world" -d /testdir/hello -s /shell/csh -G root jane
[root@localhost ~]# getent passwd jane
jane:x:2222:2222:hello world:/testdir/hello:/shell/csh

當你想創建兩個uid相同的用戶時,使用-o選項,他會忽略UID的唯一性:

[root@localhost ~]# useradd -u 2222 -o lilei
[root@localhost ~]# getent passwd lilei
lilei:x:2222:4333::/home/lilei:/bin/bash

每個用戶在創建的時候系統都會重建一個與他重名用戶組,如果指定主組,則會使用它做用戶的主組

[root@localhost ~]# useradd tom
[root@localhost ~]# getent passwd tom
tom:x:4331:4334::/home/tom:/bin/bash
[root@localhost ~]# getent group tom
tom:x:4334:

使用-N選項可以不創建私用組做主組,使用users組做主組

[root@localhost ~]# useradd -N tomre
[root@localhost ~]# id tomre
uid=4332(tomre) gid=100(users) groups=100(users)

至于為什么會用users做主組,這個取決于用戶配置的默認配置文件/etc/default/useradd,使用useradd -D可以顯示或更改默認設置:

[root@localhost ~]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
[root@localhost ~]# useradd -D -s /shell/csh
[root@localhost ~]# useradd -D 
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/shell/csh
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

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: 設定非活動期限;

可以發現usermod和useradd的大多數參數差不多,用法也大致相同,下面我們來實驗幾個參數。

-l 更改用戶名:

[root@localhost ~]# usermod -l tomch tom
[root@localhost ~]# id tom
id: tom: no such user
[root@localhost ~]# id tomch
uid=4331(tomch) gid=4334(tom) groups=4334(tom)

-L 鎖定用戶,使其不能登錄

[root@localhost ~]# passwd tomre
Changing password for user tomre.
New password: 
BAD PASSWORD: The password fails the dictionary check - it is based on a dictionary word
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@localhost ~]# usermod -L tomre

QQ截圖20160804105940.jpg

-U 解鎖被鎖定的用戶:

[root@localhost ~]# usermod -U tomre

QQ截圖20160804110137.jpg

userdel[OPTION]… login 刪除用戶
-r: 刪除用戶家目錄;

如果不加參數直接跟賬號,那么用戶會被刪除,但是用戶的家目錄還在,其屬主屬組被原用戶的UID和GID代替。

[root@localhost ~]# useradd lihua
[root@localhost ~]# id lihua
uid=4333(lihua) gid=4335(lihua) groups=4335(lihua)
[root@localhost ~]# userdel lihua
[root@localhost ~]# id lihua 
id: lihua: no such user

QQ截圖20160804111928.jpg

-r 刪除家目錄

[root@localhost home]# useradd lihua
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
Creating mailbox file: File exists
[root@localhost home]# id lihua
uid=4333(lihua) gid=4335(lihua) groups=4335(lihua)
[root@localhost home]# userdel -r lihua

QQ截圖20160804112241.jpg

用戶密碼修改:

passwd[OPTIONS] UserName: 修改指定用戶的密碼,僅root用戶權限
passwd: 修改自己的密碼;
常用選項:
-l:鎖定指定用戶
-u:解鎖指定用戶
-e:強制用戶下次登錄修改密碼
-n mindays: 指定最短使用期限
-x maxdays:最大使用期限
-w warndays:提前多少天開始警告
-iinactivedays:非活動期限;
–stdin:從標準輸入接收用戶密碼;
echo "PASSWORD" | passwd–stdinUSERNAME

root用戶可以更改自己密碼以及其他普通用戶的密碼,而普通用戶只能更改自己的密碼。

[root@localhost home]# passwd user1
Changing password for user user1.
New password: 
BAD PASSWORD: The password fails the dictionary check - it is based on a dictionary word
Retype new password: 
passwd: all authentication tokens updated successfully.

-l 鎖定指定用戶:

[root@localhost home]# passwd  -l user1
Locking password for user user1.
passwd: Success

QQ截圖20160804113043.jpg

-u 解鎖用戶

[root@localhost home]# passwd  -u user1
Unlocking password for user user1.
passwd: Success

QQ截圖20160804113145.jpg

-e:強制用戶下次登錄修改密碼

[root@localhost home]# passwd  -e user1
Expiring password for user user1.
passwd: Success

QQ截圖20160804113503.jpg

還有一種修改密碼的方法就是使用echo命令管道送給passwd,不過這種方法是明文,可以再歷史命令中查看到

echo "PASSWORD" | passwd–stdinUSERNAME

[root@localhost /]# echo "centos" | passwd --stdin xiaoshui
Changing password for user xiaoshui.
passwd: all authentication tokens updated successfully.

chage[OPTION]… LOGIN
-d LAST_DAY
-E, –expiredateEXPIRE_DATE
-I, –inactive INACTIVE
-m, –mindaysMIN_DAYS
-M, –maxdaysMAX_DAYS
-W, –warndaysWARN_DAYS
–l,顯示密碼策略

chage命令作用和passwd的用法差不多,這里只舉例一兩個:

[root@localhost /]# chage -l root
Last password change                    : never
Password expires                    : never
Password inactive                    : never
Account expires                        : never
Minimum number of days between password change        : 0
Maximum number of days between password change        : 99999
Number of days of warning before password expires    : 7

chage -d0 表示用戶下次登錄必須要修改密碼:

[root@localhost /]# chage -d0 user1

QQ截圖20160804130954.jpg

此外還有一些其他的賬戶管理命令:

chfn

更該用戶的注釋信息

2016-08-02_095438.png

finger:查看詳細的用戶注釋信息

QQ截圖20160802100211.jpg

chsh 更改用戶shell類型

QQ截圖20160802101010.jpg

用戶組管理:

有關用戶組的兩個文件:

   /etc/group

   /etc/gshadow

/etc/group存放著用戶組信息,/etc/gshadow中存放著組密碼及相關信息

/etc/group文件格式:

QQ截圖20160802110824.jpg

每個字段用:隔開,分為四個字段:

組名:組密碼:GID:組成員

/etc/gshadow文件格式:

QQ截圖20160802112334.jpg

組名:組密碼:組管理員:組成員

管理用戶組也是通過命令來實現;

groupadd[OPTION]… group_name
-g GID: 指明GID號;[GID_MIN, GID_MAX]
-r: 創建系統組(CentOS 6: ID<500;CentOS 7: ID<1000)

[root@localhost /]# groupadd -g 3333 ad
[root@localhost /]# getent group ad
ad:x:3333:

組屬性修改:groupmod
groupmod[OPTION]… group
-n group_name: 新名字
-g GID: 新的GID;

[root@localhost /]# groupmod -n newad ad
[root@localhost /]# getent group ad
[root@localhost /]# getent group newad
newad:x:3333:
[root@localhost /]# groupmod -g 3111 newad 
[root@localhost /]# getent group newad
newad:x:3111:

組刪除:groupdel
groupdelGROUP

[root@localhost /]# groupdel newad
[root@localhost /]# getent group newad
[root@localhost /]#

組密碼:gpasswd
gpasswd[OPTION] GROUP
-a user: 將user添加至指定組中;
-d user: 從指定組中移除用戶user
-A user1,user2,…: 設置有管理權限的用戶列表
newgrp命令:臨時切換基本組;
如果用戶本不屬于此組,則需要組密碼

[root@localhost /]# gpasswd -a user1 root
Adding user user1 to group root
[root@localhost /]# id user1
uid=4329(user1) gid=4329(user1) groups=4329(user1),0(root)
[root@localhost /]# gpasswd -d user1 root
Removing user user1 from group root
[root@localhost /]# id user1
uid=4329(user1) gid=4329(user1) groups=4329(user1)
[root@localhost /]# gpasswd -A user1 user2
[root@localhost /]# getent gshadow user2
user2:!:user1:

組密碼:使用沒有加入過的組名當作當前主組時候,需要輸入這個組的組密碼

QQ截圖20160802112840.jpg

groupmems[options] [action]
options:
-g, –group groupname更改為指定組(只有root)
Actions:
-a, –add username 指定用戶加入組
-d, –delete username 從組中刪除用戶
-p, –purge 從組中清除所有成員
-l, –list 顯示組成員列表

groupmems就不練習,基本上用法都差不多

[root@localhost /]# groupmems -l 
gentoo  jane

groups [OPTION].[USERNAME]… 查看用戶所屬組列表

[root@localhost /]# groups gentoo
gentoo : gentoo root bin    

好了,以上是此次博客的全部內容,還是需要多多練習,才能熟練掌握。

原創文章,作者:我的滑板鞋,如若轉載,請注明出處:http://www.www58058.com/28329

(0)
我的滑板鞋我的滑板鞋
上一篇 2016-08-04
下一篇 2016-08-04

相關推薦

  • 20160802學習筆記

    useradd相關補充:      1.新建一個用戶創建時的一些默認權限在/etc/default/useradd配置中      2.新建用戶家目錄的過程實際就是將/etc/skel中的所有文件,拷貝到新建用戶的/home下,并更改為改用戶的用戶名   &n…

    Linux干貨 2016-08-03
  • bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容

    bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容 bash的基礎特性:命令的執行狀態結果 bash通過狀態返回值來輸出此結果: 成功:0 失?。?-255 命令執行完成之后,其狀態返回值保存于bash的特殊變量$?中。 [root@localhost ~]# ls anaconda-ks.cfg [root@localhost ~]# echo…

    Linux干貨 2018-03-11
  • Linux第五周總結

    1、顯示當前系統上root、fedora或user1用戶的默認shell 2、找出/etc/rc.d/init.d/functions文件中某單詞后面跟一組小括號的行,形如:hello(); 3、使用echo命令輸出一個絕對路徑,使用gerp取出其基名;     擴展:取出其路徑名 4、找出ifconfig命令結果中的…

    2017-07-30
  • 第四周博客分享

                    時間匆匆,轉眼來馬哥已經快一個月了,這一個月對我來說是收獲滿滿,每天都在學到新的東西。       &nbs…

    2017-08-06
  • Linux命令的使用格式以及命令幫助信息的獲取方式

    1.Linux系統上的命令使用格式 2.Linux系統程序文件存放位置 3.Linux獲取命令的幫助信息 區分內部命令和外部命令 內部命令在系統啟動時就調入內存,是常駐內存的,所以執行效率高。 外部命令是系統的軟件功能,用戶需要時才從硬盤中讀入內存。 #type COMMAND 內部命令獲取幫助信息:#help COMMAND 外部命令獲取幫助信息…

    Linux干貨 2016-10-29
  • DNS服務與bind配置

    DNS服務   DNS: Domain Name Service,協議   BIND:Bekerley Internat Name Domain, ISC (www.isc.org)   本地名稱解析配置文件:hosts           linux:/et…

    Linux干貨 2016-09-26

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-04 13:56

    總結的很詳細,一個命令主要有語法、選項、參數,希望能分層次,有縮進的寫下來,這樣看起來不會這么凌亂了。

欧美性久久久久