Linux入門——用戶 ,組,權限
Linux是一個多任務多用戶的系統,多用戶可以同時登陸同一臺主機。為了考慮到每個人的隱私權和工作空間,這時候文件所有者(owner)就是即用戶的角色就變得尤為重要了,同時為了用戶與用戶之間方便合作,共享一些公共資源,這時,為了實現資源的快速分配,我們把多個用戶放在一個公共的空間,分別賦予他們不同的讀寫執行等操作的權限,這些用戶共同組成的一個整體,就是所謂的用戶組(group)。
用戶與組的主要配置文件
1/etc/passwd:用戶及其屬性信息 文件格式
用戶名:密碼位:xuid:gid:描述位:家目錄:shell:
2/etc/group 組及其屬性信息 文件格式
組名:組密碼:組id:附加組成員列表
3 /etc/shadow 用戶密碼及其相關屬性 文件格式
用戶名:密碼(加密):密碼的上次修改日期: 密碼最小存活期: 密碼最大存活期: 密碼過期前多少天開始提醒用戶:密碼過期後多少天帳戶過期:帳戶過期:保留位:
4 /etc/gshadow:組密碼及其相關屬性 文件格式
組名:組密碼(加密):組管理員: 附加組成員列表
用戶和組管理命令
Id
id 用戶名 顯示指定用戶的信息
useradd
-u UID 指定 UID
-o 與-u 配合,不檢查uid的唯一性
-g GID/組名 指定用戶的主要組
-G GID/組名 指定用戶的附加組
-s /sbin/nologin 指定用戶的默認shell
useusermod
-g GID/組名 修改用戶的主組(該組要先存在)
-G GID/組名 設置用戶的附加組
usermod -G ‘‘ zhangsan 刪除所有的附加組
-s shell 修改用戶的默認shell
Userdel
userdel 用戶名 刪除用戶不刪除家目錄(可在/etc/home下查看)
userdel -r 用戶名 刪除用戶時,連同家目錄和mail文件一同刪除
su
su – 用戶名 在root在切換不需要密碼,其他用戶需要切換密碼
groupadd
groupadd 組名
groupmod
group -n 新組名 當前組名 修改組名
group -g 新ID 當前組名 修改GID
groupdel
groupdel 組名 刪除組
gpasswd
gpasswd -a 用戶名 組名 將指定用戶以附加組方式加入到指定組
gpasswd -d 用戶名 組名將指定用戶從指定組中刪除
gpasswd -A 用戶名 組名 設置組管理員(管理員可以修改組密碼,及修改組成員)
gpasswd -M ‘ ‘ 組名 刪除組成的所有成員
groupmems
groupmems -g 組名 -a 用戶名 往組中增加成員
groupmems -g 組名-d 用戶名 從組中刪除成員
groupmems -g 組名-l 列出組成員 (不包含主組)
groupmems -g 組名-p 清空該組的所有組員
總結:將某已在用戶以附加組方式加入某組當中
1.usermod -G 組名 用戶名
2.gpasswd -a 用戶名 組名
3.groupmems -g 組名 -a 用戶名
要明白 每個用戶有且只能有一個主要組,但用戶可以有零到多個附加組每個文件只能有一個所屬人,和一個所屬組
練習
1創建組weiguo,shuguo,創建用戶liubei為shuguo組管理員,caocao為魏國組管理員
2創建用戶kongxiuxiu,guanyu其附加組為weiguo,創建用戶zhangfei其主組為shuguo
3徹底刪除用戶kongxiu,把guanyu的附加組weiguo改為shuguo
理解並設置文件權限
我們必須要牢記用戶在訪問文件時權限順序是 owner > group >other
也就是當用戶訪問一個文件時,首先判斷當前用戶是否為該文件的所屬人owner,如果是owner,則應用owner位的權限;如果不是owner,則判斷該用戶的所屬組當中,是否有一個組與該文件的group相同,如果有,則應用group位的權限,如果都不是,則應用other位權限
用ll可以看到一個文件(如果文件沒有設置acl)的權限
-:文件的類型:-,d,l,b,c,p,s
rw-:owner
r--:group
r--:other
. 表示該文件是否有selinux的context值
r read 讀取文件 (列出目錄文件)
w write 寫權限 (可以在目錄中修改創建或刪除文件 需要x 權限)
x excute 執行權限 (目錄基本權限,只有執行權限才能有其他操作)
Chgrp
chgrp 組名 文件/目錄名(修改用戶的group)(owner可以修改文件的屬於組,但owner一定要屬於目標組)
chgrp -R 遞歸
Chown
chown 用戶名 文件/目錄名 修改用戶的owner
chown -R 遞歸同時修改目錄下的子文件子目錄
Chmod
符號模式
chmod u/g/o +-= rwx 文件名
例:chmod o+w a 向文件a的other位添加w權限
數字模式
1代表x 2代表w 4代表r
1:x 2:w 3:wx 4:r 5:rx 6:rw 7:rwx
例:chmod 777 a 設置文件a的權限為rwxrwxrwx
練習
1創建目錄/app/house,要求owner為liubei,僅劉關張對該目錄有完整權限,其他人無任何權限
註意:前面我已經把劉關張都加入了shuguo組
2分別使用劉關張三用戶在house創建各自的room目錄,名為xxx_room,要求各自的room只能自己有完整權限,其他人沒有任何權限
3創建一個共享目錄為/app/house/common,要求劉關張在該目錄下所創建的文件,彼此之間都可以讀寫,其他人無任何權限。
特殊權限
Suid
chmod u+s
當對於一個可執行的二進制文件作用了suid之後,任何人在執行該文件時,臨時擁有其所有人的權限
Sgid
chmod g+s
1.當對於一個可執行的二進制文件作用了sgid之後,任何人在執行該文件時,臨時擁有其所有組的權限
2.當對於一個目錄作用了sgid權限之後,任何人在該目錄下所創建的文件的所屬組,均與該目錄的所屬組相同
Sticky
對於一個目錄作用了sticky權限,該目錄下的文件僅其所屬人和目錄的所屬人及root可以刪除。
ACL
開啟acl的方式
centos7 默認支持acl
centos6及之前,操作系統安裝時所創建的文件系統默認支持acl,而操作安裝之後使用mkfs格式化的文件系統默認未開啟acl,需要手工開啟,方法如下:
1.tune2fs -o acl /dev/sda5
2.mount -o acl /dev/sda5 /app
ACl權限判斷順序
owner > acl user > group > other
設置ACL
setfacl -m u:liubei:rwx testdir
設置默認權限
setfacl -Rm u:liubei:rwx testdir/ 設置當前的權限
setfacl -Rm d:u:liubei:rwx testdir/ 設置未來文件的權限
刪除所有權限,清空acl結構
setfacl -b testdir
acl 擴展屬性 打包工具不支持存儲
練習
1、在/app/dir裏創建的新文件自動屬於shuguo組,組weiguo的成員如:caocao能對這些新文件有讀寫權限,組wuguo的成員如:sunquan只能對新文件有讀權限,其它用戶不能訪問這個文件夾
2、備份/app/dir裏所有文件,刪除/testdir/dir,然後恢復/testdir/dir,並恢復/testdir/dir中所有ACL權限。
Linux入門——用戶 ,組,權限