原文地址:http://www.cnblogs.com/123-/p/4189072.htmlhtml
在linux中的每一個用戶必須屬於一個組,不能獨立於組外。在linux中每一個文件有全部者、所在組、其它組的概念java
- 全部者linux
- 所在組安全
- 其它組post
- 改變用戶所在的組url
全部者spa
通常爲文件的建立者,誰建立了該文件,就自然的成爲該文件的全部者htm
用ls ‐ahl命令能夠看到文件的全部者blog
也可使用chown 用戶名 文件名來修改文件的全部者繼承
文件所在組
當某個用戶建立了一個文件後,這個文件的所在組就是該用戶所在的組
用ls ‐ahl命令能夠看到文件的全部組
也可使用chgrp 組名 文件名來修改文件所在的組
其它組
除開文件的全部者和所在組的用戶外,系統的其它用戶都是文件的其它組
ls
-l中顯示的內容以下:
-rwxrw-r‐-1 root root 1213 Feb 2 09:39 abc |
- 10個字符肯定不一樣用戶能對文件幹什麼
- 第一個字符表明文件(-)、目錄(d),連接(l)
- 其他字符每3個一組(rwx),讀(r)、寫(w)、執行(x)
- 第一組rwx:文件全部者的權限是讀、寫和執行
- 第二組rw-:與文件全部者同一組的用戶的權限是讀、寫但不能執行
- 第三組r--:不與文件全部者同組的其餘用戶的權限是讀不能寫和執行
也可用數字表示爲:r=4,w=2,x=1 所以rwx=4+2+1=7
- 1 表示鏈接的文件數
- root 表示用戶
- root表示用戶所在的組
- 1213 表示文件大小(字節)
- Feb 2 09:39 表示最後修改日期
- abc 表示文件名
除了符號,也可使用八進制數字來指定具體權限,以下表所示:
數字 | 說明 | 權限 |
---|---|---|
0 | 沒有任何權限 | --- |
1 | 執行權限 | --x |
2 | 寫入權限 | -w- |
3 | 執行權限和寫入權限:1 (執行) + 2 (寫入) = 3 | -wx |
4 | 讀取權限 | r-- |
5 | 讀取和執行權限:4 (讀取) + 1 (執行) = 5 | r-x |
6 | 讀取和寫入權限:4 (讀取) + 2 (寫入) = 6 | rw- |
7 | 全部權限: 4 (讀取) + 2 (寫入) + 1 (執行) = 7 | rwx |
改變權限的命令
chmod 改變文件或目錄的權限
chmod 755 abc:賦予abc權限rwxr-xr-x
chmod u=rwx,g=rx,o=rx abc:同上u=用戶權限,g=組權限,o=不一樣組其餘用戶權限
chmod u-x,g+w abc:給abc去除用戶執行的權限,增長組寫的權限
chmod a+r abc:給全部用戶添加讀的權限
改變全部者(chown)和用戶組(chgrp)命令
chown xiaoming abc:改變abc的全部者爲xiaoming
chgrp root abc:改變abc所屬的組爲root
chown root ./abc:改變abc這個目錄的全部者是root
chown ‐R root ./abc:改變abc這個目錄及其下面全部的文件和目錄的全部者是root
改變用戶所在組
在添加用戶時,能夠指定將該用戶添加到哪一個組中,一樣用root的管理權限能夠改變某個用戶所在的組
- usermod ‐g 組名 用戶名
你能夠用
- usermod ‐d 目錄名 用戶名,改變該用戶登陸的初始目錄
在Linux中,一些程序須要特殊權限才能完成用戶指定的操做。
例如,用戶的密碼保存在 /etc/shadow 文件中,出於安全考慮,通常用戶沒有讀取和寫入的權限。可是當咱們使用passwd 命令來更改密碼時,須要對 /etc/shadow 文件有寫入權限。這就意味着,passwd 程序必需要給咱們一些特殊權限,才能夠向 /etc/shadow 文件寫入內容。
Linux 經過給程序設置SUID(Set User ID)和SGID(Set Group ID)位來賦予普通用戶特殊權限。當咱們運行一個帶有SUID位的程序時,就會繼承該程序全部者的權限;若是程序不帶SUID位,則會根據程序使用者的權限來運行。
SGID也是同樣。通常狀況下程序會根據你的組權限來運行,可是給程序設置SGID後,就會根據程序所在組的組權限運行。
若是程序設置了SUID位,就會在表示文件全部者可執行權限的位置上出現's'字母;一樣,若是設置了SGID,就會在表示文件羣組可執行權限的位置上出現's'字母。以下所示:
$ ls -l /usr/bin/passwd -r-sr-xr-x 1 root bin 19031 Feb 7 13:47 /usr/bin/passwd* $
上面第一列第四個字符不是'x'或'-',而是's',說明 /usr/bin/passwd 文件設置了SUID位,這時普通用戶會以root用戶的權限來執行passwd程序。
注意:小寫字母's'說明文件全部者有執行權限(x),大寫字母'S'說明程序全部者沒有執行權限(x)。
若是在表示羣組權限的位置上出現SGID位,那麼也僅有三類用戶能夠刪除該目錄下的文件:目錄全部者、文件全部者、超級用戶 root。
爲一個目錄設置SUID和SGID位可使用下面的命令:
$ chmod ug+s dirname $ ls -l drwsr-sr-x 2 root root 4096 Jun 19 06:45 dirname $
【綜合案例】
【題1.1】創建兩個用戶組group1和group2,以及三個用戶dennis、daniel、abigale,而且將前2個用戶分配在group1用戶組下,後一個分配在group2用戶組下
【題1.2】以dennis用戶登陸,建立一個Hello.java文件
【題1.3】以daniel用戶登陸,觀察是否能夠訪問/home/dennis目錄以及讀或寫其建立的Hello.java文件
【題1.4】以dennis用戶登陸,修改目錄/home/dennis及Hello.java文件的讀寫權限(更正:修改目錄權限的時候,應該使用770,而不是760,不然權限不足)
【題1.5】重複【題1.3】
【題1.6】改變abigale的用戶組由group2變爲group1
而後,可使用cat /etc/passwd查看並肯定
【參考】
- groupadd 組名,在linux中添加組
- vi /etc/group,查看linux中全部組信息,能夠看能夠編輯
- cat /etc/group,查看linux中全部組信息,只能夠看不能夠編輯
- useradd ‐g 組名 用戶名,建立用戶的同時指定將該用戶分配到哪一個組下
- vi /etc/passwd,查看linux中全部用戶信息,能夠看能夠編輯
- cat /etc/passwd,查看linux中全部用戶信息,只能夠看不能夠編輯