概述
Linux是一個多任務,多用戶的操作系統,既然是多用戶的操作系統那麼這個操作系統上每天就會跑着許多不同的用戶的,這麼多用戶跑在Linux系統系統是如何區分他們的呢?如果有的用戶圖謀不軌,在系統上搞破壞想要刪除某系重要文件系統又是什麼樣的一個機制來控制這些用戶的呢?希望這篇文章能夠幫你更加深入的瞭解Linux的用戶、用戶組和文件權限的相關概念,並且能夠在看完本文後學會一些linux用戶、用戶組和文件權限的管理操作
本文一共分爲以下三大部分:
一、Linux用戶及用戶組
二、Linux文件權限
三、文件權限的管理操作
一、用戶及用戶組
用戶
因爲linux是一個多任務、多用戶的操作系統,所以在這個系統上面可能有許多人和你一樣,跟你一起使用着這個系統,每個用戶在使用操作系統的過程中都會產生數據,而這些數據可能和你私人生活有關,不想讓別的用戶看見,因此用戶就需要一塊自己的空間,於是以用戶命名的目錄就產生了,當數據轉化爲文件放到用戶目錄以後,將文件設置成僅有所有者可見這樣自己的隱私就不會被別人看到啦!(PS:在linux系統中有個無所不能的存在root,它無法無天即使是對文件設置了僅所有者可見,但root用戶也是可以看到文件的內容的哦。)
用戶組
其實用戶組是Linux是個很有用的功能,當老闆需要兩個團(group1,group2)隊競爭開發項目時,group1,group2內部一些資源只想內部互相訪問,而不想讓對方成員訪問,於是乎group1,group2下的成員就分別自己團隊裏的團員分到自己組下,於是乎某些資源就只有團隊內的成員才能訪問了,作爲老闆想能夠看到兩個團隊的開發進度,於是老闆的賬號boss分別加入到group1和group2裏面,於是乎老闆就有了訪問這兩個團隊文件的權限。
其他人
就拿用戶組裏group1來說,group1裏面的leader有個開發的成品參考模板僅供group1內的成員訪問參考,於是把這個文件所屬組劃到了group1,這個文件所屬者就是leader,所屬組就是group1。group2團隊有一個員工staff1,staff1對於模板這個文件來說就是其他人。對於文件來說就是既不是文件的擁有者,也不在文件所屬組的成員,對於這樣的用戶就是其他人。
二、Linux文件權限
文件屬性
Linux系統上最重要的概念就是,一切皆文件,文件就是Linux系統的核心,所以文件是一個挺複雜的東西,一個文件他有很多的屬性,那麼在介紹linux系統文權限之前,我先向大家說一說用什麼方法可以查看文件的屬性吧,在命令行界面下面使用ls的-l選項就可看見文件的長選項了也就是文件的屬性,再加上-d的話就能看到目錄的本身的屬性,那麼下面我就在linux的命令行模式下,在以管理員的身份在根目錄下運行了一條ls –ld home,於是home目錄的屬性就出來了,如下圖1.1(僅部分截圖)
第二行,第一組紅線圈出來的地方就代表着文件權限,其中第一個字母代表是文件的類型,然後剩下的九個字符分爲三個一組分爲三組,從左往右分別代表着文件所有者擁有的權限,文件所屬用戶組有的權限,和其他人擁有的權限,而每組的三位字符就代表者着所對應的用戶,用戶組,其他人所有的權限:第一位代表讀取權限,r表的就是可讀取的操作,-表示不具有讀取權限;第二位代表寫入權限,w表示進行寫入的操作,-表示不具有寫入權限;第三位代表執行權限,x表示可以對文件執行操作如:搜索、切入,-表示不具有執行權限;(在上面我們也說到linux裏面有一個無法無天的root,它直接就擁有這個文件權限的讀、寫執行的權限,不要問我爲什麼,彪悍的root不需要解釋。),這裏需要注意的是文件和目錄所對應的r,w,x的功能是不一樣的,文件 r:可獲取文件的數據; w:可修改文件的數據;x:可將此文件運行爲進程。目錄:r:可使用ls命令獲取其下的所有文件列表; w: 可修改此目錄下的文件列表;即創建或刪除文件;x: 可cd至此目錄中,且可使用ls -l來獲取所有文件的詳細屬性信息;後面還有兩個root,第一個root代表的是該文件所屬的用戶,第二個root代表是該文件所屬於哪個組,這就是一個文件大致的屬性。
文件的權限
上面已經說到了文件的權限,Linux是一個多用戶操作系統,它允許多個用戶同時登錄和工作。因此 Linux 將一個文件或目錄與一個個用戶和組聯繫起來。所謂的文件權限,是指用戶或組對文件的訪問權限,包括對文件的讀、寫、刪除、執行。不知道大家有沒有建過文件,當文件一建立起來之後,文件就自動有了一個默認的權限,這個權限其實是和umask有關了,當你在命令行敲下umask後就會得到類似下圖1.2的結果。
那麼這個0022表示的是什麼呢,目錄和文件默認權限有什麼關係呢,在上面圖1.1那邊已經說到了r,w,x,-,所代表的意義了,其實權限的組合機制還可用數字來表示,
--- | 000 | 0 |
--x | 001 | 1 |
-w- | 002 | 2 |
-wx | 003 | 3 |
r-- | 004 | 4 |
r-x | 005 | 5 |
rw- | 006 | 6 |
rwx | 007 | 7 |
於是rwxrwxrwx就可以用777來表示了,rwxr-xr-x就可以用755來表示了,那umask的0022代表的是什麼呢,其實0022就是777-022=755,即目錄默認權限爲rwxr-xr-x,文件的話就是666-022=644,即文件默認權限爲rw-r--r--。
三,具體文件管理操作
上面囉囉嗦嗦說那麼多的概念東西,這裏就不多說了,下面就說說對於linux的文件權限及用戶是怎麼管理的,以下我們將涉及到groupadd、groupdel、groupmod、useradd、usermod、userdel、gpasswd、passwd、newgrp、su、id、chmod、 chown、tail;這裏我只做簡要說明,如果想深入瞭解可自行查找使用方法。在介紹命令使用先先做些說明:< >參數表示必填,[ ]參數可填可不填,…表示可填多項。/etc/passwd,/etc/group,etc/shandow這些目錄分別是:用戶的信息庫,組的信息庫,用戶密碼,我們所添加的用戶或組這些目錄下都有對應的記錄。
tail 命令:輸出文件的最後一部分
語法tail [選項]... [FILE]...
tail file (顯示文件file的最後10行)
tail+20 file (顯示文件file的內容,從第20行至文件末尾)
tail-c 10 file (顯示文件file的最後10個字符)
id命令:顯示真實有效的用戶ID(UID)和組ID(GID)
語法:id [選項]... [USER]
iduser1(查看user1用戶的用戶ID(UID)和組ID(GID))
groupadd命令: 創建一個新組
語法:groupadd [選項] GROUPNAME
groupaddgroup1 (建立一個新組)
groupdel命令:刪除一個組
語法:groupdel [選項] GROUP
groupadd group1 (刪除group1組)
groupmod命令:更改組羣識別號或名稱
語法:groupmod [選項] GROUP
groupmod -g 6666 group1(修改group1組名的組ID爲6666)
groupmod -n test2 group1(將group1組名改名爲test2)
useradd命令:創建一個新用戶或更新默認新用戶
語法:useradd [選項] 登錄名
useradduser1(創建user1用戶)
useradd -g group1 user1(創建user1用戶,並分配基本組爲group1)
useradd -r sys1(創建系統用戶sys1)
useradd -G group1,group2,group3 user1(創建user1,並指定附加組group1,group2,group3)
usermod命令:修改用戶屬性
語法:usermod [選項] 登錄名
usermod -u 6666 user1(修改user1用戶的用戶ID爲6666)
usermod -g 6666 user1(修改user1基本組的組ID爲6666)
usermod -l user2 user1(修改user2的用戶名爲user1)
usermod -L user1(將user1的賬戶的密碼鎖定)
usermod -Uuser1(將user1的賬戶的密碼解鎖)
userdel命令:刪除用戶賬戶和相關文件
語法:userdel [選項] 登錄名
userdeluser1(刪除user1用戶)
userdel-r user1(刪除user1用戶及家目錄)
gpasswd命令:Linux下工作組文件/etc/group和/etc/gshadow管理工具
語法:gpasswd [選項] group
gpasswd-a user1 group1(將用戶user1加入到group1組中)
gpasswd-d user1 group1(將用戶user1從group1組中刪除)
passwd命令:設置用戶的認證信息,包括用戶密碼、密碼過期時間等。
語法:passwd [-k] [-l] [-u [-f]] [-d] [-e] [-nmindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]
passwd(修改自己的密碼)
passwdUSERNAME(修改用戶的密碼,只有root賬戶有此權限
newgrp命令:臨時切換指定的組爲基本組
語法:newgrp [-] [group]
-: 會模擬用戶重新登錄以實現重新初始化其工作環境;
su命令:切換用戶
語法:su [選項...] [-] [user[args...]]
<su- user1,su - l user>(切換至user1,並讀取目標用戶的配置文件來重新初始化)
suuser1(切換至user1不初始化)
chmod命令:用來更改文件或目錄的權限
語法:I.chmod [OPTION]... MODE[,MODE]... FILE...
賦權表示法:直接操作一類用戶的所有權限位rwx;
u=(對應文件所有者),g=(對應文件所有組),o=(對應其他人),a=(a=就相於ugo=)
例如:chmod u=rwx,go=rw /home/test(將test文件權限設置爲rwxrw-rw-)
授權表示法:直接操作一類用戶的一個權限位r,w,x;
[u+, u-], [g+, g-],[o+, o-],[a+, a-]
例如:chmod u-x,go+x /home/test(將上面rwxrw-rw-的test文件權限改爲了rw-rwxrwx)
語法II:.chmod[OPTION]... OCTAL-MODE FILE...
chmod644 /home/test(將test文件權限設置爲rw-r--r--)
語法:III.chmod[OPTION]... --reference=RFILE FILE...
chmod--reference=test test1(使test1複製test文件的權限屬性)
chown命令:改變文件大的所有者和所有組
語法: chown [OPTION]... [OWNER][:[GROUP]]FILE...
chownuser1:group1 test1(將test1文件的所有改爲user1,所有組改爲group1)
chown[OPTION]... --reference=RFILE FILE...
chown--reference=test test1(使test複製test1文件的所屬者和所屬組屬性)
本人也是初學Linux,文中有哪些不妥的地方,儘管提出,能讓我及時更正。謝謝!