用户、组和权限详解
一、用戶user
????在Linux系統(tǒng)上,用戶管理是基于用戶名和密碼的方式進行資源的分配,Linux上的用戶即Username/UID分為以下類別:
????????管理員:root,0;
????????普通用戶:1-65535;
????普通用戶又分為:系統(tǒng)用戶和登錄用戶兩種;
????????系統(tǒng)用戶:1-499(centos6系統(tǒng))1-999(centos7系統(tǒng))對守護進程獲取資源進行權限分配;
????????登錄用戶:500+(centos6系統(tǒng)) 1000+(centos7系統(tǒng))通過交互式方式登錄;
二、組
????Linux組:groupname/GID
????????管理員組:root,0
????????普通組:1-65535
????普通組又分為:系統(tǒng)組和非系統(tǒng)組,我們通常把非系統(tǒng)組就叫普通組;
????????系統(tǒng)組:1-499(centos6系統(tǒng))1-999(centos7系統(tǒng))
????????普通組:500+(centos6系統(tǒng)) 1000+(centos7系統(tǒng))
????組的類別
????????用戶的主組
????????????用戶必須屬于一個且只有一個主組;
????????????組名與用戶名相同,且僅包含一個用戶,也叫私有組;
????????用戶的附加組(輔助組)
????????????一個用戶可以屬于零個或多個附加組;
三、安全上下文
????運行中的程序:進程(process);
????以進程發(fā)起者的身份運行:
????????root:/bin/cat;
????????wu:/bin/cat;
????進程所能夠訪問資源的權限取決于進程運行者的身份;
四、用戶和組的配置文件
????Linux用戶和組的主要配置文件:
????????/etc/passwd:用戶及其屬性信息(名稱,UID,主組ID等);
????????/etc/group:組及其屬性信息;
????????/etc/shadow:用戶密碼及其相關屬性;
????????/etc/gshadow:組密碼及其相關屬性;
五、/etc/passwd文件格式
????login name:登錄用戶名;
????passwd:密碼(x);
????UID:用戶身份編號(1000)
????GID:登錄默認所在組編號(1000)
????GECOS:用戶的詳細說明信息;
????home directory:用戶的家目錄
????shell:用戶默認使用shell(/bin/bash)
六、/etc/shadow文件格式
????登錄用戶名;
????加了密的密碼:一般用sha512加密;
????最近一次更改密碼的日期:從1970年1月1日期;
????密碼再過幾天可以被變更(0表示隨時可被變更);
????密碼再過幾天必須被變更(99999表示永不過期);
????密碼過期前幾天系統(tǒng)提醒用戶(默認為一周);
????密碼過期幾天后賬號會被鎖定;
????賬戶的過期日期:從1970年1月1日算起,多少天后賬號失效;
????保留字段;
七、/etc/group文件格式
????組名;
????組密碼:通常不需要設定,密碼是被記錄在/etc/gshadow;
????組id;
????以當前組為附加組的用戶列表(如果有多個,則用逗號隔開);
八、/etc/gshadow文件格式
????組名;
????組密碼;
????組管理員列表:組管理員的列表,更改組密碼和成員;
????以當前組為附加組的用戶列表(如果有多個,則用逗號隔開);
九、密碼加密
????密碼加密解密機制:
????????加密:明文--->密文
????????解密:密文--->明文
????單向加密:提取數(shù)據(jù)的指紋;
????算法有:md5,sha1,sha224,sha256,sha384,sha512;
????密碼在加密過程中存在雪崩效應,所謂雪崩效應是指初始的條件的微小變動,將會引起結(jié)果的巨大改變;
????更改加密算法:authconfig - -passalgo=sha512 - -update
????Linux系統(tǒng)當中的密碼采用定長格式輸出,如下: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ????$6$G.oHUezroD7c.nab$.nlbNZ1IwrA9FabkBLMTFOjMGlu04mZmROXm5HdA5pfK9GLw36hr5KvGmNAuT2eq1ikz8ileDgp.o9u15BW5e0??
????其中,
????????$:為分隔符;
????????6:表示加密算法;? ?
????????G.oHUezroD7c.nab:表示salt;
????密碼的復雜性策略
????????1 使用數(shù)字、大寫字母、小寫字母及特殊字符中至少3種;
????????2 足夠長;
????? ? 3 使用隨機密碼;
????????4 定期更換,不要使用最近使用過的密碼;
十、useradd命令
????useradd:創(chuàng)建用戶
????格式: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:不創(chuàng)建私用組做主組,使用user組做主組;
????????-r:創(chuàng)建系統(tǒng)用戶(centos6:ID<500,centos7:ID<1000)
? ? eg1:useradd tom(創(chuàng)建用戶時不設置密碼系統(tǒng)默認不讓登入,在/etc/shadow文件里用兩個!!表示)
????????????????
????eg2:也可以用命令設置不讓用戶登入,usermod -L tom(加鎖,不讓tom用戶登入);usermod -U tom(解鎖),如果tom用戶沒有設置密碼,使用-U解鎖時會有個報錯信息,給tom設置個密碼就行了;
????????????????
????eg3:useradd -u 1234 zhang:創(chuàng)建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(創(chuàng)建系統(tǒng)用戶并禁止登陸),創(chuàng)建系統(tǒng)用戶不會生成家目錄;
????????????????
????eg11:?useradd -N haha(指明不和用戶名一樣的組做主組,使用user做主組)
????????????????
????eg12:?useradd -c "welcome to xix space" xixi(用戶注釋信息)
????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
十一、新建用戶相關文件和命令
? ? 1 /etc/skel:用戶家目錄的模板文件;
? ? 2 /etc/default/useradd:創(chuàng)建用戶時的默認屬性在文件中用定義;可以使用useradd -D(相當于cat /etc/default/useradd)來修改默認設置,例如:useradd -D -S /bin/csh(修改系統(tǒng)默認shell);
? ? 3 /etc/login.defs:定義一些密碼的最小有效期、密碼到期默認時間、密碼最大有效期等;
????4 newusers:批量創(chuàng)建用戶,格式要和/etc/passwd配置文件一樣;
????? ? 4.1 vim user.txt
????????4.2 添加用戶,如圖所示:
???????? ? ?????
????????4.3 newusers user.txt(批量創(chuàng)建用戶)
????5 chpasswd:批量修改用戶口令
????????5.1 vim pass.txt
????????5.2 添加用戶名和密碼,格式為username:passwd,如圖所示:
????????????????????
????????5.3 cat pass.txt | chpasswd(批量修改用戶口令);
????????5.4 用剛創(chuàng)建的用戶登錄時可以登陸進去,例如:user3,但是家目錄缺少一些文件,運行cp -r /etc/skel/. /testdir/user3或cp -r /etc/skel/.[^.]* /testdir/user3,退出重新登錄即可;? ??
十二、usermod命令
????usermod:修改用戶屬性
????格式:usermod [OPTION] login
????OPTION: ? ?????
????????-u UID: 新UID;
????????-g GID: 新基本組;
????????-G GROUP1[,GROUP2,...[,GROUPN]]]:新附加組,原來的附加組將會被覆蓋;若保留原有,則要同時使用-a選項,表示append;
????????-s SHELL:新的默認SHELL;
????????-c 'COMMENT':新的注釋信息;
????????-d HOME: 新家目錄不會自動創(chuàng)建,原家目錄中的文件不會同時移 動至新的家目錄;若要創(chuàng)建新家目錄并移動原家數(shù)據(jù),同時使用-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
?十三、userdel命令
??? Usheredl:刪除用戶
??? 格式:usheredl [OPTION]… login
??? OPTION:
??????? -r:刪除用戶家目錄;
十四、id命令
??? Id:查看用戶相關信息;
??? Id [OPTION]… [user]
??? -u:UID
??? -g:GID
??? -G:Groups
??? -n:Name
十五、su命令
??? Su:切換用戶或其他用戶身份執(zhí)行命令;
??? 格式:so [OPTIONS…] [-] [user [rags…]]???
??? 切換用戶的方式:
??????? Su username:非登錄時切換,即不會讀取目標用戶的配置文件,不改變當前工作目錄;
??????? Su - username:登錄式切換,會讀取目標用戶的配置文件,切換至家目錄,完全切換;
??????? root so至其他用戶無需密碼,非root用戶切換時需要密碼;
??? OPTION:
??????? -l –login:指定登錄用戶名
? ? ? ????? eg:su -l username 相當于su - username
十六、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
十七、chage命令
? ? chage:修改用戶密碼策略
??? 格式:chage [OPTION]… LOGIN
??? OPTION:
??????? -d LAST_DAY(上一次更改的日期)
??????? -E: --expire date EXPIRE_DATE(賬號到期日期)
??????? -I, --inactive INACTIVE(非活動期限)
?-m, --middays MIN_DAYS(密碼可更改的最小天數(shù))
?-M, --maydays MAX_DAYS(保持密碼有效的最大天數(shù))
?-W, --warn days WARN_DAYS(用戶密碼到期前,提前收到警告信息天數(shù))
–l,顯示密碼策略
示例:
Change -d 0 tom 下一次登錄強制重設密碼
change -m 0 –M 42 –W 14 –I 7 tom
change -E 2016-09-10 tom
十八、groupadd命令
??? groupadd:創(chuàng)建組
??? 格式:groupadd [OPTION]… group name
??? OPTION:
??????? -g GID:指明GID號
??????? -r:創(chuàng)建系統(tǒng)組;
??????????? Centos6:ID<500
??????????? Centos7:ID<1000
十九、groupmod命令
? ? groupmod:組屬性修改
??? 格式:groupmod [OPTION]… group
??? OPTION:
??????? -n group_name:新名字
??????? -g GID:新的GID
????????????eg1:修改組名
????????????
二十、groupdel命令
? ? groupdel:刪除組
??? 格式:groupdel GROUP
二十一、gpasswd命令
? ? gpasswd:更改組密碼
??? 格式:gpasswd [OPTION] GROUP
??? OPTION:
??????? -a user:將user添加至指定組中;
??????? -d user:從指定組中移除用戶user
??????? -A user1,user2…:設置有管理權限的用戶列表
????????????eg1:添加用戶到組里
????????????????
二十二、newgrp命令
? ? newgrp:臨時切換基本組
??????? 如果用戶本不屬于此組,則需要密碼;
二十三、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:刪除組里所有用戶
????????????
????????????????? ????
二十四、chown命令
? ? chown:修改文件的屬主和屬組
格式:chown [OPTION]…[OWNER] [: [GROUP]] FILE…
用法:
OWNER
OWNER: GROUP
: GROUP
命令中的冒號可用.替換;
-R: 遞歸
chown [OPTION]... --reference=RFILE FILE... ?
二十五、chgrp命令
chgrp:修改文件的屬組
格式:chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
-R 遞歸
????注:chown只有root才能執(zhí)行;chgrp命令只有root、文件所有者執(zhí)行,文件所有者可將之改為文件所有者所屬的組;
二十六、文件權限
??? 文件的權限主要針對三類對象進行定義:
owner: 屬主,u
group: 屬組,g
other: 其他,o
每個文件針對每類訪問者都定義了三種權限:
r: Readable
w: Writable
x: executable
????文件和目錄各個權限含義
??????? 文件:
????r: 可使用文件查看類工具獲取其內(nèi)容
????w: 可修改其內(nèi)容
????x: 可以把此文件提請內(nèi)核啟動為一個進程?
????目錄:
????r: 可以使用ls查看此目錄中文件列表
????w: 可在此目錄中創(chuàng)建文件,也可刪除此目錄中的文件,修改目錄中的文件
????x: 可以使用ls -l查看此目錄中文件列表,可以cd進入此目錄并且讀目錄內(nèi)文件內(nèi)容
????X:只給目錄x權限,不給文件x權限;前提是文件本身無x權限,有的話會加;? ?? ? ?????????
二十七、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
二十八、新建文件和目錄的默認權限
? ? unmask值可以用來保留在創(chuàng)建文件權限
??? 新建文件默認權限:666-umask;
??????? 發(fā)現(xiàn)結(jié)果有奇數(shù)權限+1,偶數(shù)權限不變;
??? 新建目錄默認權限:777-umask;
??? 非特權用戶的unmask是002;
??? Root的unmask是022;
??? unmask –S 模式方式顯示 ;
? ? unmask –p 輸出可被調(diào)用 ;
全局設置: /etc./basher 用戶設置:~/. basher;
二十九、Linux文件系統(tǒng)上的特殊文件
??? SUID(4), SGID(2), Sticky(1) ?
三種常用權限:r, w, x;user group,other
前提:進程有屬主和屬組;文件有屬主和屬組
(1) 任何一個可執(zhí)行程序文件能不能啟動為進程:取決發(fā)起者對程序文件是否擁有執(zhí)行權限
(2) 啟動為進程之后,其進程的屬主為發(fā)起者;進程的屬組為發(fā)起者所屬的組
(3) 進程訪問文件時的權限,取決于進程的發(fā)起者
(a) 進程的發(fā)起者,同文件的屬主:則應用文件屬主權限
(b) 進程的發(fā)起者,屬于文件屬組;則應用文件屬組權限
(c) 應用文件“其它”權限
? ? 1.可執(zhí)行文件上的SUID權限
? ? ? ?1.1 任何一個可執(zhí)行程序文件能不能啟動為進程:取決發(fā)起者對 程序文件是否擁有執(zhí)行權限;
? ? ? ?1.2 啟動為進程之后,其進程的屬主為原程序文件的屬主;
? ? ? ?1.3 SUID只對二進制可執(zhí)行程序有效;
? ? ? ?1.4 SUID設置在目錄上無意義 ;
? ? ? ?1.5 權限設定: chmod u+s FILE... chmod u-s FILE...
????????????eg:
? ?2.可執(zhí)行文件上的SGID權限
? ? ? ? 2.1 任何一個可執(zhí)行程序文件能不能啟動為進程:取決發(fā)起者對 程序文件是否擁有執(zhí)行權限;
? ? ? ? 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 默認情況下,用戶創(chuàng)建文件時,其屬組為此用戶所屬的主組;
? ? ? ?3.2 一旦某目錄被設定了SGID,則對此目錄有寫權限的用戶在此目錄中創(chuàng)建的文件所屬的組為此目錄的屬組;
? ? ? ?3.3 通常用于創(chuàng)建一個協(xié)作目錄;
? ? ? ?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
????????
三十、設定文件特定屬性
????chattr +i:不能刪除,改名,更改;
????????????????
????chattr +a:只能增加;
????????????????
????lsattr:顯示特定屬性;
三十一、訪問控制列表
? ? 1. ACL:AccessControlList,實現(xiàn)靈活的權限管理;
????2. 除了文件的所有者,所屬組和其它人,可以對更多的用戶設 置權限;
????3. CentOS7.0默認創(chuàng)建的xfs和ext4文件系統(tǒng)有ACL功能;
????4. CentOS7.X之前版本,默認手工創(chuàng)建的ext4文件系統(tǒng)無ACL 功能;
????? ? 4.1 需手動增加:
????????? ? ?tune2fs –o acl/dev/sdb1
???????????? mount –o acl/dev/sdb1? /mnt
????5. ACL生效順序:所有者,自定義用戶,自定義組,其他人;
????
? ?6. 為多用戶或者組的文件和目錄賦予訪問權限r(nóng)wx
????????????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:調(diào)用已寫好的acl權限文件給指定文件使用(vim acl.txt)
????????????????
????????????????
????????eg6:設置默認acl權限
????????????對文件:
????????????????
????????????對目錄:
????????????????
????????eg7:刪除已寫好文件的acl權限(vim acl.txt)
????????????????
????????????????
??????????????
????7. ACL文件上的group權限是mask 值(自定義用戶,自定義組 ,擁有組的最大權限),而非傳統(tǒng)的組權限;?
????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權限設定范圍內(nèi)才會生效。
????????setfacl -m mask::rx file?
????????示例:(與mask權限為準,只能小于或等于mask權限)
????????
????????????
???????????? ? ?? ??
? ?
????
? ? ? ??
????????
轉(zhuǎn)載于:https://blog.51cto.com/yacheng0316/1953985
總結(jié)
- 上一篇: lucene修改索引——(六)
- 下一篇: Redis分布式锁实现