課堂筆記
linux用戶和組管理(非常非常重要)
用戶管理和組管理各種相關的應用程序
簡單的管理命令
安全上下文:
每次對主機操作都是以發起一個進程來完成的,進程代表著人來執行操作,進程以其發起者的身份來運行;所以開機時有很多守護類的進程,我們應該以普通身份來運行,普通用戶通常都是系統用戶;從來不用登陸系統的;進程對文件的訪問權限,取決于發起此進程的用戶的權限;
cat /etc/shadow 普通用戶不運行訪問這個文件
系統用戶:為了能夠讓那后臺進程或服務類進程以非管理員的身份運行,通常需要為此創建多個普通用戶,這類用戶從不用登錄系統,僅僅是其他進程以他的身份來運行,從而能獲取普通權限的;
groupadd:創建一個組 。tail -f 跟蹤文件尾部并不退出
groupadd [選項] group_name(組名)
-g GID:指定GID;不指定默認是上一個組的GID+1
-r :創建系統組;系統組,運行很多進程,后臺的服務管理,有些進程是隨著開機啟動起來的,每一個進程在訪問資源時,一定是代表了某一個用戶,開機時自動啟動應該以普通用戶的身份運行。
groupmod命令:修改組屬性
groupmod [選項] GROUP -g GID :修改GID,一定不能與某個組的id號相同 -n new_name :刪除組名
groupdel命令:刪除組, 注意:組里面有用戶的話就不能刪除 groupdel [選項] GROUP
useradd 命令;創建用戶或更新默認新用戶信息
創建一個用戶時,如果沒有指定組的話會自動創建一個與用戶同名的組作為用戶的私有組,
useradd [選項] 登錄名 -u, --uid UID:指定UID; -g, --gid GROUP :指定基本組ID,不創建與用戶名相同的私有組,注意此組必須事先存在,否則會出現錯誤; -G,--groups GROUP1,:指明用戶所屬的附加組,多個組之間用逗號分隔; -c,--comment COMMANT:指明注釋信息;
重要:-d,–home HOME_DIR:以指定的路徑為用戶的家目錄;通過復制/etc/skel/此目錄并重命名實現的,指定的家目錄路徑如果事先存在,則不會為用戶創建環境初始化配置文件;
(為了實現用戶環境初始化,系統一般家目錄的創建不是直接創建空目錄,而是復制一個目錄,并更名為用戶所指名的目錄)
-s,--shell SHELL :指定用戶的默認shell,可用的所有shell列表為etc/shells文件中; -r,--system;創建系統用戶 注意:創建用戶時的諸多默認設定配置文件為/etc/loogin.defs useradd -D : 顯示創建用戶的默認配置; useradd -D 選項: 修改默認選項的值; -s 修改的結果保存于/etc/default/useradd文件中;
usermod命令:修改用戶屬性
usermod [選項] 登錄 -u,--uid UID:修改用戶的ID為此處指定的新UID; -g,--g GROUP:修改用戶所屬的基本組,這個組事先必須存在 : -G,修改用戶所屬的附加組,如果有附加組, 原來的附加組會被覆蓋,如果不想覆蓋,則與a一起使用; -a,--append:與G一同使用,用于為用戶追加新的附加組; -c,--comment COMMENT:修改注釋信息; -d,-home HOME_DIR:修改用戶的家目錄;用戶原有的文件不會被轉移至新位置; -m,--move -home只能與-d選項一同使用,用于將原來的家目錄移動為新的家目錄 -l ,--login NEW_LOGIN:修改用戶名; -s,--shell SHELL :修改用戶的默認shell為此處用的shell; -L,--lock;鎖定用戶密碼;即在此用戶原來的密碼字符串之前添加一個“!” -U,--unlock:解鎖用戶的密碼;
userdel命令:刪除用戶
userdel [選項] 登錄 -r:刪除用戶時一并刪除其家目錄;
passwd命令:
passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]
(1)passwd:修改用戶自己的密碼;只能是管理員用戶更改密碼 (2)passwd USERNAME :修改指定用戶的密碼,但僅root有此權限;
-l,-u:鎖定和解鎖用戶 -d:清除用戶密碼 -e DAYS:過期期限,日期; -i DAYS:非活動期限; -n DAYS: 密碼的最短使用期限 -x DAYS:密碼的最長使用期限 -w DAYS:警告期限
重要:–stdin: echo "PASSWORD" | passwd –stdin USERNAME 讀密碼時標準輸入
gpasswd命令:
組密碼文件 用戶的組管理 gpasswd [選項] group -a USERNAME:向組中添加用戶 -d USERNAME:從組中移除用戶
newgrp命令:臨時切換指定的組為基本組;
-:模擬用戶重新登錄以實現重新初始化其工作環境;
chage命令:更改用戶密碼過期信息
chage [選項] 登錄名 -d -E -w -n -M
id命令:
顯示用戶的實際和有效id id [option]...[USER] -u:僅顯示有效的UID -g:僅顯示用戶的基本組ID -G:僅顯示用戶的基本組ID -n:顯示名字而非ID
su命令:switch user
登錄式切換:會通過讀取目標用戶的配置文件來重新初始化 su - USERNAME su - l USERNAME 非登錄式切換:不會讀取目標用戶的配置文件進行初始化 su USERNAME 注意:管理員可無密碼切換至其他任何用戶; -c 'COMMAND' :僅以指定用戶的身份運行此處指定的命令; su - 用戶名 -c '命令' 在切換的用戶下執行一條命令,但不是真正切換用戶
其他幾個命令:chsh ,chfn,finger,whoami,pwck,
命令總結:groupadd,groupmod,groupdel,useradd,usermod,userdel
權限管理:
ls -l rwxrwxrwx: 左三位:定義user(owner)的權限 中三位:定義group的權限 右三位:定義other的權限
進程安全上下文:
進程對文件的訪問權限應用模型:
進程的屬主與文件的屬主是否相同;如果相同,則應用屬主權限;否則,則堅持進程的屬主是否屬于文件的屬組;如果是,則應用屬組權限;否則,就只能應用other的權限;
權限: r:read,讀 w:write,寫 x:excute,執行 文件: r:可獲取文件的數據; w:可修改文件的數據; x: 可將此文件運行為進程; 目錄: r:可使用ls命令獲取其下的所有文件列表; w:可修改此目錄下的文件列表;即創建或刪除文件; x:可cd至此目錄中,并且可使用ls -l來獲取所有文件的詳細屬性信息; mode:rwxrwxrwx ownership:user,group 權限組合機制: --- 000 0 --x 001 1 -w- 010 2 -wx 011 3 r-- 100 4 r-x 101 5 rw- 110 6 rwx 111 7 練習:rw-rw-r--,rwxrwxr-x 664 775
權限管理命令:
chmod命令:改變文件權限的 chmod [OPTION]... MODE[,MODE]... FILE... chmod [OPTION]... OCTAL-MODE FILE... chmod [OPTION]... --reference=RFILE FILE... 三類用戶: u:屬主 g: 屬組 o:其他 a:所有 (1)chmod [OPTION]... MODE[,MODE]... FILE... MODE標識法: 賦權表示法: 賦權表示法:直接操作一類用戶的所有權限位rwx u=,g=,o= a= chmod g=rw 文件名 chmod ug=r 文件名 授權表示法:直接操作以類用戶的一個權限位r,w,x u+,u- g+,g- o+,o- a+,a- (2)chmod [OPTION]... OCTAL-MODE FILE... 八進制 chmod 660 文件名 (3)chmod [OPTION]... --reference=RFILE FILE... chmod --reference=/var/log/message 文件名 選項: -R,--recursive:遞歸,修改目錄下所有文件的權限,遞歸一般在授權表示法中用的比較多。 注意:用戶僅能修改屬主為自己的那些文件
從屬關系管理命令:chown,chgrp
chown命令:改屬主,也可以改屬組 chown [OPTION]... [OWNER][:[GROUP]] FILE... chown [OPTION]... --reference=RFILE FILE... 選項: -R:遞歸修改 chown -R group名 目錄/ chown -R --reference =/tmp/moosefs /tmp/skel/ chgrp命令:只能用來改組 chgrp [OPTION]... GROUP FILE... chgrp [OPTION]... --reference=RFILE FILE...
注意:僅管理員可修改文件的屬主和屬組;
思考:用戶對目錄有寫權限,但對目錄下的文件沒有寫權限時,能否修改此文件內容?能否刪除此文件? 不能,能 如何驗證: mkdir /tmp/mytest cp /etc/fstab /tmp/mytest ls -l /tmp/mytest chown :distro /tmp/mytest ls -ld /tmp/mytest chmod g+w /tmp/mytest su – zhou cd /tmp/mytest echo asd >> fstab 提示權限不夠 rm fstab 可以刪除
所以,一個用戶對一個文件沒有寫權限,未必不能刪除,但一定不能往文件里面加東西,或者修改東西。一個用戶對于一個文件是否擁有寫權限,決定了是否能改內容,而對這個文件的目錄有權限,決定了能否對里面的文件刪除,所以對文件沒有寫權限不意味著不能刪除。
umask:文件的權限反向掩碼,遮罩碼;
文件: 666-umask 目錄: 777-umask
方法2:文件是rw-rw-rw- 去減 如027—-w-rwx 得:rw-r—–結果640 目錄的話就用rwxrwxrwx區減
dir:777-umask file:666-umask 有奇數加1,偶數保留
umask -S:直接以模式方法來顯示 u=rwx,g=rx,o=rx umask -p:把umask值打上,并顯示umask值
注意:之所以文件用666去減,表示文件默認不能擁有執行權限;如果減得的結果有執行權限,則需要將其加一 umask:023 666-023=644 777-023=754
umask umask 027 touch mytast2 ll mytast2 -rw-r—– 1 root root 0 Jul 31 15:08 mytest2 mkdir mytast3 ll -d mytest3 drwxr-x— 2 root root 6 Jul 31 15:12 mytest3
umask命令: umask:查看當前umask umask MASK: 設置umask 注意僅對當前shell有效 用命令設定的,都是僅對當前shell有效。
linux中的三種特殊權限
suid:s sgid:s sticky:t
前提:進程有屬主和屬組;文件有屬主和屬組 (1)任何一個可執行程序文件能不能啟動為進程:取決發起者對程序文件是否擁有執行權限 (2)啟動為進程之后,其進程的屬主為發起者;進程的屬組為發起者所屬的主組 (3)進程訪問文件時的權限,取決于進程的發起者 (a)進程的發起者,同文件的屬主:則應用文件屬主權限 (b)進程的發起者,屬于文件屬組:則應用文件屬組權限 (c)應用文件“其他”權限
suid:4suid (s) 作用在二進制程序 權限的效果:當一個用戶去運行程序的時候,他將繼承該程序所有者的權限,用戶去執行passwd,就繼承了passed程序的所有root權限,就可以執行passwd
sgid:2sgid (s) 作用在二進制程序 都用于root組的權限
sticky:(t)粘滯位 作用在目錄上 chmod o+t /textdir 用戶在這目錄下建的文件,別的用戶無法刪除,但是可以見用戶,可以刪除自己所見的文件。但root除外
sgid:作用在目錄上 gpasswd -a wangcai group1 把用戶旺財加入到group1組中 當一個目錄上面實施了sgid 權限,意味著該目錄創建的新文件或目錄將自動繼承該目錄的所屬組
練習:完成以下任務 1,新建系統組mariadb,新建系統用戶mariadb,屬于mariadb組,要求其沒有家目錄,且shell為/bin/nologin; 嘗試root切換至用戶,查看其命令提示符 2,新建GID為5000的組mageedu,新建用戶gentoo,要求其家目錄為/user/gentoo,密碼同用戶名; 3,新建用戶fedora,其家目錄為/users/fedora;密碼同用戶名 4,新建用戶www,其家目錄為/users/www;刪除www用戶,但保留其家目錄; 5,為用戶gentoo和fedora新增附加組mageedu; 6,復制目錄/var/log至/tmp/目錄,修改/tmp/log及內部的所有文件的屬組為mageedu,并讓屬組對目錄本身擁有寫權限;
install命令 復制文件,并能設置文件屬性
單源復制: install [OPTION]... [-T] SOURCE DEST 多源復制: install [OPTION]... SOURCE... DIRECTORY 多源復制到目錄: install [OPTION]... -t DIRECTORY SOURCE... 創建目錄: install [OPTION]... -d DIRECTORY... 常用選項: -m ,--mode=MODE:設定目標文件權限,否則默認755 [root@localhost ~]# install -m 640 /etc/inittab /root [root@localhost ~]# ll inittab -rw-r----- 1 root root 511 Jul 31 15:59 inittab -o ,--owner=OWNER:設定目標文件屬主 install -o who -g distro -m 640 /etc/inittb /tmp/inittab -g,--group=GROUP :設定目標文件屬組 -d,創建目錄 install -d 目錄名
mktemp命令: mktemp -create a temporary file or directory
mktemp [option]...[TEMPLATE] 常用選項: -d:創建臨時目錄 注意:mktemp會將創建的臨時文件名直接返回,因此,可直接通過命令引用保存起來;
設定文件特定屬性 chattr +i 不能刪除,改名,更名 chattr +a 只能增加 lsattr 顯示特定屬性
訪問控制列表 ACL:Access Control List ,實現靈活的權限管理 作用:針對文件權限控制誰能訪問誰不能訪問
setfacl -m(修改) u:用戶名:權限 文件名 設置用戶
getfacl 文件名 查看ACL權限
setfacl -m g:組名:權限 文件名 設置組
setfacl -x u:用戶名 文件名 刪除用戶權限
setfacl -b 文件名 清空所有的ACL信息
nano acl。txt u:wang:0 u:wangcai:rw g:ti:r
setfacl -M acl。txt 文件名 直接改文件名,就能重復調用。
nano acl2.txt u:wang u:wangcai
setfacl -X acl2.txt 文件名
強調:當你添加ACL權限以后,所屬組的權限就不是所屬組的權限,而變成mask
mask,除了所有者和other,別的用戶(組和自己添加的ACL用戶)的權限不能超過mask。 setfacl -m::rm 文件名
setfacl -m(修改) d:u:用戶名:權限 文件名 在目錄上設置了默認的ACL權限,將來在目錄里新建的文件就也有這個權限
setfacl -k 文件名 刪除默認ACL權限
setfacl -b 文件名 清除所有的ACL權限
getfacl file1 | setfacl –set-file = – file2 復制file1的ACL權限給file2
setfacl -R -b *:清除所有的ACL權限
setfacl -R --set-file=/root/acl.bak * 能讓權限恢復gid
原創文章,作者:15152188070,如若轉載,請注明出處:http://www.www58058.com/28922
文章整體架構清晰,對命令的語法和常用選項有了很好的總結,但是練習題怎么完成呢?
@馬哥教育:哥,練習題在另一篇博客上了