1、用戶user
mysql
在Linux系統上,用戶管理是基於用戶名和密碼的方式進行資源的分配,Linux上的用戶即Username/UID分爲如下類別:
算法
管理員:root,0;
sql
普通用戶:1-65535;
shell
普通用戶又分爲:系統用戶和登陸用戶兩種;
vim
系統用戶:1-499(centos6系統)1-999(centos7系統)對守護進程獲取資源進行權限分配;
centos
登陸用戶:500+(centos6系統) 1000+(centos7系統)經過交互式方式登陸;
安全
2、組bash
Linux組:groupname/GID
app
管理員組:root,0
ide
普通組:1-65535
普通組又分爲:系統組和非系統組,咱們一般把非系統組就叫普通組;
系統組:1-499(centos6系統)1-999(centos7系統)
普通組:500+(centos6系統) 1000+(centos7系統)
組的類別
用戶的主組
用戶必須屬於一個且只有一個主組;
組名與用戶名相同,且僅包含一個用戶,也叫私有組;
用戶的附加組(輔助組)
一個用戶能夠屬於零個或多個附加組;
3、安全上下文
運行中的程序:進程(process);
以進程發起者的身份運行:
root:/bin/cat;
wu:/bin/cat;
進程所可以訪問資源的權限取決於進程運行者的身份;
4、用戶和組的配置文件
Linux用戶和組的主要配置文件:
/etc/passwd:用戶及其屬性信息(名稱,UID,主組ID等);
/etc/group:組及其屬性信息;
/etc/shadow:用戶密碼及其相關屬性;
/etc/gshadow:組密碼及其相關屬性;
5、/etc/passwd文件格式
login name:登陸用戶名;
passwd:密碼(x);
UID:用戶身份編號(1000)
GID:登陸默認所在組編號(1000)
GECOS:用戶的詳細說明信息;
home directory:用戶的家目錄
shell:用戶默認使用shell(/bin/bash)
6、/etc/shadow文件格式
登陸用戶名;
加了密的密碼:通常用sha512加密;
最近一次更改密碼的日期:從1970年1月1日期;
密碼再過幾天能夠被變動(0表示隨時可被變動);
密碼再過幾天必須被變動(99999表示永不過時);
密碼過時前幾天系統提醒用戶(默認爲一週);
密碼過時幾天後帳號會被鎖定;
帳戶的過時日期:從1970年1月1日算起,多少天后帳號失效;
保留字段;
7、/etc/group文件格式
組名;
組密碼:一般不須要設定,密碼是被記錄在/etc/gshadow;
組id;
以當前組爲附加組的用戶列表(若是有多個,則用逗號隔開);
8、/etc/gshadow文件格式
組名;
組密碼;
組管理員列表:組管理員的列表,更改組密碼和成員;
以當前組爲附加組的用戶列表(若是有多個,則用逗號隔開);
9、密碼加密
密碼加密解密機制:
加密:明文--->密文
解密:密文--->明文
單向加密:提取數據的指紋;
算法有:md5,sha1,sha224,sha256,sha384,sha512;
密碼在加密過程當中存在雪崩效應,所謂雪崩效應是指初始的條件的微小變更,將會引發結果的巨大改變;
更改加密算法:authconfig - -passalgo=sha512 - -update
Linux系統當中的密碼採用定長格式輸出,以下: $6$G.oHUezroD7c.nab$.nlbNZ1IwrA9FabkBLMTFOjMGlu04mZmROXm5HdA5pfK9GLw36hr5KvGmNAuT2eq1ikz8ileDgp.o9u15BW5e0
其中,
$:爲分隔符;
6:表示加密算法;
G.oHUezroD7c.nab:表示salt;
密碼的複雜性策略
1 使用數字、大寫字母、小寫字母及特殊字符中至少3種;
2 足夠長;
3 使用隨機密碼;
4 按期更換,不要使用最近使用過的密碼;
10、useradd命令
useradd:建立用戶
格式:useradd [OPTION] login
OPTION:
-u UID;
-o:配合-u選項,不檢查UID的惟一性;
-g GID:指明用戶所屬基本組,可爲組名,也能夠GID;
-c "COMMENT":用戶的註釋信息;
-d HOME_DIR:以指定的路徑爲家目錄;
-s SHELL:指明用戶的默認shell程序,可用列表在/etc/shells文件中;
-G GROUP1 [GORUP2...]:爲用戶指明附加組,組必須事先存在;
-N:不建立私用組作主組,使用user組作主組;
-r:建立系統用戶(centos6:ID<500,centos7:ID<1000)
eg1:useradd tom(建立用戶時不設置密碼系統默認不讓登入,在/etc/shadow文件裏用兩個!!表示)
eg2:也能夠用命令設置不讓用戶登入,usermod -L tom(加鎖,不讓tom用戶登入);usermod -U tom(解鎖),若是tom用戶沒有設置密碼,使用-U解鎖時會有個報錯信息,給tom設置個密碼就好了;
eg3:useradd -u 1234 zhang:建立zhang用戶並制定UID;getent passwd root:查看指定用戶配置文件信息(getent=cat /etc/passwd)
eg4:useradd -ou 1234 wang(不檢查用戶UID惟一性)
eg5:useradd -g wang li(指明用戶所屬組);groups li:查看用戶屬於哪一個組
eg6: useradd -G wang,root,bin zhao(指明用戶附加組)
eg7:useradd -d /testdir/zhou zhou(指明用戶家目錄)
ge8: useradd -s /sbin/nologin mysql(禁止用戶登陸)
eg9:useradd -s /bin/csh hehe(指明用戶shell類型)
eg10: useradd -rs /sbin/nologin httpd(建立系統用戶並禁止登錄),建立系統用戶不會生成家目錄;
eg11: useradd -N haha(指明不和用戶名同樣的組作主組,使用user作主組)
eg12: useradd -c "welcome to xix space" xixi(用戶註釋信息)
11、新建用戶相關文件和命令
1 /etc/skel:用戶家目錄的模板文件;
2 /etc/default/useradd:建立用戶時的默認屬性在文件中用定義;可使用useradd -D(至關於cat /etc/default/useradd)來修改默認設置,例如:useradd -D -S /bin/csh(修改系統默認shell);
3 /etc/login.defs:定義一些密碼的最小有效期、密碼到期默認時間、密碼最大有效期等;
4 newusers:批量建立用戶,格式要和/etc/passwd配置文件同樣;
4.1 vim user.txt
4.2 添加用戶,如圖所示:
4.3 newusers user.txt(批量建立用戶)
5 chpasswd:批量修改用戶口令
5.1 vim pass.txt
5.2 添加用戶名和密碼,格式爲username:passwd,如圖所示:
5.3 cat pass.txt | chpasswd(批量修改用戶口令);
5.4 用剛建立的用戶登陸時能夠登錄進去,例如:user3,可是家目錄缺乏一些文件,運行cp -r /etc/skel/. /testdir/user3或cp -r /etc/skel/.[^.]* /testdir/user3,退出從新登陸便可;
12、usermod命令
usermod:修改用戶屬性
格式:usermod [OPTION] login
OPTION:
-u UID: 新UID;
-g GID: 新基本組;
-G GROUP1[,GROUP2,...[,GROUPN]]]:新附加組,原來的附加組將會被覆蓋;若保留原有,則要同時使用-a選項,表示append;
-s SHELL:新的默認SHELL;
-c 'COMMENT':新的註釋信息;
-d HOME: 新家目錄不會自動建立,原家目錄中的文件不會同時移 動至新的家目錄;若要建立新家目錄並移動原家數據,同時使用-m選項;
-l login_name: 新的名字;
-L: lock指定用戶,在/etc/shadow 密碼欄的增長 !;
-U: unlock指定用戶,將 /etc/shadow 密碼欄的 ! 拿掉;
-e YYYY-MM-DD: 指明用戶帳號過時日期;
-f INACTIVE: 設定非活動期限;
示例:
eg:
[root@centos7home]#usermod -u2017 -g wang -G root,bin -s /bin/csh -d /testdir/gentoohome -m-l gentooboom -e 2017-07-31 -f 5 gentoo
[root@centos7 home]#getent passwd gentooboom
gentooboom:x:2017:1235:Gentoo dir:/testdir/gentoohome:/bin/csh
[root@centos7 home]#groups gentooboom
gentooboom : wang root bin
[root@centos7home]# getent shadow gentooboom
gentooboom:!!:17378:0:99999:7:5:17378:
[root@centos7 home]#usermod -G "" gentooboom ###清空附加組
[root@centos7 home]#groups gentooboom
gentooboom : wang
十3、userdel命令
Usheredl:刪除用戶
格式:usheredl [OPTION]… login
OPTION:
-r:刪除用戶家目錄;
十4、id命令
Id:查看用戶相關信息;
Id [OPTION]… [user]
-u:UID
-g:GID
-G:Groups
-n:Name
十5、su命令
Su:切換用戶或其餘用戶身份執行命令;
格式:so [OPTIONS…] [-] [user [rags…]]
切換用戶的方式:
Su username:非登陸時切換,即不會讀取目標用戶的配置文件,不改變當前工做目錄;
Su - username:登陸式切換,會讀取目標用戶的配置文件,切換至家目錄,徹底切換;
root so至其餘用戶無需密碼,非root用戶切換時須要密碼;
OPTION:
-l –login:指定登陸用戶名
eg:su -l username 至關於su - username
十6、Passwd命令
Passwd設置密碼,僅root用戶權限
格式:passwd [OPTIONS] username
Passed:修改本身的密碼
OPTION:
-l:鎖定指定用戶
-u:解鎖指定用戶
-e:強制用戶下次登陸修改密碼
-n middays:指定最短使用期限;
-x maydays:最大使用期限;
-w warn days:提早多少天開始警告;
-I inactive days:非活動期限;
- -stdin:從標準輸入接收用戶密碼;
eg:echo centos7 | passwd - -stdin username
十7、chage命令
chage:修改用戶密碼策略
格式:chage [OPTION]… LOGIN
OPTION:
-d LAST_DAY(上一次更改的日期)
-E: --expire date EXPIRE_DATE(帳號到期日期)
-I, --inactive INACTIVE(非活動期限)
-m, --middays MIN_DAYS(密碼可更改的最小天數)
-M, --maydays MAX_DAYS(保持密碼有效的最大天數)
-W, --warn days WARN_DAYS(用戶密碼到期前,提早收到警告信息天數)
–l,顯示密碼策略
示例:
Change -d 0 tom 下一次登陸強制重設密碼
change -m 0 –M 42 –W 14 –I 7 tom
change -E 2016-09-10 tom
十8、groupadd命令
groupadd:建立組
格式:groupadd [OPTION]… group name
OPTION:
-g GID:指明GID號
-r:建立系統組;
Centos6:ID<500
Centos7:ID<1000
十9、groupmod命令
groupmod:組屬性修改
格式:groupmod [OPTION]… group
OPTION:
-n group_name:新名字
-g GID:新的GID
eg1:修改組名
二10、groupdel命令
groupdel:刪除組
格式:groupdel GROUP
二11、gpasswd命令
gpasswd:更改組密碼
格式:gpasswd [OPTION] GROUP
OPTION:
-a user:將user添加至指定組中;
-d user:從指定組中移除用戶user
-A user1,user2…:設置有管理權限的用戶列表
eg1:添加用戶到組裏
二12、newgrp命令
newgrp:臨時切換基本組
若是用戶本不屬於此組,則須要密碼;
二十3、groupmems命令
groupmems:查看和更改組成員
格式:groupmems [OPTION] [action]
OPTION:
-g, --group group_name 更改成指定組 (只有root)
Actions:
-a, --add username 指定用戶加入組
-d, --delete username 從組中刪除用戶
-p, --purge 從組中清除全部成員
-l, --list 顯示組成員列表
groups [OPTION]… [USERNAME]... 查看用戶所屬組列表
eg1:查看組成員
eg2:向組裏添加用戶
eg3:刪除組裏的用戶
eg4:刪除組裏全部用戶
二十4、chown命令
chown:修改文件的屬主和屬組
格式:chown [OPTION]…[OWNER] [: [GROUP]] FILE…
用法:
OWNER
OWNER: GROUP
: GROUP
命令中的冒號可用.替換;
-R: 遞歸
chown [OPTION]... --reference=RFILE FILE...
二十5、chgrp命令
chgrp:修改文件的屬組
格式:chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
-R 遞歸
注:chown只有root才能執行;chgrp命令只有root、文件全部者執行,文件全部者可將之改成文件全部者所屬的組;
二十6、文件權限
文件的權限主要針對三類對象進行定義:
owner: 屬主,u
group: 屬組,g
other: 其餘,o
每一個文件針對每類訪問者都定義了三種權限:
r: Readable
w: Writable
x: executable
文件和目錄各個權限含義
文件:
r: 可以使用文件查看類工具獲取其內容
w: 可修改其內容
x: 能夠把此文件提請內核啓動爲一個進程
目錄:
r: 可使用ls查看此目錄中文件列表
w: 可在此目錄中建立文件,也可刪除此目錄中的文件,修改目錄中的文件
x: 可使用ls -l查看此目錄中文件列表,能夠cd進入此目錄而且讀目錄內文件內容
X:只給目錄x權限,不給文件x權限;前提是文件自己無x權限,有的話會加;
二十7、chmod命令
chmod:修改文件權限
chmod [OPTION]... OCTAL-MODE FILE...
OPTIOM:
-R: 遞歸修改權限
chmod [OPTION]... MODE [, MODE] ... FILE...
MODE:
修改一類用戶的全部權限: u= g= o= up= a= u=, g=
修改一類用戶某位或某些位權限 u+ u- g+ g- o+ o- a+ a-
chmod [OPTION]... --reference=RFILE FILE...
參考RFILE文件的權限,將FILE的修改成同RFILE;
權限設置示例:
chgrp sales test file
chown rotations test file
chmod u+wx, g-r, o=ax file
chmod -R g+rwX /testier
chmod 600 files
chown mage testifies
二十8、新建文件和目錄的默認權限
unmask值能夠用來保留在建立文件權限
新建文件默認權限:666-umask;
發現結果有奇數權限+1,偶數權限不變;
新建目錄默認權限:777-umask;
非特權用戶的unmask是002;
Root的unmask是022;
unmask –S 模式方式顯示 ;
unmask –p 輸出可被調用 ;
全局設置: /etc./basher 用戶設置:~/. basher;
二十9、Linux文件系統上的特殊文件
SUID(4), SGID(2), Sticky(1)
三種經常使用權限:r, w, x;user group,other
前提:進程有屬主和屬組;文件有屬主和屬組
(1) 任何一個可執行程序文件能不能啓動爲進程:取決發起者對程序文件是否擁有執行權限
(2) 啓動爲進程以後,其進程的屬主爲發起者;進程的屬組爲發起者所屬的組
(3) 進程訪問文件時的權限,取決於進程的發起者
(a) 進程的發起者,同文件的屬主:則應用文件屬主權限
(b) 進程的發起者,屬於文件屬組;則應用文件屬組權限
(c) 應用文件「其它」權限
1.可執行文件上的SUID權限
1.1 任何一個可執行程序文件能不能啓動爲進程:取決發起者對 程序文件是否擁有執行權限;
1.2 啓動爲進程以後,其進程的屬主爲原程序文件的屬主;
1.3 SUID只對二進制可執行程序有效;
1.4 SUID設置在目錄上無心義 ;
1.5 權限設定: chmod u+s FILE... chmod u-s FILE...
2.可執行文件上的SGID權限
2.1 任何一個可執行程序文件能不能啓動爲進程:取決發起者對 程序文件是否擁有執行權限;
2.2 啓動爲進程以後,其進程的屬主爲原程序文件的屬組;
2.3 做用在二進制程序上:用戶運行改程序時,自動繼承該程序所屬組的權限;
2.4 權限設定: chmod g+s FILE... chmod g-s FILE...
eg:
chmod g+s /bin/cat
su - wuzhongcheng
cat /etc/shadow
ll /bin/cat
ll /etc/shadow
3.目錄上的SGID權限
3.1 默認狀況下,用戶建立文件時,其屬組爲此用戶所屬的主組;
3.2 一旦某目錄被設定了SGID,則對此目錄有寫權限的用戶在此目錄中建立的文件所屬的組爲此目錄的屬組;
3.3 一般用於建立一個協做目錄;
3.4 權限設定: chmod g+s DIR... chmod g-s DIR...
4.Sticky(粘滯)位
4.1 具備寫權限的目錄一般用戶能夠刪除該目錄中的任何文件,不管該文件的權限或擁有權;
4.2 在目錄設置Sticky 位,只有文件的全部者或root能夠刪除該文件;
4.3 sticky 設置在文件上無心義;
4.4 權限設定:chmod o+t DIR... chmod o-t DIR...
例如:ls -ld /tmp
drwxrwxrwt 12 root root4096 Nov 2 15:44 /tmp
三10、設定文件特定屬性
chattr +i:不能刪除,更名,更改;
chattr +a:只能增長;
lsattr:顯示特定屬性;
三11、訪問控制列表
1. ACL:AccessControlList,實現靈活的權限管理;
2. 除了文件的全部者,所屬組和其它人,能夠對更多的用戶設 置權限;
3. CentOS7.0默認建立的xfs和ext4文件系統有ACL功能;
4. CentOS7.X以前版本,默認手工建立的ext4文件系統無ACL 功能;
4.1 需手動增長:
tune2fs –o acl/dev/sdb1
mount –o acl/dev/sdb1 /mnt
5. ACL生效順序:全部者,自定義用戶,自定義組,其餘人;
6. 爲多用戶或者組的文件和目錄賦予訪問權限rwx
mount -o acl /directory
getfacl file |directory
setfacl -m u:wang:rwx file|directory
setfacl -Rm g:sales:rwX directory
setfacl -M file.acl file|directory
setfacl -m g:salesgroup:rw file|directory
setfacl -m d:u:wang:rx directory
setfacl -x u:wang file |directory
setfacl -X file.acl directory
eg1:設定特定的用戶不能對文件進行訪問
eg2:設定特定用戶能對文件進行讀和修改
eg3:查看文件設置的acl權限
eg3:刪除用戶acl權限
eg4:清空文件上全部acl權限
eg5:調用已寫好的acl權限文件給指定文件使用(vim acl.txt)
eg6:設置默認acl權限
對文件:
對目錄:
eg7:刪除已寫好文件的acl權限(vim acl.txt)
7. ACL文件上的group權限是mask 值(自定義用戶,自定義組 ,擁有組的最大權限),而非傳統的組權限;
8. getfacl 可看到特殊權限:flags;
9. 默認ACL權限給了x,文件也不會繼承x權限;
10. base ACL 不能刪除 ;
11. setfacl -k dir 刪除默認ACL權限;
12. setfacl -b file1清除全部ACL權限 ;
13. getfacl file1 | setfacl--set-file=-file2 複製file1 的acl權限給file2;
14. mask隻影響除全部者和other的以外的人和組的最大權限 Mask須要與用戶的權限進行邏輯與運算後,才能變成有限的權限(Effective Permission)
15. 用戶或組的設置必須存在於mask權限設定範圍內纔會生效。
setfacl -m mask::rx file
示例:(與mask權限爲準,只能小於或等於mask權限)