1. 程式人生 > >Linux 用戶組權限講解

Linux 用戶組權限講解

用戶 組 權限

用戶分類
  • 用戶分類
    • 管理員 ID 0
    • 普通用戶 ID 1-65535
      • 系統用戶 ID centos7:1-999 centos6: 1-499
      • 登入用戶 ID centos7:1000-60000 centos6 500-60000
  • 用戶信息表 /etc/passwd

    • 管理員組 gid 0
    • 普通用戶組 gid 1-65535
      • 系統用戶組:gid 1-499(CentOS6), 1-999(CentOS7)
      • 登錄用戶組:gid 500-60000(CentOS6), 1000-60000(CentOS7)
    • 組信息表 /etc/group

認證信息

  • 認證信息
    • 通過比對事先存儲的,與登錄時提供的信息是否一致;
    • password:
      • /etc/shadow
      • /etc/gshadow
    • 加密算法:
      • 對稱加密:加密和解密使用同一個密鑰;
      • 非對稱加密:加密和解密使用的一對兒密鑰; 比對稱大概慢3倍
        • 密鑰對兒:
          • 公鑰:public key 加密
          • 私鑰: private key 解密
      • 單向加密:只能加密,不能解密;提取數據特征碼; 比如md5
        • 定長輸出: 比如md5 32位十六進制
        • 雪崩效應: 改變一點,面目全非
        • 算法:
          • md5: message digest, 128bits 2**128
          • sha , 160bits
          • sha224
          • sha256
          • sha384
          • sha512

/etc/passwd 用戶列表介紹

獲取幫助

[root@localhost ~]# whatis passwd
sslpasswd (1ssl)     - compute password hashes
passwd (1)           - update user‘s authentication tokens

[root@localhost ~]# man 1 passwd
字段解釋:
name password UID GID GECOS directory shell
用戶名 可以是加密的密碼,也可是占位符x; UID 用戶所屬的主組的ID號; 註釋信息 用戶的家目錄 用戶的默認shell,登錄時默認shell程序;
marvin x 1000 1000 marvin /home/marvin /bin/bash

/etc/shadow 用戶賬號信息介紹

獲取幫助:

[root@localhost ~]# whatis shadow
shadow (3)           - 加密密碼文件工具函數
shadow (5)           - 影子化了的密碼文件

字段解釋及設置:

用戶名 加密的密碼 最近一次修改密碼的時間 最短使用期限 最長使用期限 警告期段 過期期限 絕對過期期限
marvin $6$BO6gfCBNbXupeuqH$maRP57l/Uidh ... 17639 0 99999 7 10 --
marvin 按照$分割,第一段表示加密方式6:sha512,第二段是salt,第三段是加密數據 17639 (從1970到上次改密碼天數) 0:表示必需修改密碼,空表示功能不被啟用 至少使用多少天才能再次修改密碼 從最近一次修改時間+最長使用天數 提前7天警告 修改密碼時間+99999+10天後還沒修改,賬號鎖定不能登入,只能改密碼 過期時間
- - passwd -e zander passwd -n 6 zander passwd -x 24 zander passwd -w 29 zander passwd -i 19 zander useradd -e 2018-04-25 zander
- - chage -d 1 zander chage -m 10 zander chage -M 100 zander chage -W 100 zander chage -I 0 zander chage -E 2018-04-25 zander

/etc/group 用戶組介紹

group_name password GID user_list
marvin x /etc/gshadow 1000 marvin 該組的用戶成員;以此組為附加組的用戶的用戶列表

管理命令介紹

groupadd

添加組:

[root@localhost ~]# groupadd mygrp1

添加指定組:

[root@localhost ~]# groupadd   -g 1009 mygrp5

添加系統組:

[root@localhost ~]# groupadd   -r  mygrp6
[root@localhost ~]# groupadd   -r  mygrp7
mygrp6:x:996:
mygrp7:x:995:

添加系統指定組:

[root@localhost ~]# groupadd   -r -g 993  mygrp8
mygrp8:x:993:

[root@localhost ~]# groupadd   -r -g 13  mygrp10
[root@localhost ~]# groupadd   -r   mygrp11
mygrp10:x:13:
mygrp11:x:991:

修改組:

[root@localhost ~]# groupmod -g 1011  mygrp11
[root@localhost ~]# groupmod -n mygrp12  mygrp11

刪除組:

[root@localhost ~]# groupdel mygrp9

useradd

常見選項說明:

-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:創建系統用戶;
-m 創建家目錄,一般自動創建 如果沒有此選項和沒開啟CREATE_HOUME,那麽家目錄不會創建
-M 不創建家目錄

默認創建用戶會添加一個私有組

[root@localhost ~]# useradd zander

zander:x:1001:1002::/home/zander:/bin/bash
zander:!!:17640:0:99999:7:::   #密碼
zander:x:1002:                #組

指定組:組必須存在

[root@localhost ~]# useradd -g 1001  zander1

添加註釋

[root@localhost ~]# useradd -c ‘for test‘  zander2
zander2:x:1003:1003:for test:/home/zander2:/bin/bash

添加附加組

[root@localhost ~]# useradd -g 1001 -G 1002,1003  zander3
[root@localhost ~]# useradd -g 1001 -G 1002,1003  zander34

zander3:x:1004:1001::/home/zander3:/bin/bash

mygrp:x:1001:
zander:x:1002:zander3,zander34     組名:x:id:附加成員
zander2:x:1003:zander3,zander34

指定家目錄

[root@localhost ~]# useradd -d /tmp/zander4 znader4
[root@localhost ~]# cat /tmp/zander4/.bash
.bash_logout   .bash_profile  .bashrc

指定shell

[root@localhost ~]# cat /etc/shells
/bin/sh
/bin/bash               #登入用戶
/sbin/nologin           #不能登入
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin

[root@localhost ~]# useradd -s /usr/sbin/nologin  zander5

marvindeMacBook-Pro:~ marvin$ ssh [email protected]
[email protected]‘s password:
This account is currently not available.
Connection to 192.168.1.102 closed.

創建系統用戶( 不會創建家目錄)

[root@localhost ~]# useradd -r  zander6
zander6:x:998:996::/home/zander6:/bin/bash

不創建家目錄

[root@localhost ~]# useradd -M  zander7

marvindeMacBook-Pro:~ marvin$ ssh [email protected]
[email protected]‘s password:
Could not chdir to home directory /home/zander7: No such file or directory
-bash-4.2$

設置密碼過期期限 不設置永久不過期

[root@localhost ~]# useradd -f 8 zander9
zander9:!!:17640:0:99999:7:8::

設置絕對過期時間

[root@localhost ~]# useradd -e 2018-01-20 zander14

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選項一同使用,用於將原來的家目錄移動為新的家目錄;
-l, --login NEW_LOGIN:修改用戶名;
-s, --shell SHELL:修改用戶的默認shell;
-L, --lock:鎖定用戶密碼;即在用戶原來的密碼字符串之前添加一個"!";
-U, --unlock:解鎖用戶的密碼;

修改家目錄

[root@localhost test]# usermod  -d  /home/test/3 -m  zander11

鎖定

[root@localhost test]# usermod -L zander17

解鎖

[root@localhost test]# usermod -U zander17

更改附加組

[root@localhost test]# usermod -G  1016 zander17

追加附加組

root@localhost test]# usermod -a -G  1016 zander17
[root@localhost test]# id zander17
uid=1016(zander17) gid=1016(zander17) groups=1016(zander17),1015(zander15)

userdel

刪除常用選項r 刪除家目錄

[root@localhost test]# userdel -r zander17
userdel: user zander17 is currently used by process 70106

文件和文件夾權限說明

  1. 文件:
    1. r:可獲取文件的數據;
    2. w: 可修改文件的數據;
    3. x:可將此文件運行為進程;
  2. 目錄:
    1. r:可使用ls命令獲取其下的所有文件列表;
    2. w: 可修改此目錄下的文件列表;即創建或刪除文件;
    3. x: 可cd至此目錄中,且可使用ls -l來獲取所有文件的詳細屬性信息;

說說附加組在文件文件夾中意義

gpasswd 設置附加組密碼 如果附加組沒有密碼,則不在附加組中的用戶無法切換到附加組上

[root@localhost ~]# gpasswd marvin
Changing the password for group marvin
New Password:
Re-enter new password:

普通用戶刪除在附加組目錄下的root文件

[root@localhost tmp]# pwd
/tmp
#test 目錄組屬於zander用戶
[root@localhost tmp]# ll -d test
drwxrwxr-x. 2 root zander 6 Apr 21 15:48 test

[root@localhost tmp]# cd test/
#創建一個root的文件
[root@localhost test]# touch a
[root@localhost test]# ll
-rw-r--r--. 1 root root 0 Apr 21 15:50 a

#切換到marvin用戶
[marvin@localhost test]$ id
uid=1000(marvin) gid=1000(marvin) 組=1000(marvin)
[marvin@localhost test]$ echo 888 >> a
-bash: a: 權限不夠

[marvin@localhost test]$ rm a
rm:是否刪除有寫保護的普通空文件 "a"?y
rm: 無法刪除"a": 權限不夠

#切換到zander組
[marvin@localhost test]$ newgrp zander
密碼:
[marvin@localhost test]$ id
uid=1000(marvin) gid=1006(zander) 組=1006(zander),1000(marvin)

[marvin@localhost test]$ echo 888 >> a
bash: a: 權限不夠

#刪除成功
[marvin@localhost test]$ rm a
rm:是否刪除有寫保護的普通空文件 "a"?y
[marvin@localhost test]$ ls
[marvin@localhost test]$

Linux 用戶組權限講解