Linux 用戶管理

描述:

     用戶類型分爲管理員(root)和普通用戶(user,其中普通用戶又可以分爲系統用戶和登錄用戶。而用戶標識是根據其ID來區分的,簡稱爲UID,每個用戶所對應的ID都不同,也是唯一的,就如同每個人的×××號是不同的。每個用戶的UID及其它信息存放於系統的/etc/passwd文件裏,名稱解析庫,可用cat /etc/passwd命令查看。

[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
ping:x:500:500::/home/ping:/bin/bash

共有7個字段,每個字段之間用“:”分隔,每個字段所表示的含義爲:

    root:用戶名

    X:加密後的密碼(也可以是佔位符X

    0:用戶的ID

    0:用戶所屬主組的GID

    root:註釋信息

    /root:用戶的家目錄

    /bin/shell:用戶登錄時默認shell程序


Linux系統採用16bints二進制數字來爲用戶提供UID0-65635)。

管理員UID0     普通用戶UID1-65635

    系統用戶UID1-499Centos6,1-999Centos7

    登錄用戶UID500-60000Centos6),1000-60000Centos7

每個用戶都有各自的組,簡稱爲:group。每個組也有其對應的ID,也是唯一的,簡稱爲GID。每個用戶的GID及其它信息存放於系統的/etc/group文件裏,名稱解析庫,可用cat /etc/group命令查看。

[root@localhost ~]# cat /etc/group
root:x:0:gentoo
bin:x:1:bin,daemon,gentoo
ping:x:500:

共有4個字段,每個字段之間用“:”分隔,每個字段的含義爲:

root:用戶組名稱

X:加密後的組密碼

0:所屬組的GID

root:此用戶組支持的賬號名稱

其中rootGID0

每個用戶所屬的組按照不同的分類方法可分爲以下幾類:

1,管理員組和普通用戶組。其中普通用戶組又分爲系統組和登錄組

   管理員組GID0    普通用戶GID1-6535

2,用戶的基本組和附加組

3,私有組(組名同用戶名,且只包含一個用戶)

   公共組(組內包含了多個用戶)

用戶如果需要登錄主機以取得shell的環境來工作時,必須要在計算機前面利用tty1~tty7的終端機提供的login接口,並輸入其賬號與密碼才能夠登錄。此過程稱爲認證過程。通過比對事先存儲在/etc/passwd/etc/shadow中的信息,與用戶登錄時所提供的信息是否一致。

在系統裏的/etc/shadow文件中存放着用戶的密碼信息,只有管理員root才用權限查看

[root@localhost ~]# cat /etc/shadow
root:$6$FE7Q336W$g/ry4M33OTbPef0/VHR/YwFg9zdA7QBeJGj.jKGw9tkWR3Wk1DMNBykFuNZef/xbSqRSacRD/MQp.Zr5KKK2D.:17008:0:99999:7:::
bin:*:15980:0:99999:7:::

共有9個字段,每個字段之間用“:”分隔,每個字段的含義爲:

1,用戶名:2,加密後的密碼:3,最近一次修改密碼的日期:4,最短使用期限:5,最長使用期限:6,警告天數:7,過期期限:8,賬號失效日期:9,保留字段

wKiom1ef_pCjUicRAAEg-XheatI387.png

用戶組的密碼信息存放於系統/etc/gshadow中,只有管理員root纔有權限查看,可使用cat /etc/gshadow命令查看

[root@localhost ~]# cat /etc/gshadow
root:::gentoo
ping:!::

共有4個字段,每個字段之間用“:”分隔,每個字段含義:

1,用戶組名: 2,密碼列,開頭爲!表示無合法密碼,所以無用戶組管理員: 3,組管理員列表,更改組密碼和成員4,以當前組爲附加組的用戶列表(分隔符爲逗號)


說明:

Passwd命令:修改用戶密碼   用戶密碼文件/etc/shadow

  密碼使用策略:

  1,應該使用隨機密碼

  2,最短長度不低於8

  3,應該包括大寫字母、小寫字母、數字、標點符號四類中的三類

  4,須定期更改

  密碼的加密算法:

  對稱加密、非對稱加密、單向加密

  md5: message digest  128bits

  sha: secure hash alorithm  160bints

  sha: secure hash alorithm  224bints

  sha: secure hash alorithm  256bints

  sha: secure hash alorithm  384bints

     sha: secure hash alorithm  512bints

 passwd [OPTIONS] UserName:  修改指定用戶的密碼,僅root 用戶權限

 passwd:  修改自己的密碼;

   常用選項:

      -l: 鎖定指定用戶

      -u: 解鎖指定用戶

      -d:清除用戶密碼

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

      -n mindays:  指定最短使用期限

      -x maxdays :最大使用期限

      -w warndays :設置警告期限

      -i inactivedays :設定非活動期限;

      --stdin :從標準輸入接收用戶密碼;

      echo " PASSWORD " | passwd --stdin USERNAME


示例:

1,修改用戶自己的密碼:

[root@localhost ~]# passwd
Changing password for user root.
New password: 
BAD PASSWORD: it is WAY too short
BAD PASSWORD: is too simple
Retype new password: 
passwd: all authentication tokens updated successfully.

2,清除指定用戶密碼

[root@localhost ~]# passwd -d ping
Removing password for user ping.
passwd: Success

3,從標準輸入接受用戶密碼

[root@localhost ~]# echo "123456" | passwd --stdin ping
Changing password for user ping.
passwd: all authentication tokens updated successfully


Useradd命令:添加新用戶  (具體用法可參考man useradd

[root@localhost~]# useradd [option] login

  其中選項有:

  -u, --uid UID 指定用戶的UID

  -g, --gid GRIOUP 指定基本組ID,但此組須事先存在

  -G--groups GROUP1[,GROUP2,..] 指明用戶所屬的附加組,多個組之間用“,”分隔,添加附加組須事先存在

  -c, --comment COMMENT 指明註釋信息

  -d,--home HOME-DIR 以指定的路徑爲用戶的家目錄;通過複製/etc/skel此目錄並重命名實現,指定的家目錄路徑若事先存在,則不會爲用戶複製環境配置文件

  -s,--shell SHELL 指定用戶的默shell,可用的所有shell列表存儲於/etc/shells文件中

  -r,---system 創建系統用戶  

注意:創建用戶時的諸多默認設定配置文件爲/etc/login.defs

  -D,  顯示創建用戶的默認配置

  -D+選項: 修改默認選項的值修改的結果保存於/etc/default/useradd文件中

示例:創建新用戶user50, uid爲555,註釋信息爲“hello user50", 家目錄爲/home/user50,

    shell爲/bin/bash

[root@localhost ~]# useradd -u 555  -G gentoo -c "hello user50" -s /bin/bash user50
[root@localhost ~]# id user50;grep user50 /etc/passwd
uid=555(user50) gid=555(user50) groups=555(user50),501(gentoo)
user50:x:555:555:hello user50:/home/user50:/bin/bash


新建用戶的相關文件和命令:

/etc/default/useradd

/etc/skel/*

示例:批量創建完用戶後,需將/etc/skel/*下的文件複製到該用戶的家目錄下

[root@localhost ~]# cp -r /etc/skel/.[^.]* /testdir/a
[root@localhost ~]# su - a
[a@localhost ~]$ ls -a
.  ..  .bash_logout  .bash_profile  .bashrc  .gnome2  .mozilla

/etc/login.defs

newusers passwd 格式文件 批量創建用戶

示例:創建用戶a,b,c,d,e,f五個用戶

[root@localhost ~]# vim user.txt
[root@localhost ~]# cat user.txt
a:x:2000::hello a:/testdir/a:/bin/bash
b:x:2000::hello b:/testdir/b:/bin/bash
c:x:2000::hello c:/testdir/c:/bin/bash
d:x:2000::hello d:/testdir/d:/bin/bash
e:x:2000::hello e:/testdir/e:/bin/bash
[root@localhost ~]# newusers user.txt
[root@localhost ~]# tail -5 /etc/passwd
a:x:2000:2000:hello a:/testdir/a:/bin/bash
b:x:2000:3011:hello b:/testdir/b:/bin/bash
c:x:2000:3012:hello c:/testdir/c:/bin/bash
d:x:2000:3013:hello d:/testdir/d:/bin/bash
e:x:2000:3014:hello e:/testdir/e:/bin/bash

chpasswd 批量修改用戶口令

示例:修改上面五個用戶的密碼

[root@localhost ~]# vim pass.txt
[root@localhost ~]# cat pass.txt
a:a123
b:b123
c:c123
d:d123
e:e123
[root@localhost ~]# cat pass.txt | chpasswd
[root@localhost ~]# tail -5 /etc/shadow
a:$6$zksrb/hGnN./ro.c$Tz8eyweWg6u0r.U8Tz5eC8M0SsUJIdhwdvyuLEwEzRxpxz9sC9ZTRyw5.2J.RVkjuUZIoVHJErSIiKqgSx31I.:14101:0:99999:7:::
b:$6$ZrgX2L9cD$Sz4dNtMuwJRhBrRZYbIWlz3JQ2QvFRmUZVHtnh6yw0GOfnfXyF2PA32RSK7ERa/JmEYcxJHGQQM5XZs.MaPP./:14101:0:99999:7:::
c:$6$A7zZB6kmIGQn3QG/$zeBLSC1Ph3jemx9JURRHL2nsCd8CivcVxJsNUWlkBHKqlC/k1ebXzmJQXZkPMmyCsTcrBM7vyKbH72ABiGTOl0:14101:0:99999:7:::
d:$6$Q2kk4/9m$nmBglyeL2u8pxbe5.jS2kA1G9Hcoavu6lGHa6YYCWm7i14XFIBDDFL3//LDqzFsetzP2r.wZdU3t6KQZvqzMS.:14101:0:99999:7:::
e:$6$cP1fr/KReDq/$yhTinFy6AaTLXjzdnxSPO1MX2P6uDsZCsr4fX1yLsb5YENjQgpcUCsjaMyEKFHHC5kwJb.aFrXSMwGH7dmjjM0:14101:0:99999:7:::



usermod 命令:修改用戶屬性

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

 示例:修改用戶user50的uid爲450, 附加組爲ping, 註釋信息爲“good luck to you”, 家目錄爲/testdir/user50, shell爲/bin/csh

[root@localhost ~]# usermod -u 450 -G ping -c "good lock to you " -d /testdir/user50 -s /bin/csh user50
[root@localhost ~]# grep user50 /etc/passwd
user50:x:450:555:good lock to you :/testdir/user50:/bin/csh




userdel命令:刪除用戶

   userdel [OPTION]... login

    -r: 刪除家目錄


id命令:顯示用戶的有效ID

  id [option].. [user]

   其中選項有:

    -u:  僅顯示有效UID

    -g:  僅顯示用戶的基本組ID

    -G:  僅顯示用戶所屬的所有組的ID

    -n: 僅顯示用戶名字而非ID

[root@localhost ~]# id user50
uid=450(user50) gid=555(user50) groups=555(user50),500(ping)



su命令switch user  切換用戶 

   登錄式切換:通過讀取目標用戶的配置文件來重新初始化用戶環境

      su - USERNAME

      su -l USERNAME

[root@localhost ~]# su - ping
[ping@localhost ~]$ pwd
/home/ping
[ping@localhost ~]$ echo $USER
ping

   非登錄式切換:不會讀取目標用戶的配置文件進行初始化用戶環境

      su  USERNAME

[root@localhost ~]# su ping
[ping@localhost root]$ ls
ls: cannot open directory .: Permission denied
[ping@localhost root]$ pwd
/root
[ping@localhost root]$ whoami
ping
[ping@localhost root]$ echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[ping@localhost root]$ echo $USER
ping

         -c COMMAND 僅以指定用戶身份運行此處指定的命令

[ping@localhost root]$ su - root -c 'cat /etc/shadow'
Password: 
root:$6$6Sq0.SQE$k6whOyJPZsFPHiJHJY/0PqYJI9sWJ9CWouvCwwPcpkfeL5e1MN/6SAdu6l1uKU.n7Hw0N3QaGzeaiXITfffpB0:14101:0:99999:7:::
bin:*:15980:0:99999:7:::
[ping@localhost root]$

   以某用戶的身份執行完操作後,需exit或者logout命令退出當前終端


groupadd命令:添加組

  groupadd [option] GROUP_NAME

   其中選項有:

    -g, GID  指定GID,默認是上一個組的GID+1

    -r  創建系統組

[root@localhost ~]# grep liming /etc/group
liming:x:3011:


groupmod命令:修改組屬性

  group [option] GROUP

   -g GID  修改GID

   -n NEW_NAME 修改組名

  

  gpasswd命令:修改組密碼

     格式: gpasswd [OPTION] GROUP

      -a user:  user 添加至指定組中;

     -d user:  從指定組中移除用戶user

     -A user1,user2,...:  設置有管理權限的用戶列表

  

  newgrp 命令:臨時切換基本組;如果用戶本不屬於此組,則需要組密碼

 

  groupdel命令:刪除組

  groupdel [option] GROUP

     -g, --group groupname 組更改爲指定組 ( 只有root)

     -a, --add username 指定用戶加入組

     -d, --delete username 從組中刪除用戶

     -p, --purge 從組中清除所有成員

     -l, --list 顯示組成員列表

  示例:刪除liming這個組

[root@localhost ~]# groupdel liming


gpasswd命令:更改組密碼

  格式: gpasswd [OPTION] GROUP

       -a user:  user 添加至指定組中;

       -d user:  從指定組中移除用戶user

       -A user1,user2,...:  設置有管理權限的用戶列表


newgrp 命令:臨時切換基本組;如果用戶本不屬於此組,則需要組密碼


groupmems命令:更改和查看組成員

 格式:groupmems [options] [action]

     options: 

      -g, --group groupname 組 更改爲指定組 ( 只有root)

      Actions:

      -a, --add username 指定用戶加入組

     -d, --delete username 從組中刪除用戶

     -p, --purge 從組中清除所有成員

     -l, --list 顯示組成員列表


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


結束語:

  本篇內容是本人上課總結和整理的內容,若有錯誤或遺漏請各位路過的達人指出!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章