Linux用戶權限管理


  • 用戶管理基礎概念:
  • 用戶管理命令使用
  • 權限管理
  • 命令使用

  • 用戶管理基礎概念:
    用戶類別:管理員、普通用戶(系統用戶、登錄用戶)
    組類別:管理員組、普通用戶組(系統用戶組、登錄用戶組)
    組的類別還可以分爲:

    1.用戶的基本組、用戶的附加組
    2.私有組:組名同用戶名,且只包含一個用戶;
    公共組:組內包含了多個用戶;
    • 系統判斷用戶的表示:userID->UID,使用16位二進制數字表示
      管理員:0
      普通用戶:1~65535
      -系統用戶:1-499(centos6),1-999(centos7)
      -登錄用戶:>=500 (centos6),>=1000(centos7)
系統用戶:爲了能夠讓那後臺進程或服務類進程以非管理員的身份運行,通常需要爲此創建多個普通用戶,這類用戶從不用登錄系統,所獲得權限也比較小,比較安全的做法
  • -

    • 組的標識:
      管理員組:0
      普通用戶組:1-65635
      -系統用戶組:1-499(CentOS6), 1-999(CentOS7)
      -登錄用戶組:>=500(CentOS6), >=1000(CentOS7)

    • 用戶和組的信息庫存放位置
      1.用戶的配置信息:/etc/passwd,以冒號:分割7個字段
      Linux用戶權限管理
      2.組的配置信息:/etc/group
      Linux用戶權限管理

    • 用戶認證信息:通過對比事先存儲的,與登錄時提供的信息是否一致;
      密碼存儲:/etc/shadow 、/etc/gshadow
      密碼安全使用策略:
      1、使用隨機密碼;
      2、最短長度不要低於8位;
      3、應該使用大寫字母、小寫字母、數字和標點符號四類字符中至少三類;
      4、定期更換
      Linux用戶權限管理
  • 用戶管理命令使用
    相關命令:useradd, userdel, usermod, passwd, groupadd, groupdel, groupmod, gpasswd, chage, chsh, id, su

    • groupadd 添加組
      語法:
      groupadd [options] group_name
      -g |--gid GID:指定GID號
      -r | --system :創建的是系統組
      -p | --password string :創建組的密碼

    • groupmod:修改組的屬性
      語法:
      groupmod [options] group_name
      -g GID:修改GID號
      -n new_group_name:修改組名

    • groupdel:刪除組
      語法:
      groupdel [options] group_name

    • useradd :創建用戶
      語法:
      useradd [options] user_name
      -u, --uid UID:指定UID;
      -g, --gid GROUP:指定基本組ID,此組得事先存在;
      -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:指明用戶所屬的附加組,多個組之間用逗號分隔;
      -c, --comment COMMENT:指明註釋信息;
      -d, --home HOME_DIR:以指定的路徑爲用戶的家目錄;通過複製/etc/skel此目錄並重命名實現;指定的家目錄路徑如果事先存在,則不會爲用戶複製環境配置文件;
      -s, --shell SHELL:指定用戶的默認shell,可用的所有shell列表存儲在/etc/shells文件中;
      -r, --system:創建系統用戶;
      注意:創建用戶時的諸多默認設定配置文件爲/etc/login.defs

    • usermod :修改用戶屬性
      語法:
      usermod [options] user_name
      -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選項一同使用,用於將原來的家目錄移動爲新的家目錄;
      -l, --login new_user_name:修改用戶名;
      -s, --shell SHELL:修改用戶的默認shell;
      如:添加附加組:把nginx添加到centos附加組
      [root@node3 tmp]# usermod -aG centos nginx
      [root@node3 tmp]# id nginx
      uid=993(nginx) gid=990(nginx) groups=990(nginx),1001(centos)

    • userdel :刪除用戶
      語法:
      userdel [options] user_name
      -r :刪除用戶並刪除其家目錄,若不加r,再添加相同用戶會報錯

    • passwd :修改用戶密碼
      語法:
      passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]
      passwd :表示修改當前用戶密碼
      passwd user_name :修改指定用戶密碼,僅root管理員才能操作,普通用戶只能修改自己且後不能加用戶名
      -d :清除用戶密碼
      -e DATE: 過期期限,日期;
      -i DAYS:非活動期限;
      -n DAYS:密碼的最短使用期限;
      -x DAYS:密碼的最長使用期限;
      -w DAYS:警告期限;
      --stdin : 通過標準輸入方式修改
      通常使用非交互式設置密碼:
      echo “password-string” | passwd --stdin user_name

    • gpasswd :修改組密碼和管理用戶組
      語法:
      gpasswd [options] group_name
      -a user_name :向組中添加成員
      -d user_name :移除組中的成員
      不添加選項表示修改組的密碼,可以實現認證組成員
      如:gpasswd -d centos nginx :把centos添加至nginx組:

    • newgrp :臨時切換指定的組爲基本組
      語法:
      newgrp [-] [group]
      -: 會模擬用戶重新登錄以實現重新初始化

    • id :顯示用戶ID信息
      語法:
      id [options] [user_name]
      -u: 僅顯示有效的UID;
      -g: 僅顯示用戶的基本組ID;
      -G:僅顯示用戶所屬的所有組的ID;
      -n: 顯示名字而非ID;

    • su :switch user切換用戶
      語法:
      su [options] [-] [USER [arg]...]
      登錄式切換:會通過讀取目標用戶的配置文件來重新初始化
      su - user_name
      su -l user_name
      非登錄式切換:不會讀取目標用戶的配置文件進行初始化
      su user_name
      注意:管理員可無密碼切換至任何用戶;
      -c 'COMMAND':僅以指定用戶的身份運行此處指定的命令;

  • 權限管理
    進程安全上下文:進程對文件的訪問權限應用策略:
    進程的屬主與文件的屬主是否相同;如果相同,則應用屬主權限;
    否則,則檢查進程的屬主是否屬於文件的屬組;如果是,則應用屬組權限;
    否則,就只能應用other的權限;
    Linux用戶權限管理
    如圖"第二個色標"的爲權限爲,"."位有特殊權限,有時爲“+”號;

    [root@xt tmp]# ll passwd 
    -rw-r--r--. 1 root root 1173 Dec 28 12:15 passwd
    [root@xt tmp]# setfacl -m u:user1:rwx passwd
    [root@xt tmp]# ll passwd 
    -rw-rwxr--+ 1 root root 1173 Dec 28 12:15 passwd
    [root@xt tmp]# getfacl passwd
    # file: passwd
    # owner: root
    # group: root
    user::rw-
    user:user1:rwx
    group::r--
    mask::rwx
    other::r--

    "第二個色標"的權限位:一個9位,每3位一組從左->右分別爲:user(owner)權限、group權限、other權限
    權限位描述:r :read 、w : write 、x :excute,可以使用八進制表示:分別對應4--2--1,三位一組加權
    比如:rw-rw-r--, rwxrwxr-x, rwxr-x---, rw------, rwxr-xr-x
    664 ,775,750,600, 755

    • 文件和目錄的權限位區別:
      文件:
      r:可獲取文件的數據;
      w: 可修改文件的數據;
      x:可將此文件運行爲進程;

      目錄:
      r:可使用ls命令獲取其下的所有文件列表;
      w: 可修改此目錄下的文件列表;即創建或刪除文件;
      x: 可cd至此目錄中,且可使用ls -l來獲取所有文件的詳細屬性信息;
      *能不能刪除文件並不取決於文件本身權限,而是取決於上一級目錄的權限

      一般文件目錄給予:644/755權限,權限最小化管理

  • 權限管理相關命令使用

    • chmod :修改文件權限位
      語法:
      chmod [OPTION]... MODE[,MODE]... FILE...
      chmod [OPTION]... OCTAL-MODE FILE...
      chmod [OPTION]... --reference=RFILE FILE... :參照文件的權限修改
      選項:-R 遞歸,目錄修改比較有效,子目錄文件也生效;
      一共分爲3類用戶:u :屬主 g: 屬組 o: 其他 a: 表示所有=ugo
      1.chmod [OPTION]... MODE[,MODE]... FILE...
      MODE的表示方法:
      賦權法:直接操作一類用戶的所有權限位rwx;
      u= ,g= ,o= ,a=
      加權法:直接操作一類用戶的一個權限位r,w,x加減
      u-|+ ,g+|- ,o +|-, a +|-
      2.chmod [OPTION]... OCTAL-MODE FILE... 8進式必須要給3位如644 600
      Linux用戶權限管理

    • chown:修改文件的屬主屬組
      語法:
      chown [OPTION]... [OWNER][:[GROUP]] FILE... 使用:或者.分割都可以
      chown [OPTION]... --reference=RFILE FILE...
      -R,--recursive遞歸

    • chgrp:修改屬組關係
      語法:
      chgrp [OPTION]... GROUP FILE...
      chgrp [OPTION]... --reference=RFILE FILE...
      注僅管理員纔可以操作chown/chgrp命令

  • 文件訪問控制列表:facl:file access control lists
    文件的額外賦權機制:在原來的u,g,o之外,另一層讓普通用戶能控制賦權給另外的用戶或組的賦權機制;可以對某一用戶做[拒絕]訪問
    賦權用戶或組:
    setfacl -m u:user_name:MODE file...
    setfacl -m g:group_name:MODE file...
    撤銷權限:
    setfacl -x u:user_name file...
    setfacl -x g:group_name file...
    setfacl -b file...撤銷所有用戶組的權限
    查看權限:
    getfacl file...
    Linux用戶權限管理
    設置遮罩碼:用戶最大獲得權限
    setfacl -m mask::rwx
    [root@xt test]# setfacl -m u:user1:rwx a
    [root@xt test]# getfacl a
    # file: a
    # owner: root
    # group: root
    user::rw-
    user:user1:rwx
    group::r--
    mask::rwx
    other::r--
    [root@xt test]# setfacl -m mask::rx a
    [root@xt test]# getfacl a
    # file: a
    # owner: root
    # group: root
    user::rw-
    user:user1:rwx          #effective:r-x
    group::r--
    mask::r-x
    other::r--
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章