天天看點

使用者,組,權限

    最近在學習中,感覺在使用者,組,權限這一塊比較搞,特此在這裡總結。

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指派給檔案的時候,極其危險,應謹慎和慎重。