用戶管理:
創建用戶、修改用戶屬性、刪除用戶、創建組、修改組屬性、刪除組
權限管理:
密碼管理、修改文件的屬主、修改屬組、修改文件權限
Unix-like:多用戶、多任務
1、Linux系統的多用戶
組與用戶的對應:
一對一、一對多、多對一、多對多
特殊用戶和組:
root/root、nobody/nogroup
用戶名:用戶ID
組:容器:映射用戶羣和訪問權限
權限指派的容器,角色(role)
文件:屬主、屬組
屬主:擁有者
屬組:所屬的組
用戶的類型:
管理員:root,0
普通用戶:1-65535
系統用戶:1-499
可登錄用戶:500-65535
2、用戶管理
2.1、創建用戶
useradd,adduser 創建用戶 用法:useradd USERNAME
創建用戶的時候,系統會同時創建一個與用戶同名的組,這個組是用戶的私有組
以用戶的角度來說,組的類型:
私有組:基本組
額外組:
# cat /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin
注:可以看到每個用戶都是使用冒號(:)隔開的7個段使用man 5 可以看到相關的說明
# export LANG=en #爲了避免裏面出現亂碼,先把文字改爲英文 # man 5 passwd
用戶的屬性:
account:password:UID:GID:GECOS:directory:shell
用戶名:密碼佔位符:UID:GID:註釋信息:家目錄:默認shell
默認法則:
UID:已有最大UID+1
GID:/etc/group中已有最大GID+1,如果沒有給用戶組指定基本組,且其UID相同的GID未被佔用,則GID用UID
註釋信息:空
家目錄:/home/USERNAME
shell:/bin/bash
2.2在創建用戶的時定製用戶屬性
-u UID,有效範圍0-65535 ,不能重複
-g GID,有限範圍已有的GID
# useradd -g 1001 bcde
-G GID,有效範圍已有的GID,可以有多個,用逗號分隔創建附屬組
-c COMMENT:指定註釋信息
# useradd -c "cao yuan lang" gentoo # tail -1 /etc/passwd gentoo:x:1001:1001:cao yuan lang:/home/gentoo:/bin/bash
-d 路徑 -d /path/to/somewhere:指定家目錄
# mkdir /tmp/chen # useradd -d /tmp/chen/chen1 slackware # !tai #tail -1 /etc/passwd slackware:x:1002:1002::/tmp/chen/chen1:/bin/bash
-s /path/to/shell_commend:指定shell
# useradd -s /bin/bash wolf # !tail #tail -1 /etc/passwd wolf:x:1003:1003::/home/wolf:/bin/dash
-r:創建系統用戶,ID號範圍爲1-499之間的用戶;系統用戶的家目錄不會被真正創建
-M:不爲用戶創建家目錄
-m:強行爲用戶創建家目錄
2.3、查看用戶屬性和切換用戶
id 查看用戶屬性
-u:顯示有效用戶uid
-g:顯示有效用戶gid
-un:顯示用戶名稱
-gn:顯示用戶組名稱
# id root uid=0(root) gid=0(root) groups=0(root) # id -u root 0 # id -un root root # useradd user1 # useradd -g 500 user2 # id -un user2 user2 # id -gn user2 user1
finger:查看用戶信息
# yum install finger #安裝finger命令
su(switch user)切換用戶: su USERNAME
su -l USERNAME
su - USERNAME
管理員su到普通用戶時,不需要密碼; 反之,則不行
2.4、修改用戶屬性
usermod:
-u UID 改UID號
-g GID 改基本組
-G GID 改附加組,但 -G 很少獨立使用,經常和 -a 使用,如果不加 -a ,則會覆蓋原來的附加組,加了 -a 則保留原來的額外組(附加組),並創建新的額外組
-c COMMENT 修改註釋信息
-s /PATH/TO/SHELL 修改shell
-l NEW_NAME:改用戶名的登錄名稱
-m -d /path/to/somewhere 修改家目錄,和 -m 一起使用,不使用 -m 只修改家目錄指向,同時使用 -m 選項則把原來家目錄移動爲新的家目錄
# mkdir /tmp/user # usermod -m -d /tmp/user/user1 wolf1 #把用戶wolf1的家目錄/home/wolf1改爲/tmp/user/user1
2.5、刪除用戶
userdel:
userdel [options] USERNAME 只會刪除用戶,不會刪除家目錄
-r 加入-r選項後才能刪除用戶的家目錄
2.6、創建組
groupadd 用法:groupadd GRPNAME
-g GID:創建組的時候爲其制定GID
-r:創建系統組
# cat /etc/group root:x:0: bin:x:1:bin,daemon daemon:x:2:bin,daemon sys:x:3:bin,adm adm:x:4:adm,daemon tty:x:5:
組名:密碼佔位符:GID:以此組爲額外組的用戶列表,用戶詞用逗號分隔
2.7、修改組屬性
groupmod:修改組屬性
-g GID
-n NEW_NAME
2.8、刪除組
groupdel
groupdel GRPNAME
查看有哪些shell可用:
/etc/shells 這裏的shell都是安全shell,所有處於這個文件中的shell都是當前系統中的安全shell
環境變量:SHELL(保存當前用戶的shell)、PATH、HISTFILE
3、權限管理
3.1、密碼管理:
passwd:修改自己的密碼
passwd USERNAME:修改指定用戶的密碼
/etc/shadow 保存密碼的文件
密碼安全策略:
足夠複雜:
1、密碼長度越長越好
2、要包含大寫字母、小寫字母、數字和特殊字符中的至少三類
3、定期更換:不要重複使用此前用過的密碼
passwd
-e:設定過期時間
-n:密碼最短使用天數
-x:最常使用天數
-w:警告天數
-i:非活動時長
-l:鎖定用戶賬號
-u:解除鎖定
# passwd wolf 修改wolf的密碼 # passwd -l wolf 鎖定wolf,使其不能登錄 # passwd -u wolf 解鎖wolf # su - wolf # passwd 修改wolf自己的密碼
/etc/shadow
登錄名:加密的密碼:最近一次修改密碼的時間:密碼最短使用期限:密碼最長使用期限:密碼到期警告天數:賬號的非活動天數:賬號過期期限:預留段
加密機制:
$1$:加密方法
$8位隨機數$:salt
$:密碼
修改密碼時間:從1970年1月1號開始至上次修改密碼時,所經過的天數
賬號的非活動天數:賬號密碼到期後,不立即鎖定,給一定的時間給你緩衝,用戶可以登錄,但登錄後要改密碼,不然就不能訪問
加密方法:
對稱加密:加密和解密使用同一個密鑰:3DES,AES(Advanced Encrption Standard) 密鑰管理及分發功能很差
公鑰加密:也叫非對稱加密,私鑰/公鑰(s/p),公鑰可以從私鑰中提取得到(反之不行) 加密速度慢,但安全性高,通常用於密鑰分發:RSA,DSA
單向加密:提取數據特徵碼,
特性:
1)、無論輸入是多大的數據,其輸出是定長的;
2)、如果輸入的數據一樣,其結果一定一樣;反之,輸入數據微小改變,將引起結果的巨大改變 雪崩效應
3)、算法:md5(message digest),SHA(Secure Hash Algorithm),SHA1
md5:128bits
sha1:160bits
sha-256:256bits
sha-512:512bits
# openssl passwd -l -salt 12345678 redhat #自己指定salt
密鑰屬性的修改:
chage:
-d:修改密碼的最近一次修改時間
-m,--mindays MIN_DAYS:最短使用期限
-M, --maxdays MAX_DAYS:最長使用期限
-W, --warndays WARN_DAYS:警告天數
-I, --inactive INACTIVE:非活動天數
-E, --expiredate EXPIRE_DATE:過期時間
usermod:
-e YYYY-MM-DD:指定賬號過期時間
-f N:表示非活動時長 N 表示天數
gpasswd:給組設定密碼
newgrp GROUP:臨時設定指定的組爲自己的基本組,使用exit退出
3.2、修改文件屬主和屬組
chown [選項] 用戶 文件 修改屬主
chgrp [選項] 組 文件 修改屬組
chown 用戶:組 文件 修改屬主和屬組
chown 用戶.組 文件 修改屬主和屬組
3.3、修改文件權限
文件系統安全模型:
屬主 屬組 其它
u, g, o
---:000 --> 0
--x:001 --> 1
-w-:010 --> 2
-wx:011 --> 3
r--:100 --> 4
r-x:101 --> 5
rw-:110 --> 6
rwx:111 --> 7
3位二進制對應一個8進制
4位二進制對應一位16進制
0,9,A,B,C,D,E,F
F:1111
9:1001
640:rw-r-----
755:rwxr-xr-x
750:rwxr-x---
700:rwx------
600:rw-------
644:rw-r--r--
chmod:change mode 改變文件權限(mode):
chmod [選項] 權限 文件
-R:遞歸修改權限
--refernce=/path/to/somefile FILE
# chmod --reference=/etc first.sh #把first.sh的權限改成etc的權限
權限定義方式:
1)、同時修改三類用戶的權限:8進制數字方式
# chmod 444 first.sh 將三類用戶改爲只讀
2)、修改某一類或某些類用戶的權限:u,g,o,a
u=rw
u= ,g=
ug=
# chmod u=rw[-] first.sh #使主有讀、寫權限, # chmod g=r,o=--- first.sh #使組有讀權限,其它用戶沒有權限
3)、只修改某類用戶的某位或某些爲權限:u,g,o,a
+/-
u+w
[a]+x
[a]-x
g-rw
# chmod g+x first.sh #使組有執行權限
3.4、文件特殊權限
特殊權限、ACL、定時任務
安全上下文:
cat --> /bin/cat
openstack:/bin/cat /etc/fstab
/etc/shadow
openstack,passwd,/etc/shadow
s:suid,set uid,屬主有s權限,意味着任何用戶在執行此程序時,其進程的屬主不再是發起者本人,而是這個程序文件的屬主
s:屬主有執行權限
S:屬主無執行權限
chmod u+s /path/to/somefile
chmod u-s /path/to/somefile
chmod 4644 /path/to/somefile
s:sgid,set gid,屬組有s權限,意味着執行此程序時,其進程的屬組不在是運行者本人所屬的基本組,而是此程序文件的屬組
chmod g+s /path/to/somefile
chmod g-s /path/to/somefile
t:sticky,粘貼位,附加在other的權限上,表現爲t
t:其他用戶原有執行權限
T:其他用戶原無執行權限
chmod o+t /path/to/somefile
chmod o-t /path/to/somefile
u:s
g:s
o:t
ugt:000:0
001:1
010:2
011:3
100:4
101:5
110:6
111:7
chmod 6664 /tmp/a.txt 第一個數字對應ugt,後面三位數字對應文件的權限
umask:0022
ACL:文件訪問控制列表
hadoop:/var/tmp/test.txt
hadoop,hadoop
664:其它,只讀
hadoop希望能夠讓hive寫此文件,他改如何進行:只能修改other的權限有寫權限
acl:用於實現在原有的訪問控制機制之外補充一種文件訪問控制機制
用戶訪問文件:
1)、用戶是否爲文件屬主
2)、用戶是否有特定的訪問控制條目
3)、用戶是否屬於文件屬組
4)、用戶所屬的組是否有特定的訪問控制條目
5)、其它
getfacl /path/to/somewhere:查看文件或目錄的訪問控制列表
setfacl -m u:USERNANE:MODE: /path/to/somewhere:爲USERNAME指定的用戶設定問件/path/to/somewhere具有MODE訪問權限
setfacl -m g:GROUPNANE:MODE: /path/to/somewhere:爲GROUPNAME指定的組設定對文件/path/to/somewhere具有MODE訪問權限
setfacl -x u:USERNANE: /path/to/somewhere:爲USERNAME指定的用戶取消對文件/path/to/somewhere訪問權限
setfacl -x g:USERNANE: /path/to/somewhere:爲USERNAME指定的用戶組取消對文件/path/to/somewhere訪問權限
額外掛載的文件系統默認不支持acl,如果要支持
方法1:
mount -o acl DEVICEMOUNT_POINT
永久有效,需要編輯/etc/fatab,在掛載選項後附加acl選項
方法2:
設定分區的默認掛載選項彙總有acl,掛載時無需再指定acl
tune2fs -o acl DEVICE
取消此默認掛載選項:
tune2fs -o ^aclDEVICE
hadoop:文件/var/tmp/hadoop.txt,664
拒絕hive用戶對此的任何訪問
setfacl -m u:hive:--- /var/tmp/hadoop.txt
複製文件/var/log/messages至/data目錄,其屬主爲root用戶,且有讀寫權限,屬組爲root組,且有讀寫權限,可以被任何人讀取,
可以被gentoo用戶和magedu組讀寫,但centos用戶沒有任何訪問權限
# mkdir /data # cp /var/log/messages /data # chmod 664 /data/messages # setfacl -m u:gentoo:rw /data/messages # setfacl -m g:magedu:rw /data/messages # setfacl -m u:centos:--- /data/messages