最近在學習中,感覺在使用者,組,權限這一塊比較搞,特此在這裡總結。
1.使用者
概念
我了解中,使用者就是使用系統的人。分為root使用者,系統使用者,普通使用者。
root使用者就是超級管理者,擁有至高無上的權限,是神。uid=0
系統使用者是一些服務需要的使用者,shell為/sbin/nologin。無法登陸系統,uid:1到500
普通使用者最最一般的使用者,是凡人,除了自己的檔案,其他都要授權。可以登陸系統。uid:501到60000
指令
關于使用者的指令總共有這麼三個useradd,usermod,userdel,檔案有這麼兩個?/etc/login.defs,/etc/default/useradd
useradd用來建立使用者名,usermod用來修改使用者資訊,userdel用來删除使用者,格式如下:
useradd + 參數 + 使用者名 用來建立使用者
-d 指定家目錄
-s 登陸shell
-u 指定UID
-g 主組
-G 附屬組(屬于哪些組)
值得注意的是,useradd在建立新使用者的時候會預設建立新使用者的家目錄并把/etc/skel/下的所有檔案都複制到新使用者的家目錄裡。
預設是否建立家目錄在/etc/login.defs裡修改。一般不改。
usermod + 參數 + 使用者名 用來修改使用者狀态資訊(uid,gid,屬組,shell等),參數如下
-l 新使用者名
-u 新userID
-d 使用者家目錄位置
-g 使用者所屬主組
-G 使用者所屬附屬組(-G在使用的時候,必須有多少組寫多少組,如果本來有個g1,g2,-G g3會把g1,g2覆寫掉剩下個g3)
-L 鎖定使用者使其不能登陸
-U 解除鎖定
使用者修改完成後是否生效,可以用以下方法檢視:
id + 使用者名 可以檢視使用者名是否更改,uid,gid,屬組資訊。
uid=4009(username) gid=4012(username) groups=4012(username)
也可以再/etc/passwd檔案裡檢視。passwd檔案裡面一行資料代表一個使用者,以下為username的資料資訊。
username:x:4009:4012::/home/username:/bin/bash
:為分隔符,兩個資料項之間用:分隔,以下從左邊第一個username開始對每個資料項做個說明
username 使用者名
x 密碼位,加密方式在/etc/login.defs檔案中檢視。
4009 uid
4012 gid
空白 使用者的較長的描述(建立使用者的時候可以-c寫入描述)
/home/username 家目錄
/bin/bash shell
另外,shell我了解當中是指令解釋器,用來翻譯使用者輸入的指令給計算機。
userdel + 參數 + 使用者名 用來删除使用者。
-r 遞歸删除使用者的家目錄。
2.密碼
passwd + 參數 + 使用者名
-d 删除密碼
-f 強制執行
-k 更新隻能發送在過期之後
-l 停止賬号使用
-S 顯示密碼資訊
-u 啟用已被停止的賬戶
-x 設定密碼的有效期
-g 修改群組密碼
-i 過期後停止使用者賬号
建立使用者的時候不會出現密碼選項。我們可以通過passwd指令來設定密碼。
root 使用者下 passwd + 使用者名
普通使用者下隻能在有密碼的情況下更改密碼,并且隻能改自己的密碼不能改别人的密碼。
2.組
概念:我了解中,組是使用者的集合,也是權限的集合。檔案屬于a組,則a組的所有使用者可以擁有g(ugo的g)部分的權限。另外說明一點,要網組裡添加使用者不是使用group系列的指令,而是用useradd -G或者usermod -G來添加
groupadd + 參數 + 組名 建立一個組。
groupmod + 參數 + 組名 更改組的狀态資訊
groupdel + 參數 + 組名 删除組(被删除的組必須不屬于某個使用者的主組)
3.權限
雖然我們在學習中,經常會這樣說:a使用者權限不夠,進不了目錄或打不開檔案。但是權限從來都不是設定給使用者群組的,linux裡權限是通過設定檔案來實作的。
ll 檔案名可以看到檔案的詳細資訊。
drwxr-xr-x. 2 mary tom 4096 Jun 19 09:58 test
先看中間,mary,tom。表示該檔案屬于mary這個使用者,tom這個組。
通過chown指令來修改所屬使用者,所屬組
chown 所屬使用者.所屬組 檔案名
常用參數-r 同僚修改目錄下的所有的檔案目錄的所有者和所有組。
chown指令單獨加上一個使用者名,則修改的是擁有者。通過使用者名.擁有組來添加則兩個一起修改
如果單獨修改使用者組則用chgrp來修改。
再來看最前面一串字母
drwxr-xr-x 第一位d表示這是一個目錄,rwxr-xr-x,每三個為一組,分别代表user,group,others。rwx(u)r-x(g)r-x(o),u權限是針對檔案擁有者的,g權限針對所屬組,o權限針對除了不在ug内的其他人。
每一部分對應位置都是rwx,
r表示可讀
w表示可寫
x表示可執行
這裡要說明以下檔案和目錄的rwx分别代表什麼意思。
檔案:r-可以看檔案,w-可以改檔案,x-如果檔案是可執行檔案,則有權限的使用者可以執行、
目錄:r-可以ls,w可以添加删除該目錄下的檔案或目錄,x-可以進去(cd)
如果改位置有對應字母則表示,該位置有相應權限,如果是-則表示沒有權限。
test這個目錄對mary這個使用者可讀可寫可執行,對tom這個組裡的其他使用者,可讀可執行,對mary和tom組的使用者以外的其他使用者可讀可執行。
更改ugo位置用chomd指令
chmod u+r test 表示對test目錄u位置賦予可讀權限。
也可以這樣寫,
chmod o+rwx test 一次給test目錄o位置賦予可讀可寫可執行權限。
或者這樣
chmod u-r,g+w,o-x test 同時給ugo更改權限用逗号隔開。
另外,增權重限用+,減少用-,賦予用=
+-很好了解,=看以下例子
chmod g=rwx test 表示不管g位原來是什麼權限,直接賦予rwx。
當然對檔案權限更改格式和目錄是一樣的,隻是最後由目錄名,換成檔案名。
另外除了用ugo加減權限外,還有數字模式可以添權重限。分别是
r=4
w=2
x=1
數字模式是通過rwx對應的數字相加來賦予檔案權限。一共有四位數字,這四位數字通過權限rwx相加來得到比如
0755
第一位0表示沒有特殊權限
第二位7表示u位權限
第三位5表示w位權限
第四為5表示o位權限
那具體數字怎麼表示,我們同樣這個檔案
drwx r-x r-x. 2 mary tom 4096 Jun 19 09:58 test
7 5 5
u=4+2+1=7
w=4+1=5
x=4+1=5
這裡要說明一點用chomd 數字 檔案名 來修改權限,除了特殊位,其他位需要一次寫全。
如果要給ugo都賦予rwx權限,則指令是這樣的
chmod 777 test
但是如果隻給g+w,用數字模式則是
chmod 775 test
不能用
chmod g=7 test
除了rwx外,檔案和目錄還有特殊權限,分别是suid,sgid,sticky
suid針對可執行檔案,讓執行該檔案的使用者,暫時以檔案擁有者的身份來執行,直至指令結束
比如passwd指令,這條指令是用來修改密碼的,起結果儲存在/etc/shadow檔案中
-rwsr-xr-x. 1 root root 30768 Feb 22 2012 /usr/bin/passwd
----------. 1 root root 1793 Jun 18 17:00 /etc/shadow
shadow檔案沒任何權限。但是普通可以通過passwd指令來修改自己的密碼。修改的密碼儲存在shadow檔案中。能夠實作這樣的操作,就是suid的作用。
sgid針對目錄和檔案
sgid對檔案操作的時候,和suid差不多,隻是suid暫時暫時或者檔案擁有者身份來執行,sgid暫時獲得檔案組的身份來執行。
比如
-rwx--s--x. 1 root slocate 38464 Oct 10 2012 /usr/bin/locate
真對目錄的時候,在該目錄下建立檔案或目錄時,擁有組與該目錄相同。
sticky針對目錄
必須擁有可讀可執行權限。進入有t權限目錄的使用者,該使用者如果擁有寫的權限,則他隻能删除該目錄下自己擁有的檔案。
suid,sgid,sticky添加方法和基本權限一樣。都是使用chmod指令。也同樣可以附加給檔案和目錄,但是suid給目錄sticky給檔案都是沒有意義的。
chmod u+s,g+s,o+t test
chmod 7755 test
最後,說一句,suid,sgid指派給檔案的時候,極其危險,應謹慎和慎重。