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
文件和文件夾權限說明
- 文件:
- r:可獲取文件的數據;
- w: 可修改文件的數據;
- x:可將此文件運行為進程;
- 目錄:
- r:可使用ls命令獲取其下的所有文件列表;
- w: 可修改此目錄下的文件列表;即創建或刪除文件;
- 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 用戶組權限講解