天天看點

Linux使用者與組管理、權限管理、管理指令使用者管理組管理權限管理管理指令

文章目錄

  • 使用者管理
    • 配置檔案
    • 建立使用者
    • 檢視使用者賬号資訊
    • 修改賬戶屬性
    • 删除使用者
    • 切換使用者
      • bash配置檔案
    • 密碼管理
    • 修改使用者密碼期限
    • 密碼生成工具
  • 組管理
    • 建立組
    • 修改組資訊
    • 删除組
    • 給組設密碼
    • 切換組
  • 權限管理
    • 權限的二進制十進制轉換
    • 修改權限
    • 遮罩碼
    • 特殊權限
      • SUID
      • SGID
      • Sticky
    • facl
  • 管理指令

使用者管理

配置檔案

字元段\配置檔案 /etc/shadow /etc/passwd /etc/group
第一個字段 登入名 使用者名 組名
第二個字段 加密後的密碼 密碼占位符 組密碼
第三個字段 最近一次更改密碼的日期 UID GID
第四個字段 密碼的最小使用期限 GID 以目前組為附加組的使用者清單(分隔符為逗号)
第五個字段 密碼的最大使用期限 使用者的描述資訊
第六個字段 密碼警告時間段 使用者家目錄
第七個字段 密碼禁用期 使用者的登入shell
第八個字段 帳号的過期日期
第九個字段 保留字段

例:

jay   :     x    :1000:1000:   jay   : /home/jay :/bin/bash
使用者名  密碼占位符  UID  GID  注釋資訊   使用者家目錄  執行shell
           
  • 每個使用者都有一個ID,就像是我們的身份證号碼,是唯一的
  • root使用者的UID、GID都是0
  • 使用者分為
    • 系統使用者:使用者ID在1-999
    • 登入使用者:使用者ID在1000-60000

建立使用者

useradd

  • 文法:

    useradd

    [選項] 使用者名
  • 常用選項;
    • -u

      指定uid
    • -g

      指定擁護所屬基本組、組名或GID
    • -G 組名

      為使用者添加附加組,附加組必須事先存在
    • -c

      “注釋資訊” 添加注釋資訊
    • -d 目錄

      指定使用者的家目錄。此目錄必須不能事先存在,否則将不會從/etc/skel中複制環境設定檔案
    • -s shell

      指定登入shell
    • -M

      建立使用者時不給其建立家目錄
    • -r

      添加一個系統使用者
[[email protected] test]# id jay  //檢視使用者jay的詳細資訊
uid=1000(jay) gid=1000(jay) 組=1000(jay)
[[email protected] test]# useradd -u 1005 -g jay -G user lili  //建立使用者lili,指定uid為1005,基本組為jay組,附加組為user
[[email protected] test]# id lili
uid=1005(lili) gid=1000(jay) 組=1000(jay),1001(user)
[[email protected] test]# ls /home/
jay  lili  bad
[[email protected] test]# ls /opt/
rh
[[email protected] test]# useradd -d /opt/tom tom  //建立使用者,指定家目錄為/opt/tom
[[email protected] test]# ls /opt/
rh  tom
[[email protected] test]# id tom
uid=1006(tom) gid=1006(tom) 組=1006(tom)
[[email protected] test]# useradd -s /bin/sh lisi  //建立使用者lisi指定執行shell為/bin/sh
[[email protected] test]# su - lisi
-sh-4.2$ 
[[email protected] test]# useradd -M -s /sbin/nologin -r jerry  //建立一個系統使用者jerry不建立家目錄,指定shell不允許登入系統,
[[email protected] test]# id jerry
uid=992(jerry) gid=990(jerry) 組=990(jerry)
[[email protected] test]# ls /home/
jay  lili  lisi  bad
[[email protected] test]# su jerry
This account is currently not available.
[[email protected] test]# vim /etc/login.defs  //預設配置
           
  • 在建立使用者時,會預設建立一個相同名的組,這個組叫私有組也叫基本組
  • 除了基本組,使用者還可以被加到其他組,這個組叫附加組

    建立了一個使用者,我們要怎麼看是否建立成功了呢?這個時候,就會用到

    id

    指令了。

檢視使用者賬号資訊

id

  • 文法:

    id

    [選項] 參數
  • 常用選項:
    • -u

      檢視UID
    • -g

      檢視GID
    • -G

      檢視Groups
[[email protected] test]# id -u jerry
992
[[email protected] test]# id -g jerry
990
[[email protected] test]# id -G jerry
990
           

修改賬戶屬性

usermod

  • 文法:

    usermod

    [選項] 使用者名
  • 常用選項:
    • -u

      修改uid
    • -g

      修改gid
    • -a -G

      添加附加組,不使用-a選項,會覆寫此前的附加組
    • -d -m

      改變使用者家目錄的同時把原來家目錄的檔案移動到新的家目錄中
    • -e YYYY-MM-DD

      指明使用者帳号過期日期
    • -f INACTIVE

      設定非活動期限
    • -L

      鎖定帳号。被鎖定的帳号在/etc/shadow檔案中密碼前面會有一個感歎号
    • -U

      解鎖帳号
[[email protected] test]# id bad  //檢視使用者詳細資訊
uid=1001(bad) gid=1001(user) 組=1001(user)
[[email protected] test]# usermod -u 1005 bad  //修改uid為1005
[[email protected] test]# id bad
uid=1005(bad) gid=1001(user) 組=1001(user)
[[email protected] test]# usermod -g 1000 bad  //修改gid為1000
[[email protected] test]# id bad
uid=1005(bad) gid=1000(jay) 組=1000(jay)
[[email protected] test]# usermod -G user bad  //添加附加組為user
[[email protected] test]# id bad
uid=1005(bad) gid=1000(jay) 組=1000(jay),1001(user)
[[email protected] test]# groupadd a  //建立新組為a
[[email protected] test]# usermod -G a bad  //給使用者bad指定附加組a
[[email protected] test]# id bad
uid=1005(bad) gid=1000(jay) 組=1000(jay),1002(a)
[[email protected] test]# usermod -aG user bad  //再原附加組的基礎上添加附加組
[[email protected] test]# id bad
uid=1005(bad) gid=1000(jay) 組=1000(jay),1001(user),1002(a)
[[email protected] ~]# tail -3 /etc/passwd  //檢視密碼配置檔案
tcpdump:x:72:72::/:/sbin/nologin
jay:x:1000:1000:jay:/home/jay:/bin/bash
bad:x:1005:1000::/home/bad:/bin/bash
[[email protected] ~]# usermod -c "hello bad" bad  //為使用者bad添加注釋資訊
[[email protected] ~]# tail -3 /etc/passwd
tcpdump:x:72:72::/:/sbin/nologin
jay:x:1000:1000:jay:/home/jay:/bin/bash
bad:x:1005:1000:hello bad:/home/bad:/bin/bash
           

删除使用者

userdel

  • 文法:

    userdel

    [選項] 使用者名
  • 選項:
    • -r

      删除使用者的同時删除其家目錄
[[email protected] test]# ls /home/  //檢視家目錄下的目錄裡
jay  lili  lisi  bad
[[email protected] test]# userdel -r lili  //删除使用者,并删除家目錄
[[email protected] test]# ls /home/
jay  lisi  bad
           
如果我們在删除使用者的時候,沒有删除其家目錄,那麼在

/home

目錄下,還是依舊會看到我們建立的使用者的目錄。可以将目錄删除,或者重建立一個同名的使用者,重新删除使用者。

切換使用者

su

切換使用者的方式 特點
su 使用者名 非登入式切換,即不會讀取目标使用者的配置檔案
su - 使用者名 登入式切換,即會讀取目标使用者的配置檔案。完全切換
su - 不指定使用者時預設切換至root使用者
[[email protected] test]# su - jay  //切換jay使用者,并切換到jay的家目錄
上一次登入:日 10月 20 15:45:30 CST 2019:0 上
[[email protected] ~]$ pwd  //檢視目前位置
/home/jay
[[email protected] ~]$ exit
登出
[[email protected] test]# su jay  //切換使用者,不切換目錄
[[email protected] test]$ pwd
/root/test
[[email protected] test]$ su -  //不指定使用者預設為root使用者
密碼:
上一次登入:四 11月  7 00:40:36 CST 2019pts/0 上
[[email protected] ~]# whoami  //檢視目前登入使用者
root
           
  • 文法:

    su - 使用者名 -c '指令'

    • 切換身份執行指令,指令執行結束後又回到原來的身份
[[email protected] ~]# su - bad -c 'touch abc'
[[email protected] ~]# ll /home/bad/
總用量 0
-rw-r--r--. 1 bad jay 0 11月  7 14:07 abc
           
root使用者切換至其他使用者時,是不需要密碼的。但是其他的使用者想要切換别的使用者,需要輸入切換的使用者的密碼

sudo

  • 配置檔案:/etc/sudoers
  • 文法:sudo 選項 指令
  • 選項:
    • -V

      顯示版本編号
    • -h

      會顯示版本編号及指令的使用方式說明
    • -l

      列出目前使用者可以使用的所有sudo類指令
    • -v

      在第一次執行時或是在N分鐘内沒有執行(N預設為5)會問密碼
    • -k

      使認證資訊失效,如果不指定-k,預設認證資訊在5分鐘後失效
    • -b

      将要執行的指令放在背景執行
    • -u

      使用者名 //以指定的使用者名執行指令,預設為root

bash配置檔案

配置檔案類型 配置檔案路徑
全局配置 /etc/profile、/etc/profile.d/*.sh、/etc/bashrc
個人配置 ~/.bash_profile、~/.bashrc
配置檔案類型 功能
profile類 為互動式登入的shell提供配置,用來設定環境變量、運作指令或腳本
bashrc 為非互動式登入的shell提供配置,用來設定本地變量、定義指令别名
在RHCE的考試中,為了保險起見,通常會寫一個腳本,以保證我們所做的服務配置,能夠在機器重新開機之後挂載成功。而這個腳本需要執行就會放在全局配置檔案中,以及指令别名都會涉及到這裡。

密碼管理

passwd

  • 文法:

    passwd

    [選項] username
  • 選項:
    • --stdin

      從标準輸入擷取使用者密碼
    • -l

      鎖定使用者
    • -u

      解鎖使用者
    • -d

      删除使用者密碼
    • -n mindays

      指定最短使用期限
    • -x mandays

      指定最長使用期限
    • -w warndays

      提前多少天開始警告
    • -i inactivedays

      非活動期限,密碼過期後到禁用前的這段時間
這裡沒有舉例,可以自己練習,可以在

/etc/shadow

中檢視修改的使用者的詳細資訊

修改使用者密碼期限

chage

  • 用于修改使用者密碼過期資訊的指令
  • 文法:

    chage

    [選項] username
  • 選項:
    • -d

      最近一次的修改時間
    • -E

      過期時間
    • -I

      非活動時間
    • -m

      最短使用期限
    • -M

      最長使用期限
    • -W

      警告時間
這條指令我用到過的比較少,但是工作應該用的會多一點。

密碼生成工具

openssl

  • openssl

    密碼生成工具
  • 文法:

    openssl

    command [ command_opts ] [ command_args ]
  • 選項:
    • command

      包含标準指令、消息摘要指令、加密指令
    • version

      檢視程式版本号
    • dgst

      提取特征碼
    • passwd

      生成密碼
    • rand

      生成僞随機數
//提取特征碼
[[email protected] ~]# openssl dgst -md5 /etc/fstab
MD5(/etc/fstab)= a977cc5e638d779ed880f3fee6d7067e

//生成密碼 openssl passwd -1 -salt string        //string一般為8位
[[email protected] ~]# openssl passwd -1 -salt hellotom
Password:
$1$hellotom$HpEDmPGqWwhP/eHg0kJHA0

//生成随機數 openssl rand -base64 NUM
//NUM表示随機數的長度
[[email protected] ~]# openssl rand -base64 20
S/q8tjUSBuUNHb+0cgDX66dbvTQ=
           

組管理

建立組

groupadd

  • 文法:

    groupadd

    [選項] groupname
  • 選項:
    • -g GID

      指定GID
    • -r

      添加一個系統組

修改組資訊

groupmod

  • 文法:

    groupmod

    [選項] groupname
  • 選項:
    • -g GID

      指定GID
    • -n groupname

      修改組名

删除組

groupdel

  • 文法:

    groupdel

    groupname

給組設密碼

gpasswd

  • 文法:

    gpasswd

    [選項] group
  • 選項:
    • -a username

      将使用者添加至組
    • -d username

      将使用者從組中删除
    • -r -passwd

      删除組密碼

切換組

newgrp

  • 文法:

    newgrp

    groepname
這條指令我幾乎沒有用過。當你以以一個非root的使用者登入,可以使用這條指令臨時切換到新的基本組,但是需要輸入要切換的基本組的密碼。使用

exit

就可以退出新的基本組,回到目前使用者原本的基本組。

權限管理

那權限怎麼看呢?其實很簡單,在使用

ll

指令的時候,是不是發現檔案顯示一大串?那麼最前面的一列就是。第一個字元表示檔案類型,之後的九位就表示權限。

  • 首先我們要知道,檔案的權限主要針對的對象
    • u

      (owner)屬主,即檔案擁有者
    • g

      (group)數組,即檔案擁有的組
    • o

      (other)其他使用者,即除檔案擁有者及擁有者所屬組之外的所有使用者
  • 每個檔案或者目錄都有三種權限
    • r

      可讀
    • w

      可寫
    • x

      可執行
注意!在RHCSA的題目中,有涉及到設定權限的題,其中有一個坑就是要你給目錄可讀的權限。因為是個目錄,如果可讀,那麼就一定有執行權限,因為你要進入到目錄中去才可以檢視目錄中的内容。

權限的二進制十進制轉換

  • 不要慌,進行進制轉換,是為了幫助我們更好的了解權限
權限 二進制 十進制
000
–x 001 1
-w- 010 2
-wx 011 3
r– 100 4
r-x 101 5
rw- 110 6
rwx 111 7
  • 權限通常有兩種表達方式,一種是用字母

    rwx

    來表示,還有一種就是用十進制數來表示
不要看着這麼多就慌了,記不住怎麼辦?我在剛開始學的時候,權限完全是懵逼的,但是隻要你了解了,也就很簡單。無非就讀寫執行,421。數字表示就是自由組合了。

修改權限

chmod

  • 即change modify,修改
  • 文法:

    chmod

    [選項] 檔案或目錄
  • 選項:
    • -R

      遞歸修改權限,修改目錄及目錄中的檔案權限時需要

chown

  • 即change owner,修改屬主,也可以修改屬組
  • 文法:

    chown 使用者名 檔案名

    //修改屬主
  • 文法:

    chown 使用者名.組名 檔案名

    //修改屬主和屬組,中間有點
  • 選項:
    • -R

      遞歸修改權限
在RHCSA中,會有一道題是需要修改檔案的屬主和屬組的。

chgrp

  • 文法:

    chown

    [選項] 組名 檔案名
  • 選項:
    • -R

      遞歸修改
這條指令我們一般使用的少,一般都是直接使用的

chown

遮罩碼

  • 這個其實就是将檔案的權限進行一個隐藏,能更安全
  • 有個變量叫umask,預設值為0022
  • 檔案最終權限是:666-umask
  • 目錄最終權限是:777-umask

    檔案預設是不能具有執行權限的,如果算得結果有執行權限,則将其權限整體+1

特殊權限

SUID

  • 針對可執行的程式檔案
    • 程式啟動的程序的屬主是程式檔案自身的屬主,不是啟動者為屬主
      • chmod u+s

        檔案
      • chmod u-s

        檔案
      • chmod 4755

        檔案
如果檔案本身擁有執行權限,則顯示SUID為s,否則為S

SGID

  • 針對目錄
    • 使用者建立檔案時,屬組為此使用者所屬的基本組
      • chmod g+s

        目錄
      • chmod g-s

        目錄
      • chmod 2755

        目錄
如果目錄本身擁有執行權限,則顯示SGID為s,否則為S

Sticky

  • 針對目錄
    • 在一個公共目錄,每個人都能建立檔案,删除自己的檔案,但是不能删除别人建立的檔案
      • chmod o+t

        目錄
      • chmod o-t

        目錄
      • chmod 1755

        目錄
如果目錄本身擁有執行權限,則顯示Sticky為t,否則為T
後面兩種權限在RHCSA中都會有相關的題目,需要掌握。
一般不會使用7755權限
           

facl

  • Filesystem Access Control List,檔案系統通路控制清單
  • 文法:

    setfacl

    [選項] 文法 檔案名
    • -m

      設定
      • u:使用者名:權限

      • g:組名:權限

    • -x

      取消特殊權限
      • u:使用者名

      • g:組名

    • -b

      Remove all 即清除所有特殊權限
  • 如果要為某個目錄設定預設的通路控制清單,則設定時在u或g前面加上d
  • setfacl -m d:u:test:rw 檔案名
設定特殊權限也是RHCSA中必考的題目,需要多練習。

管理指令

  • w

    顯示目前系統登入使用者,以及在做什麼
  • sleep

    睡眠
    • sleep 數字
      • s

        秒,預設
      • m

      • h

        小時
      • d

寫腳本為防止上一個指令沒執行完下一指令就開始執行時可以加上sleep表示停頓#秒後再執行後面的指令
  • last

    顯示/var/log/wtmp檔案,顯示使用者登入曆史及系統重新開機曆史
    • -n #

      顯示最近#次的相關資訊
  • lastb

    顯示/var/log/btmp檔案,顯示使用者錯誤的登入嘗試
    • -n #

      顯示最近#次的相關資訊
  • lastlog

    顯示每個使用者最近一次成功登入資訊
    • -u

      使用者名 //顯示特定使用者最近的登入資訊
  • basename

    //顯示路徑基名
[[email protected] test]# ls
abc  test
[[email protected] test]# ll abc 
-rw-r--r--. 1 root root 0 11月  9 10:00 abc
[[email protected] test]# chown jay abc
[[email protected] test]# ll
總用量 0
-rw-r--r--. 1 jay  root 0 11月  9 10:00 abc
drw-------. 2 root root 6 11月  9 09:32 test
[[email protected] test]# chown .jay abc 
[[email protected] test]# ll abc 
-rw-r--r--. 1 jay jay 0 11月  9 10:00 abc
[[email protected] test]# chown root.root
chown: "root.root" 後缺少操作數
Try 'chown --help' for more information.
[[email protected] test]# chown root.root abc 
           
以上内容均屬原創,如有不詳或錯誤,敬請指出。
           
本文作者: 壞壞 本文連結:

https://blog.csdn.net/qq_45668124/article/details/104567687

版權聲明:

本部落格所有文章除特别聲明外,均采用 CC BY-NC-SA 4.0 許可協定。轉載請注明出處!

繼續閱讀