Linux 用戶、用戶組及權限管理

一、Linux用戶及用戶組的基本概念

用戶:用戶是實現能夠將有限的資源在多個使用者之間進行分配;、

用戶組:用戶組是指多個用戶的集合,方便對一類需要同樣權限的用戶授權

Linux是多用戶、多任務的操作系統。

    多用戶指:多人同時使用系統資源;多任務:同時運行多個進程

二、用戶及用戶組類別

1、用戶:名稱解析庫 /etc/passwd

a、管理員

root 用戶標識(UID)為0

b、普通用戶及系統用戶

    普通用戶的用戶標識(既UID):

        CentOS 5,6: 500+

        CentOS 7: 1000+

    系統用戶用戶標識(既UID):

        CentOS 5,6: 1-499

        CentOS 7: 1-999

2、用戶組:名稱解析庫 /etc/group

a、管理員組

組標識為:0

b、普通用戶組及系統用戶組

    普通用戶組標識:

        CentOS 5,6: 500+

        CentOS 7: 1000+

    系統用戶組標識:

        CentOS 5,6: 1-499

        CentOS 7: 1-999

3、用戶組類別:

    以用戶為核心分為:

        用戶的主組:基本組;

        用戶的附加組:額外組;

    以容納的用戶來劃分:

        私有組:與用戶名相同,且只有一個用戶;

        共有組:組內包含了多個用戶;

三、用戶及用戶組的認證機制

Linux的用戶密碼認證方式在centos7中使用sha512

認證信息庫存儲位置:

    用戶的認證信息庫:/etc/shadow

    組的認證信息庫:/etc/gshadow

密碼:加密存放,使用單向加密機制

算法:

md5: message digest, 128bits

sha1: secure hash algorithm, 160bits

sha224

sha256

sha384

sha512


三、權限的生效機制

進程的運行者:

    是否與文件的屬主相同,如果是,則以文件屬主的身份來訪問此文件;否則

    是否屬于文件的屬組,如果是,則以文件屬組的身份來訪問此文件;否則

    以文件的其它用戶的身份來訪問此文件;

2016-03-08 10 57 41.png

四、用戶及用戶組管理命令

groupadd命令:添加組

    groupadd [options] group

    -g  GID:指明GID;

# groupadd -g 2000 testgrp
# grep "testgrp" /etc/group
testgrp:x:2000:

    -r, –system:系統組;

# groupadd -r testgrp1
# grep "testgrp1" /etc/group
testgrp1:x:985:


groupmod命令:修改組信息

    groupmod [選項] GROUP

    -g  GID 

    -n NEW_NAME:修改組名;

# grep "testgrp\>" /etc/group
testgrp:x:2000:
# groupmod -g 300 -n grptest testgrp
# grep "grptest" /etc/group
grptest:x:300:


groupdel命令:刪除組

    groupdel [選項] GROUP

# grep "grptest" /etc/group
grptest:x:300:
# groupdel grptest
# grep "grptest" /etc/group


useradd命令:添加用戶

    useradd  [選項]  登錄名

    -c, –comment COMMENT:注釋信息,一般為Full Name;

    -d, –home  /PATH/TO/HOME_DIR:家目錄路徑;目標路徑不能事先存在,否則會有警告,不會復制skel相關的文件給用戶;

    -g, –gid GROUP:用戶的基本組組名或GID;

    -G, –groups GROUP1[,GROUP2,…[,GROUPN]]]:用戶所屬的附加組列表,彼此間用逗號隔開,中間沒有空格;

# useradd -c "testuser" -d /home/testuser -g testgrp -G testgrp1 testuser
# id testuser
uid=5011(testuser) gid=5011(testgrp) groups=5011(testgrp),985(testgrp1)

    -m, –create-home:強制創建家目錄;

            一般指當CREATE_HOME變量為設置時必須使用此參數 

    -M:不創建用戶主目錄,即使系統在 /etc/login.defs 中的設置 (CREATE_HOME) 為 yes;   

# useradd -M testuser2
# ls /home/
centos  gentoo   nologin    test1  test3
fedora  mageedu  slackware  test2  testuser

        -r, –system:創建一個系統賬戶

    創建系統用的UID在0-999之內。且不創建家目錄

# useradd -r testuser3
# id testuser3
uid=990(testuser3) gid=984(testuser3) groups=984(testuser3)
# ls /home/
centos  gentoo   nologin    test1  test3
fedora  mageedu  slackware  test2  testuser

    -s, –shell SHELL:用戶的登錄 shell 名,默認為留空,讓系統根據 /etc/default/useradd 中的 SHELL 變量選擇默認的登錄shell;

    -u, –uid UID:用戶 ID 的數字值。此值必須為唯一的,除非使用了 -o 選項。此值必須非負,默認使用大于等于UID_MIN,且大于任何其他用戶 ID 最小值。

# cat /etc/shells 
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
# useradd -s /bin/bash -u 3001 testuser4
# grep "testuser4\>" /etc/passwd
testuser4:x:3001:3001::/home/testuser4:/bin/bash

注意:創建登錄用戶時,為其自定義的shell程序必須為可登錄shell,且要位于/etc/shells文件中;

        useradd -D:顯示創建用戶時的默認設置;

useradd -D  選項:設置某默認選項;

    -e, –expiredate  EXPIRE_DATE:用戶賬號的過期期限;過期后會被鎖定;日期以 YYYY-MM-DD 格式指定

    -f, –inactive INACTIVE:密碼過期后,賬戶被徹底禁用之前的天數。0 表示立即禁用,-1 表示禁用這個功能。

# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
# useradd -e 2020-03-08 testuser5
# useradd -f 3 testuser6

    為用戶提供默認配置的配置文件:

/etc/login.defs, /etc/default/useradd

影子口令文件:/etc/shadow

/etc/shadow每個字段的意思:

            登錄名:密碼:最近一次的修改時間:密碼的最短使用期限:密碼最長使用期限:提前警告的天數:非活動期限:賬號的禁用日期:保留字段


usermod命令:修改賬號信息

    -c, –comment  COMMENT

    -d, –home  HOME_DIR:修改家目錄為新的位置,但一般應該同時使用-m選項以保證原家目錄中的文件會移動到新目錄中;

    -g, –gid GROUP

    -G, –groups  GRO    UP1[,GROUP2,…[,GROUPN]]]:修改時會覆蓋原有的附加組;一同使用-a選項,表示為用戶添加新的附加組;

    -l, –login  NEW_LOGIN:修改當前用戶的用戶名;

    -s, –shell  SHELL

    -u, –uid  UID

# grep "mageedu" /etc/passwd
mageedu:x:5015:5015:mageedu:/home/mageedu:/bin/bash
# usermod -c "this is mageedu" -m -d /opt/mageedu -g 5000 -G 6000 -l mageedugood -u 3000 mageedu
# grep "mageedu" /etc/passwd
mageedugood:x:3000:5000:this is mageedu:/opt/mageedu:/bin/bash
# id mageedugood
uid=3000(mageedugood) gid=5000(mage) groups=5000(mage),6000(xueba)

    -L, –lock:鎖定用戶的密碼。這會在用戶加密的密碼之前放置一個“!”

    -U, –unlock:解鎖用戶的密碼。這將移除加密的密碼之前的“!”

# grep "mageedu" /etc/shadow
mageedugood:$6$MKpxQ.kL$o6IBhP9uXHlccwXLUubV.Xp.k4KVJ5mTEtPtDeyoz4O38FRq1wuiyH1vyYlHEy9uqRt7a1Mzzf0bCnCKrtxHL/:16868:0:99999:7:::
# usermod -L mageedugood
# grep "mageedu" /etc/shadow   #此處可以看到鎖定后在密碼前面有一個!號
mageedugood:!$6$MKpxQ.kL$o6IBhP9uXHlccwXLUubV.Xp.k4KVJ5mTEtPtDeyoz4O38FRq1wuiyH1vyYlHEy9uqRt7a1Mzzf0bCnCKrtxHL/:16868:0:99999:7:::
# usermod -U mageedugood
# grep "mageedu" /etc/shadow
mageedugood:$6$MKpxQ.kL$o6IBhP9uXHlccwXLUubV.Xp.k4KVJ5mTEtPtDeyoz4O38FRq1wuiyH1vyYlHEy9uqRt7a1Mzzf0bCnCKrtxHL/:16868:0:99999:7:::

userdel命令:刪除用戶賬號

    userdel [選項]  登錄名

    -r, –remove:用戶主目錄中的文件將隨用戶主目錄和用戶郵箱一起刪除

# userdel -r mageedugood
# id mageedugood
id: mageedugood: no such user
# ls /home/  #加上-r選項后同時刪除用戶的家目錄以及用戶郵箱
centos  gentoo   slackware  test2  testuser   testuser5
fedora  nologin  test1      test3  testuser4  testuser6
# userdel test1
# ls /home/   #未加-r可以找到test1用戶的家目錄
centos  gentoo   slackware  test2  testuser   testuser5
fedora  nologin  test1      test3  testuser4  testuser6
# id test1
id: test1: no such user

passwd命令:密碼管理命令

(1) passwd:修改自己的密碼;

(2) passwd  username:修改其它用戶的密碼,僅root有此權限;

密碼復雜度:

    (1) 不能少于8個字符;

    (2) 不能使用與過去的密碼太相似的密碼;

    (3) 應該使用四類字符中的至少三類;

# passwd test2
Changing password for user test2.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.

選項:

    -l:鎖定密碼

    -u:解鎖解密

    -d:清除密碼

# grep "test2" /etc/shadow
test2:$6$9E3j7rHK$XBRQVO0SVqivKXi7gHTadSjAkjpZz72YsGa60xHK.uUQlnHhsD8w4ttT466ADR9AuXz8KrBWhxRfnGHeFGXiZ/:16868:0:99999:7:::
# passwd -l test2
Locking password for user test2.
passwd: Success
# grep "test2" /etc/shadow
test2:!!$6$9E3j7rHK$XBRQVO0SVqivKXi7gHTadSjAkjpZz72YsGa60xHK.uUQlnHhsD8w4ttT466ADR9AuXz8KrBWhxRfnGHeFGXiZ/:16868:0:99999:7:::
# passwd -u test2
Unlocking password for user test2.
passwd: Success
# grep "test2" /etc/shadow
test2:$6$9E3j7rHK$XBRQVO0SVqivKXi7gHTadSjAkjpZz72YsGa60xHK.uUQlnHhsD8w4ttT466ADR9AuXz8KrBWhxRfnGHeFGXiZ/:16868:0:99999:7:::
# passwd -d test2
Removing password for user test2.
passwd: Success
# grep "test2" /etc/shadow
test2::16868:0:99999:7:::

    與usermod不同的是,passwd在鎖定時密碼前面有兩個!!號

特殊用法:可以避免交互式

    –stdin:從標準輸入接收密碼;

echo "PASSWORD" | passwd  –stdin  USERNAME

# echo "mageedu"|passwd --stdin test2
Changing password for user test2.
passwd: all authentication tokens updated successfully.

gpasswd命令:為組添加密碼

    組密碼文件:/etc/gshadow

gpasswd [選項] group

    -a USERNAME:把用戶添加至組中;

    -d USERNAME:從此組中移除此用戶;

# gpasswd -a test3 xueba
Adding user test3 to group xueba
# grep "xueba" /etc/gshadow
xueba:$6$bxtP5/lZt$umET9D6NeQrdWDGNG0LfpUQiJ5Poq8Xa0GoaDQqJFvqLVm3GWrCxOtDnCXbGjZngS4S7lumQE9hW18DgWPBrm.::test2,test3
# gpasswd -d test2 xueba
Removing user test2 from group xueba
# grep "xueba" /etc/gshadow
xueba:$6$bxtP5/lZt$umET9D6NeQrdWDGNG0LfpUQiJ5Poq8Xa0GoaDQqJFvqLVm3GWrCxOtDnCXbGjZngS4S7lumQE9hW18DgWPBrm.::test3

newgrp命令:登錄到一個新組

chage命令:修改用戶賬號的各種期限;

$ touch testfile
$ ll testfile 
-rw-rw-r-- 1 test2 test2 0 Mar  8 12:43 testfile
$ newgrp xueba
$ touch testfile2
$ ll testfile2 
-rw-r--r-- 1 test2 xueba 0 Mar  8 12:44 testfile2

五、文件系統權限簡介

文件系統文件權限:

    三類用戶:

屬主:owner, u

屬組:group, g

其它:other, o

        所有:All,a

    權限:

r: readable,可讀

w: writable, 可寫

x:excutable, 可執行 

權限管理:

    文件:

r:可獲取文件的數據;

w:可修改文件的數據;

x:可將此文件運行為進程;

    目錄:

r:可使用ls命令獲取其下的所有文件列表;但不可以使用“ls -l”去獲取詳細信息,也不可以cd至此目錄中;

w:可修改此目錄下的文件列表, 即可以在此目錄下創建或刪除文件;

x:可以使用"ls -l“命令來獲取其下的文件的詳細屬性信息,也可cd至此目錄中;


六、文件系統權限管理命令

chmod命令:

作用:change file mode bits

        使用方式:

    chmod [OPTION]… MODE[,MODE]… FILE…

        # 以ugoa的方式來進行授權

    chmod [OPTION]… OCTAL-MODE FILE…

        # 權限數字是數值模式:是從一到四的八進制數字(0-7),分別用4(讀權限) 2(寫權限)             1(可執行權限) 

    chmod [OPTION]… –reference=RFILE FILE…

        # 標識權限參照某文件修改

(1) chmod [OPTION]… MODE[,MODE]… FILE…

MODE:

    賦權表示法:直接操作一類用戶的所有權限位rwx;

        u=

        g=

        o=

        a=

        兩類用戶權限相同:ug=, go=

        不同類的用戶權限不同:u=,g=,o=

# ll
total 4
-rw-r--r-- 1 root root 595 Mar  8 15:57 fstab
# chmod u=r,g=w,o=x fstab 
# ll
total 4
-r---w---x 1 root root 595 Mar  8 15:57 fstab

# ll
total 4
-r---w---x 1 root root 595 Mar  8 15:57 fstab
# chmod a=rw fstab 
# ll
total 4
-rw-rw-rw- 1 root root 595 Mar  8 15:57 fstab

    授權表示法:操作一類用戶一位或多位權限;

        u+, u-

        g+, g-

        o+, o-

        a+, a-

        兩類用戶權限收授機制相同:ug+, ug-, …

        不同類的用戶權限不同:u+,g+,o+

# ll
total 4
-rw-rw-rw- 1 root root 595 Mar  8 15:57 fstab
# chmod u+x,g-w,o-r fstab 
# ll
total 4
-rwxr---w- 1 root root 595 Mar  8 15:57 fstab

# ll
total 4
-rwxr-xr-x 1 root root 595 Mar  8 15:57 fstab
# chmod ug-x,o+w fstab 
# ll
total 4
-rw-r--rwx 1 root root 595 Mar  8 15:57 fstab

# ll
total 4
-r--r--r-x 1 root root 595 Mar  8 15:57 fstab
# chmod a+w fstab 
# ll
total 4
-rw-rw-rwx 1 root root 595 Mar  8 15:57 fstab

(2) chmod [OPTION]… OCTAL-MODE FILE…

    OCTAL-MODE:權限標識

        r:4

        w:2

        x:1

# chmod 755 fstab 
# ll
total 4
-rwxr-xr-x 1 root root 595 Mar  8 15:57 fstab

# chmod 600 fstab 
# ll
total 4
-rw------- 1 root root 595 Mar  8 15:57 fstab

# chmod 644 fstab 
# ll
total 4
-rw-r--r-- 1 root root 595 Mar  8 15:57 fstab

注意:使用數字標識權限時不可省略,例如:

# ll
total 4
-rw-r--r-- 1 root root 595 Mar  8 15:57 fstab
# chmod 60 fstab 
# ll
total 4
----rw---- 1 root root 595 Mar  8 15:57 fstab

這里本來要改文件的屬主為6(rw),文件的屬組沒有權限,但是更改后就變成屬組為6,而屬主與其他用戶沒有權限    

(3) chmod [OPTION]… –reference=RFILE FILE…

    常用選項:

    -R, –recursive:遞歸修改;

# ll mode/
total 4
-rw-r--r-- 1 root root 595 Mar  8 16:13 fstab
# ll mode/ -d
drwxr-xr-x 2 root root 18 Mar  8 16:13 mode/
# chmod -R o+w mode/
# ll mode/ -d
drwxr-xrwx 2 root root 18 Mar  8 16:13 mode/
# ll mode/
total 4
-rw-r--rw- 1 root root 595 Mar  8 16:13 fstab

            –reference=RFILE:RFILE表示參考其權限模型;

# ll
total 4
----rw---- 1 root root 595 Mar  8 15:57 fstab
# ll /etc/fstab 
-rw-r--r--. 1 root root 595 Mar 12  2016 /etc/fstab
# chmod --reference=/etc/fstab /tmp/fstab 
# ll
total 4
-rw-r--r-- 1 root root 595 Mar  8 15:57 fstab

chown命令:修改屬主或屬組

    chown [OPTION]… [OWNER][:[GROUP]] FILE…

    chown [OPTION]… –reference=RFILE  FILE…

        #   此處也是參照文件修改,只是此處修改的是屬主和屬組( 注意:此處不修改權限)

# ll -d mode/
drwxr-xrwx 2 root root 18 Mar  8 16:13 mode/
# chown mageedu.mageedu mode/
# ll -d mode/
drwxr-xrwx 2 mageedu mageedu 18 Mar  8 16:13 mode/

# ll fstab 
-rwxr-xr-x 1 root root 595 Mar  8 15:57 fstab
# chown .mageedu fstab    #此處表示修改屬組(屬組與屬主的分隔符可以用點或者冒號(.或:)
# ll fstab 
-rwxr-xr-x 1 root mageedu 595 Mar  8 15:57 fstab
# chown mageedu. fstab    #此處表示修改屬主
# ll
total 4
-rwxr-xr-x 1 mageedu mageedu 595 Mar  8 15:57 fstab

常用選項:

    -R, –recursive:遞歸修改;

                # 與chmod使用方式相同,此處不在過多介紹

chgrp命令:修改屬組

    chgrp [OPTION]… GROUP FILE…

    chgrp [OPTION]… –reference=RFILE FILE…

# ll fstab 
-rwxr-xr-x 1 mageedu mageedu 595 Mar  8 15:57 fstab
# chgrp xueba fstab 
# ll fstab
-rwxr-xr-x 1 mageedu xueba   595 Mar  8 15:57 fstab

六、下面介紹幾個比較實用的用戶與用戶組相關的Linux命令

chsh命令:修改用戶的登錄shell

    chsh [option] [username]

    -s:指定shell

    -l:查看可用shell列表

chfn命令:修改用戶的詳細信息

    chfn [option] [username]

    -f,–full-name 名字

    -o,–office 辦公地址

    -p,–office-phone 辦公電話

finger命令:用戶信息查找程序

    finger [-lmsp] [user …] [user@host …]

    -s:顯示用戶的列出該用戶的帳號名稱,真實姓名,登入終端機,閑置時間,登入時間以及地址和電話;

pwck:用來驗證/etc/passwd和/etc/shadow文件的內容格式完整性

    pwck [options] [passwd [ shadow ]]

    -s:以用戶id排序文件 /etc/passwd /etc/shadow

    -r:只讀方式運行命令

grpck:用來驗證/etc/group /etc/gshadow件的內容格式完整性

grpck [options] [group [ shadow ]]

    -s:以組id排序文件 /etc/group /etc/gshadow

    -r:只讀方式運行命令


原創文章,作者:Ace,如若轉載,請注明出處:http://www.www58058.com/12664

(0)
AceAce
上一篇 2016-03-20
下一篇 2016-03-20

相關推薦

  • Linux基本命令總結

    一.目錄相關的命令 mkdir rmdir tree cd ls pwd   二.文件相關命令 less cat more tac rev stat head tail cut grep cp mv rm touch rename   三.分析文本的工具 wc sort uniq cut    

    2017-09-10
  • 優云老王(三)談埋點:人生處處有埋點

    說到埋點,的確是用戶最感興趣的話題之一,優云Web產品在內測階段便收到了用戶的各種反饋,反復問我無碼埋點是怎么做的。在此我專門與大家聊聊埋點以及各種實現方案的利弊。 1、埋點的來歷 先說下埋點的來歷,其實在互聯網沒流行起來之前,埋點并不是用來分析用戶行為的,技術人員為了解決某些問題,就在代碼里面加入了些行為邏輯代碼,如果用戶使用產品的過程中出了問題,就生成一…

    2016-09-19
  • 配置NTP服務器

    配置NTP時間服務器 一.安裝ntp軟件 1.檢查是否安裝了ntp相關包。 rpm -qa | grep ntp 2.安裝ntp軟件。 yum -y install ntp 二.參數講解 ignore  :關閉所有的 NTP 聯機服務 nomodify:客戶端不能更改服務端的時間參數,但是客戶端可以通過服務端進行網絡校時。 notrust :客戶端…

    Linux干貨 2016-10-30
  • 18頁PPT帶你深度解讀運維自動化

    一、概述    在前面的文章中,提到【運維的本質—可視化】,在其中著重強調是自動化的可視化和數據化的可視化。在這個文章中,全面解碼看看自動化的極致狀態為什么是可視化?在前面的另外一篇文章【運維平臺全體系介紹】中,也講到運維平臺體系的構成,提出“**及服務”的理念,其中有幾部分和自動化密切相關,比如說資源及服務、配置及服務、架構…

    2015-04-03
  • bash基礎特性(一)之命令歷史,命令補存,路勁補存,命令行展開,命令執行狀態結果和引用

    bash是Unix shell的一種,在1987年由布萊恩·??怂篂榱薌NU計劃而編寫。1989年發布第一個正式版本,原先是計劃用在GNU操作系統上,但能運行于大多數類Unix系統的操作系統之上,包括Linux與Mac OS X v10.4都將它作為默認shell。 Bourne shell是一個早期的重要shell,由史蒂夫·伯恩在1978年前后編寫,并同…

    2017-09-20

評論列表(1條)

  • stanley
    stanley 2016-03-20 11:57

    理論與實戰相結合,很不錯。

欧美性久久久久