用戶及用戶組權限管理
Linux是一個多任務多用戶的系統,多用戶可以同時登陸同一臺主機。爲了考慮到每個人的隱私權和工作空間,這時候文件所有者(owner)就是即用戶的角色就變得尤爲重要了,同時爲了用戶與用戶之間方便合作,共享一些公共資源,這時,爲了實現資源的快速分配,我們把多個用戶放在一個公共的空間,分別賦予他們不同的讀寫執行等操作的權限,這些用戶共同組成的一個整體,就是所謂的用戶組(group)。
第一部分 Linux權限管理
用命令ls -l可以列出用戶的權限。
#ls -l
這裏我們以test文件爲例,來詳細說明。
第一類drwxr-xr-x
d:文件類型,常見的類型有d(目錄)、-(一般文件)、c(字符設備)、b(塊設備)、l(鏈接文件)、s(套接字文件)等,其餘的九位數字即爲文件權限。
linux權限採用UGO機制,U(user)表示所屬主,G(group)表示所屬組,O(other)表示除所屬主和所屬組之外的其他用戶。其中r(readable)代表可讀的,用數值4來表示;w(writable)代表可寫的,用數字2來表示;x(excutable)代表可執行的,用數字1來表示。
權限的組合機制--以二進制的方式組合。
--- 0000
--x0011
-w-0102
-wx0113
r--1004
r-x1015
rw-1106
rwx 1117
本例中前三位rwx爲所屬主的權限:rwx對應的數值爲7,中三位表示所屬組的權限:r-x對應的數值爲5,後三位表示其他人的權限:r-x對應的數值爲5,則它們組合起來爲755。
在系統創建目錄與文件時會自動給它們添加一些屬性,這就是umsk默認權限屬性。我們可以通過umask來查看。
#umask
對於文件的默認權限是644,對於目錄的默認權限是755。
權限的管理命令--chmod。
chomod:修改命令的權限位。
用法: chmod [OPTION]... MODE[,MODE]... FILE...
常用的用法
1.賦權表示法:直接操作一類用戶的所有權限位rwx。
對於兩類用戶權限相同合併到一起ug=, go=來表示。
2.授權表示法:操作一類用戶一位或多位權限。
對於兩類用戶權限機制相同:ug+, ug-, ...合併在一起。
3.數值表示法:用二進制數值來表示每一類用戶的多位權限位
第二部分 用戶和用戶組
學習用戶和用戶組管理之前我們先學習他們的配置文件。
保存用戶信息的文件:/etc/passwd。
#tail /etc/passwd
它們由“:”隔開的7個字段組成。
用戶名:加密的用戶密碼:UID:GID:註釋信息:用戶的家目錄:登陸的shell
保存用戶組的信息:/etc/group。
#tail -1 /etc/group
它們由“:”隔開的4個字段組成。
用戶組名:加密的組密碼:GID:組內用戶。
#tail -1 /etc/shadow
它們是由““:”分開的九個字段。
登錄名:密碼:最近一次的修改時間:密碼的最短使用期限:密碼最長使用期限:提前警告的天數:非活動期限:賬號的禁用日期:保留字段
用戶的分類
用戶可以分爲管理用戶和普通用戶。普通用戶可以分爲系統用戶和登陸用戶。用戶用UID來標識,管理用戶的ID=0,普通用戶的ID爲1-60000,其中系統用戶爲1-499(centOS7爲1-999),登陸用戶爲500-60000(centOS7爲1000-60000)。用戶通過/etc/passwd庫的密碼解析來驗證用戶的密碼,並通過後授權登錄。
用戶管理命令
useradd命令:添加用戶
useradd [選項] 登錄名
常用選項:
-c, --comment COMMENT:註釋信息,一般爲Full Name;
#useradd -c "www.Fedora.com " fefora
-d, --home /PATH/TO/HOME_DIR:家目錄路徑;目標路徑不能事先存在,否則會有警告,不會得利skel相關的文件給用戶
#useradd -d /tmp/test test
-g, --gid GROUP:用戶的基本組組名或GID;
#useradd -g 1003 rex
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:用戶所屬的附加組列表,彼此間用逗號隔開,中間沒有空格;
#useradd -G fedora,gentoo centos
-m, --create-home:強制創建家目錄;
-M:不創建用戶主目錄,即使系統在 /etc/login.defs 中的設置 (CREATE_HOME) 爲 yes;
-r, --system:創建一個系統賬戶
#useradd -r apache
-s, --shell SHELL:用戶的登錄 shell 名,默認爲留空,讓系統根據 /etc/default/useradd 中的SHELL 變量選擇默認的登錄shell;
#useraddr -s /bin/sh rex
-u, --uid UID:用戶 ID 的數字值。此值必須爲唯一的,除非使用了 -o 選項。此值必須非負,默認使用大於等於UID_MIN,且大於任何其他用戶 ID 最小值。
#useradd -u 2000 slackware
useradd -D 選項:設置某默認選項;-e,-f等默認選項。
usermod命令:修改賬號信息
usermod [選項] 用戶名
-c, --comment COMMENT用戶密碼文件中註釋字段的新值。通常使用 chfn(1) 工具對其進行修改。
-d, --home HOME_DIR:修改家目錄爲新的位置,但一般應該同時使用-m選項以保證原家目錄中的文件會移動到新目錄中;
#usermod -m -d /tem/test rex
-g, --gid GROUP:用戶的新初始登錄組的組名或數字代號。此組必須存在。
#usermod -g gentoo centos
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改時會覆蓋原有的附加組;一同使用-a選項,表示爲用戶添加新的附加組。
-l, --login NEW_LOGIN:修改當前用戶的用戶名。
-L, --lock:鎖定用戶的密碼。這會在用戶加密的密碼之前放置一個“!”。
-U, --unlock 解鎖用戶的密碼。這將移除加密的密碼之前的“!”。
userdel命令:刪除用戶賬號
userdel [選項] 登錄名
-r, --remove:用戶主目錄中的文件將隨用戶主目錄和用戶郵箱一起刪除。
用戶組管理命令
groupadd命令:添加用戶組
groupadd [選項] GROUP
-g GID:指明GID。
#groupadd -g 1011 suse
-r, --system:系統組。
#groupadd -r httpd
groupmod命令:修改組信息
groupmod [選項] GROUP
-g GID
-n NEW_NAME:修改組名。
groupdel命令:刪除組
groupdel [選項] GROUP