天天看點

Linux使用者、組和權限管理(一)

Linux是一個Multi-tasks(多任務)、 Multi-Users(多使用者)的系統

每一個登陸者或使用者都有使用者辨別、密碼(所謂3A)

  所謂的3A:

    Authentication(驗證機制)

    Authorization(授權機制)

    Audition(審計)

組的概念:使用者組,使用者容器;是為了便于使用者權限配置設定

使用者類别:

  管理者:root

  普通使用者:

    系統使用者

    登入使用者

  在linux系統中使用者辨別UserID,簡稱UID

    使用者辨別使用的範圍:

      16bits二進制數字:0-65535(預設16位,可擴充32位)

        管理者:0

        普通使用者:1-65535

          系統使用者:1-499(Cenots6),1-999(Centos7)

          登入使用者:500-60000(Centos6),1000-60000(Centos7)

    名稱解析:

      每一個使用者名都對應一個UID号碼,根據名稱解析庫進行解析:/etc/passwd

組:

  組類别1:

    管理者組

    普通使用者組:

      系統組

      登入組

  組辨別:GroupID, GID

    管理者組:0

    普通使用者組:1-65635

      系統使用者組:1-499(CentOS6), 1-999(CentOS7)

      登入使用者組:500-60000(CentOS6), 1000-60000(CentOS7)

  名稱解析:groupname <--> gid;解析庫:/etc/group

  組類别2:

    使用者的基本組:每個使用者都有自己的組

    使用者的附加組:加入另外組中

  組類别3:

    私有組:組名同使用者名,且隻包含一個使用者;

    公共組:組内包含了多個使用者;

認證資訊:

  通過比對事先存儲的,與登入時提供的資訊是否一緻;

  密碼存放檔案位置:

    使用者:/etc/shadow

    組:/etc/gshadow

  密碼的使用政策:

    1、使用随機密碼;

    2、最短長度不要低于8位;

    3、應該使用大寫字母、小寫字母、數字和标點符号四類字元中至少三類;

    4、定期更換;

  加密算法:

    對稱加密:加密和解密使用同一個密碼;

    非對稱加密:加密和解密使用的一對兒密鑰;

      密鑰對兒:

        公鑰:public key

        私鑰: private key

      非對稱加密是一對的,使用公鑰加密,需要使用與之對應私鑰解密;其可與之起返

    單向加密:隻能加密,不能解密;提取資料特征碼;(定長輸出)

     算法:

        md5: message digest, 128bits

        sha:secure hash algorithm, 160bits

        sha224

        sha256

        sha384

        sha512(512是長度)

    示例:

      [root@centos7 ~]# echo "nihao" | md5sum

       0a34a9366d438e6ac5ae3480d024c4ef  -

       [root@centos7 ~]# echo "abcdefg" | sha512sum

9ab216d2cf3d89df5ba18cd3e3eb390d4ed30a9a0349b71680cc244c7e22cdddabb5a042481b2c6c8d6fabee4f3cb280f02c0c3f27ee66929aa2342f2142750c  -

/etc/passwd:使用者的資訊庫

  name:password:UID:GID:GECOS:directory:shell

    解釋:

      name: 使用者名

      password:可以是加密的密碼,也可是占位符x;

      UID:使用者ID号

      GID:使用者所屬的主組的ID号;

      GECOS:注釋資訊

      directory:使用者的家目錄;

      shell:使用者的預設shell,登入時預設shell程式;

/etc/shadow:使用者密碼(gshadow也是一樣)

  使用者名:加密的密碼:最近一次修改密碼的時間:最短使用期限:最長使用期限:警告期段:過期期限:保留字段

/etc/group:組的資訊庫

  group_name:password:GID:user_list

    user_list:該組的使用者成員;以此組為附加組的使用者的使用者清單;

相關指令:useradd, userdel, usermod, passwd, groupadd, groupdel, groupmod, gpasswd, chage, chsh, id, su

useradd指令:建立使用者

  [root@centos7 ~]# useradd test

  useradd [選項] 登入名

    -u, --uid UID:指定UID;

      [root@centos7 ~]# useradd -u 1500 docker

      docker:x:1500:1500::/home/docker:/bin/bash

    -g, --gid GROUP:指定基本組ID,此組必須要存在,否則報錯;

      [root@centos7 ~]# useradd -g yunwei test2

    -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:指明使用者所屬的附加組,多個組之間用逗号分隔;

      [root@centos7 ~]# useradd -G docker test

      docker:x:1500:test

    -c, --comment COMMENT:指明注釋資訊;

    -d, --home HOME_DIR:以指定的路徑為使用者的家目錄;通過複制/etc/skel此目錄并重命名實作;指定的家目錄路徑如果事先存在,則不會為使用者複制環境配置檔案;

      [root@centos7 sh]# useradd -d /sh/test2 test2

      test2:x:1502:1502::/sh/test2:/bin/bash

    -s, --shell SHELL:指定使用者的預設shell,可用的所有shell清單存儲在/etc/shells檔案中;

      [root@centos7 sh]# useradd -s /bin/sh test2

      test2:x:1502:1502::/home/test2:/bin/sh

    -r, --system:建立系統使用者;

    -M:不建立使用者家目錄

    -f:非活動期限(密碼過期後,使用者徹底禁用時間)

  注意:建立使用者時的預設設定配置檔案為/etc/login.defs (全局配置)

  useradd -D:顯示建立使用者的預設配置;

    [root@centos7 ~]# useradd -D

    GROUP=100

    HOME=/home

    INACTIVE=-1

    EXPIRE=

    SHELL=/bin/bash

    SKEL=/etc/skel

    CREATE_MAIL_SPOOL=yes

  useradd -D 選項: 修改預設選項的值;

    [root@centos7 ~]# useradd -D -s /bin/sh

    SHELL=/bin/sh

    修改的結果儲存于/etc/default/useradd檔案中;

usermod指令:修改使用者屬性

  usermod - modify a user account

  格式:

    usermod [options] 使用者名

  usermod [選項] 登入

    -u, --uid UID:修改使用者的ID為此處指定的新UID;

    -g, --gid GROUP:修改使用者所屬的基本組(此處組必須先存在);

    -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改使用者所屬的附加組;原來的附加組會被覆寫;

    -a, --append:隻能與-G一同使用,用于為使用者追加新的附加組;

    -c, --comment COMMENT:修改注釋資訊;

    -d, --home HOME_DIR:修改使用者的家目錄;使用者原有的檔案不會被轉移至新位置;

    -m, --move-home:隻能與-d選項一同使用,用于将原來的家目錄移動為新的家目錄;

      [root@centos7 sh]# usermod -m -d /sh/test6 -u 10005 test6

      注:要加-u選項,後跟UID和使用者名,否則會報錯

    -l, --login NEW_LOGIN:修改使用者名;

    -s, --shell SHELL:修改使用者的預設shell;

    -L, --lock:鎖定使用者密碼;即在使用者原來的密碼字元串之前添加一個"!";

    -U, --unlock:解鎖使用者的密碼;

userdel指令:删除使用者

  userdel [選項] 登入

    -r:删除使用者時一并删除其家目錄;

groupadd指令:添加組

  groupadd [選項] group_name

    [root@centos7 ~]# groupadd mylist

    -g GID:指定GID;預設是上一個組的GID+1;

      [root@centos7 ~]# groupadd -g 10000 kklist

    -r: 建立系統組;

groupmod指令:修改組屬性

  groupmod [選項] GROUP

    -g GID:修改GID;

      [root@centos7 ~]# groupmod -g 10010 kklist

    -n new_name:修改組名;

      [root@centos7 ~]# groupmod -n kwlist kklist

groupdel指令:删除組

  groupdel [選項] GROUP

    [root@centos7 ~]# groupdel mylist

passwd指令:

  實作功能:

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

    (2) passwd USERNAME:修改指定使用者的密碼,但僅root有此權限;

  選項:

    -l, -u:鎖定和解鎖使用者;

    -d:清除使用者密碼串;

      [root@centos7 ~]# passwd -d kwang

    -e DATE: 過期期限,日期;

    -i DAYS:非活動期限;

    -n DAYS:密碼的最短使用期限;

    -x DAYS:密碼的最長使用期限;

    -w DAYS:警告期限;

    --stdin:(通常腳本使用)

      echo "PASSWORD" | passwd --stdin USERNAME

gpasswd指令:

  組密碼檔案:/etc/gshadow

  設定組密碼:

    [root@test1 ~]# gpasswd 組名稱

  gpasswd [選項] group

    -a USERNAME:向組中添加使用者

      [root@centos7 sh]# gpasswd -a test1 mylist

    -d USERNAME:從組中移除使用者

      [root@centos7 sh]# gpasswd -d test1 mylist

newgrp指令:臨時切換指定的組為基本組;

  newgrp [-] [group]

    -: 會模拟使用者重新登入以實作重新初始化其工作環境;

      不加入"-"隻是臨時切換到指定組

    示例:

      [root@centos7 sh]# su - test1

      [test1@centos7 mylist]$ newgrp mylist

      [test1@centos7 mylist]$ touch 2

      -rw-r--r-- 1 test1 mylist 0 Mar 20 14:27 2

chage指令:更改使用者密碼過期資訊

  chage - change user password expiry information

    chage [選項] 登入名

    -d:上一次更改的日期;0表示第一次登陸強制修改密碼

      [root@centos7 home]# chage -d 0 kwang

    -E:賬号到期的日期;0表示立即過期,-1表示永不過期

      [root@centos7 home]# chage -E 0 kwang

      [root@centos7 home]# chage -E -1 kwang

    -l:列出使用者密碼有效期限資訊

      [root@centos7 home]# chage -l kwang

    -m:密碼可更改的最小天數,零代表任何時候都可以更改密碼

      [root@centos7 home]# chage -m 1 kwang

        Minimum number of days between password change : 1

    -M:密碼保持有效的最大天數

      [root@centos7 home]# chage -M 7 kwang

        Maximum number of days between password change : 7

    -W:使用者密碼到期前,提前收到警告資訊的天數

      [root@centos7 home]# chage -W 5 kwang

        Number of days of warning before password expires : 5

    -I:密碼失效時間後,鎖定賬号的天數

id指令:顯示使用者的真和有效ID; 

  id [OPTION]... [USER]

    -u: 僅顯示有效的UID;

    -g: 僅顯示使用者的基本組ID; 

    -G:僅顯示使用者所屬的所有組的ID;

    -n: 顯示名字而非ID;

su指令:switch user

  登入式切換:會通過讀取目标使用者的配置檔案來重新初始化

    su - USERNAME

    su -l USERNAME

  非登入式切換:不會讀取目标使用者的配置檔案進行初始化

    su USERNAME

  注意:管理者可無密碼切換至其它任何使用者;

  -c 'COMMAND':僅以指定使用者的身份運作此處指定的指令;

   [root@test1 ~]# su - test -c 'ls -l /etc/passwd'

練習1:建立使用者gentoo,UID為4001,基本組為gentoo,附加組為distro(GID為5000)和peguin(GID為5001);

練習2:建立使用者fedora,其注釋資訊為"Fedora Core",預設shell為/bin/tcsh;

練習3:修改gentoo使用者的家目錄為/var/tmp/gentoo;要求其原有檔案仍能被使用者通路;

練習4:為gentoo新增附加組netadmin;

解答1:

[root@centos7 ~]# groupadd -g 5000 distro

[root@centos7 ~]# groupadd -g 5001 peguin

[root@centos7 ~]# useradd -G distro,peguin -u 4001 gentoo

繼續閱讀