天天看點

Linux篇之使用者管理

一、使用者帳号管理

1.添加使用者

添加使用者賬号就是在系統中建立一個新賬号,然後為新賬号配置設定使用者号、使用者組、主目錄和登入Shell等資源。剛添加的賬号是被鎖定的,無法使用。

使用useradd指令

其中:

-g 指定該使用者的首要組

-G 指定該使用者的次要組

-d 指定該使用者的Home 目錄

-p 指定該使用者的密碼

2.删除使用者

如果一個使用者賬号不再使用,能從系統中删除。删除使用者賬号就是要将/etc/passwd等系統檔案中的該使用者記錄删除,必要時還要删除使用者的主目錄。删除一個已有的使用者賬号使用userdel指令,格式如下:

代碼:

userdel 選項 使用者名

常用的選項是-r,他的作用是把使用者的主目錄一起删除。

例如:

此指令删除使用者sam在系統檔案(主要是/etc/passwd,/etc/shadow,/etc/group等)中的記錄,同時删除使用者的主目錄。

3.更改使用者帳号

修改使用者賬号就是根據實際情況更改使用者(chgrp是針對檔案而言)的有關屬性,如使用者号、主目錄、使用者組、登入Shell等。

修改已有使用者的資訊使用usermod指令,格式如下:

代碼:

usermod 選項 使用者名[隻有超級管理者才有權限修改帳号名]

代碼:

-l 新使用者名

這個選項指定一個新的賬号,即将原來的使用者名改為新的使用者名。

例如:

此指令将使用者sam的登入Shell修改為csh,主目錄改為/home/z,使用者組改為developer。

#此指令是改動使用者sam所屬的組為group2這個組

4.檢視帳号資訊

(1)檢視uid,gid.所屬組

格式: id sam
           

顯示sam的uid和gid ,預設為目前使用者的id資訊

[root@foundation79 ~]# id sam
uid=(sam) gid=(newgroup) groups=(newgroup)
           

(2)檢視所屬組

格式:  groups       
           

groups sam 顯示使用者user1所在的組,預設為目前使用者所在的組資訊

[root@foundation79 ~]# groups sam
sam : newgroup
           

二、使用者組管理

每個使用者都有一個使用者組,系統能對一個使用者組中的所有使用者進行集中管理。不同Linux系統對使用者組的規定有所不同,如Linux下的使用者屬于和他同名的使用者組,這個使用者組在建立使用者時同時建立。使用者組的管理涉及使用者組的添加、删除和修改。組的增加、删除和修改實際上就對/etc/group檔案的更新。

使用者組(group)就是具有相同特征的使用者(user)的集合體;比如有時我們要讓多個使用者具有相同的權限,比如檢視、修改某一檔案或執行某個指令,這時我們需要使用者組,我們把使用者都定義到同一使用者組,我們通過修改檔案或目錄的權限,讓使用者組具有一定的操作權限,這樣使用者組下的使用者對該檔案或目錄都具有相同的權限,這是我們通過定義組和修改檔案的權限來實作的;

1.添加組

增加一個新的使用者組使用groupadd指令。格式如下:

代碼:

groupadd 選項 使用者組[使用者組添加後,将使用者進行組賦予用chown和chgrp指令]

常用的選項有:

-g GID 指定新使用者組的組辨別号(GID)。

-o 一般和-g選項同時使用,表示新使用者組的GID能和系統已有使用者組的GID相同。

此指令向系統中增加了一個新組group1,新組的組辨別号是在目前已有的最大組辨別号的基礎上加1。

此指令向系統中增加了一個新組group2,同時指定新組的組辨別号是101。

2.删除組

使用groupdel指令,格式如下:

groupdel 使用者組
           

此指令從系統中删除組group1。

使用groupmod指令。其文法如下:

groupmod 選項 使用者組
           

常用的選項有:

-g GID 為使用者組指定新的組辨別号。

-o 和-g選項同時使用,使用者組的新GID能和系統已有使用者組的GID相同。

-n 新使用者組 将使用者組的名字改為新名字

此指令将組group2的組辨別号修改為102。

3.使用者組檔案

使用者組的所有資訊都存放在/etc/group檔案中。

每個使用者都屬于某個使用者組;一個組中能有多個使用者,一個使用者也能屬于不同的組。當 一個使用者同時是多個組中的成員時,在/etc/passwd檔案中記錄的是使用者所屬的主組,也就是登入時所屬的預設組,而其他組稱為附加組。使用者要通路屬于附加組的檔案時,必須首先使用newgrp指令使自己成為所要通路的組中的成員。

使用者組的所有資訊都存放在/etc/group檔案中。此檔案的格式也 類似于/etc/passwd檔案,由冒号隔開若幹個字段,這些字段有:

組名:密碼:組辨別号:組内使用者清單

(1)“組名”是使用者組的名稱,由字母或數字構成。和/etc/passwd中的登入名相同,組名不應重複。

(2)“密碼”字段存放的是使用者組加密後的密碼字。一般Linux系統的使用者組都沒有密碼,即這個字段一般為空,或是*。

(3)“組辨別号”和使用者辨別号類似,也是個整數,被系統内部用來辨別組。

(4)“組内使用者清單”是屬于這個組的所有使用者的清單,不同使用者之間用逗号“,”分隔。這個使用者組可能是使用者的主組,也可能是附加組。

/etc/group檔案的一個例子如下:

[[email protected] ~]# cat /etc/group
root:x::
bin:x::
daemon:x::
sys:x::
adm:x::
tty:x::
disk:x::
lp:x::
mem:x::
kmem:x::
wheel:x::
cdrom:x::
           

權力下放

在Linux系統中,管理者建立一些普通使用者,配置設定一部分系統管理工作給他們。通過sudo,我們能把某些終極權限有針對性的下放,并且不必普通使用者知道root密碼,是以相對于權限無限制性的su來說,會比較安全。另外sudo 是需要授權許可的,執行指令的流程是目前使用者轉換到root(或其他指定轉換到的使用者),然後以root(或其他指定的轉換到的使用者)身份執行指令,執行完成後,直接退回到目前使用者;而這些的前提是要通過sudo的設定檔案/etc/sudoers來進行授權;

sudo 通過維護一個特權到使用者名映射的資料庫将特權配置設定給不同的使用者,這些特權可由資料庫中所列的一些不同的指令來識别。為了獲得某一特權項,有資格的使用者隻需簡單地在指令行輸入sudo和指令名之後,按照提示再次輸入密碼。例如,sudo允許普通使用者格式化磁盤,不過卻沒有賦予其他的root使用者特權。

1.定位需要配置給sudo使用者的指令檔案

以usermod為例:

[[email protected] ~]# whereis usermod
usermod: /usr/sbin/usermod /usr/share/man/man8/usermod.gz
           

2.查詢主機名

[root@localhost ~]# hostname
localhost
           

2.用visudo編輯sudoers檔案

用visudo而不用vim工具的好處是在添加規則有誤時,儲存退出會提示給我們錯誤資訊

sudo工具由檔案/etc/sudoers進行設定,該檔案包含所有能通路sudo工具的使用者清單并定義了他們的特權。

例:

root ALL=(ALL) ALL

vincent localhost=(root) NOPASSWD: /usr/sbin/usermod

若需要改為可執行所有指令:

vincent ALL=(ALL:ALL) ALL

這個條目使得使用者vincent作為終極使用者通路所有應用程式。

3.在sudoer使用者檢測

由于vincet被下放了執行usermod的權力,是以可以更改其他使用者模式。

[vincent@localhost ~]$ sudo usermod -u  newuser
[vincent@localhost ~]$ id newuser
uid=(newuser) gid=(newuser) groups=(newuser)
           

同時,執行其他超戶指令顯然就不可以了。

[vi[email protected] ~]$ sudo useradd impossible
Sorry, user vincent is not allowed to execute '/sbin/useradd impossible' as root on localhost.
           

5.sudo其他指令

sudo指令還能加上一些參數,完成一些輔助的功能,如:

-V 顯示版本編号。

-h 顯示sudo指令的使用參數。

-v 因為sudo在第一次執行時或是在N分鐘内沒有執行(N預設為5)會詢問密碼。這個參數是重新做一次确認,如果超過N分鐘,也會問密碼。

-k 将會強迫使用者在下一次執行sudo時詢問密碼(不論有沒有超過N分鐘)。

-b 将要執行的指令放在背景執行。

-p prompt 能更改問密碼的提示語,其中%u會替換為使用者的賬号名稱,%h會顯示主機名稱。

-u username/#uid 不加此參數,代表要以root的身份執行指令,而加了此參數,能以username的身份執行指令(#uid為該username的UID)。

-s 執行環境變量中的SHELL所指定的Shell,或是/etc/passwd裡所指定的Shell。

-H 将環境變量中的HOME(宿主目錄)指定為要變更身份的使用者的宿主目錄。(如不加-u參數就是系統管理者root。)

要以系統管理者身份(或以-u更改為其他人)執行的指令。

繼續閱讀