Linux時一個真實的、完整的多用戶多任務操作系統,多用戶多任務就是可以在系統上建立多個用戶,而多個用戶可以在同一時間內登錄同一個系統執行各自不同的任務,而互不影響,每個用戶之間不能越權訪問。因此,不同用戶具有不同的權限,每個用戶是在允許的範圍內完成不同的任務,Linux正是通過這種權限的劃分與管理,實現了多用戶多任務的運行機制。
Linux下用戶的角色分類:
-超級用戶:擁有對系統的最高管理權限,默認是root用戶;
-普通用戶:只能對自己目錄下的文件進行訪問和修改,具有登錄系統的權限;
-虛擬用戶:也叫“僞用戶”,這類用戶最大的特點是不能登錄系統,它的存在主要是方便系統管理,滿足相應的系統進程對文件屬主的要求。例如系統默認的bin,adm,nobody用戶等。
用戶:如果要使用系統資源,就必須向系統管理員申請一個賬戶(密碼),通過這個帳號進入系統。該帳號同用戶是一個概念。建立不同屬性的帳號,一方面,可以合理的利用和控制系統資源,另一方面,也可以幫助用戶組織文件,提供對用戶文件的安全性保護。
用戶組:用戶組是具有相同特徵用戶的邏輯集合,有時需要讓多個用戶具有相同的權限,一種方法時分別對多個用戶進行文件訪問授權另一種方法就是建立一個組,讓這個組具有相應的權限,然後將所有需要這些權限的用戶放入這個組中。通過定義用戶組,在很大程度上簡化了管理工作。
用戶與組具有的對應關係有:一對一,一對多,多對一,多對多。
用戶配置文件
-/etc/passwd文件:系統用戶配置文件,時用戶管理中最終要的一個文件。該文件記錄了系統中每個用戶的一些基本屬性,並且對所有用戶可讀。文件中每一行記錄對應一個用戶,每行記錄又被冒號分割。
記錄格式:用戶名:口令:用戶標識號:組標識號:註釋性描述:主目錄:默認shell
-/etc/shadow文件:用戶影子文件,由於/etc/passwd文件時所有用戶都可讀的,這就導致了用戶的密碼容易出現泄露,因此,Linux將用戶的密碼信息從passwd文件中分離出來,單獨放到shadow文件中,該文件只有root用戶擁有讀權限,從而保證了用戶密碼的安全性。
記錄格式:用戶名:加密口令:最後一次修改時間:最小時間間隔:最大時間間隔:警告時間:不活動時間:失效時間:保留字段
-/etc/group文件:用戶組配置文件,用戶組的所有信息都存放在此文件中。
記錄格式:組名:口令:組標識號:組內用戶列表
-/etc/login.defs文件:用來定義創建一個用戶時的默認設置,比如制定用戶的UID和GID的範圍,用戶的過期時間、是否需要創建用戶主目錄等等。
-/etc/default/useradd文件:當我們通過useradd命令不加任何參數創建一個用戶後,用戶默認的主目錄一般位於/home下,默認使用的shell是/bin/bash,這是爲什麼呢,看看/etc/default/useradd這個文件的內容就完全明白了。
-/etc/skel目錄:在創建一個新用戶後,會在新用戶的主目錄下看到類似.bash_profile, .bashrc, .bash_logout等文件,這些文件是怎麼來的呢,如果我想讓新建立的用戶在主目錄下默認擁有自己指定的配置文件,該如何設置呢?
/etc/skel目錄就是解決這個問題的,/etc/skel目錄定義了新建用戶在主目錄下默認的配置文件,更改/etc/skel目錄下的內容就可以改變新建用戶默認主目錄的配置文件信息。
一、用戶賬號的管理
用戶帳號的管理工作主要設計到用戶帳號的添加、修改和刪除。
1、添加新的用戶賬號——useradd命令
添加用戶帳號就是在系統中創建一個新帳號;然後爲新帳號分配用戶號、用戶組、矚目路和登錄Shell等資源。剛添加的帳號是被鎖定的,無法使用。
添加用戶賬號就是在/etc/passwd文件中爲新用戶增加一條記錄,同時更新其他系統文件如/etc/shadow, /etc/group等.
Linux提供了集成的系統管理工具userconf,它可以用來對用戶賬號進行統一管理。
語法:
useradd 選項 用戶名
選項:
-c comment 指定一段註釋性描述。
-d 目錄 指定用戶主目錄,如果此目錄不存在,則同時使用-m選項,可以創建主目錄。
-g 用戶組 指定用戶所屬的用戶組。
-G 用戶組 用戶組 指定用戶所屬的附加組。
-s Shell文件 指定用戶的登錄Shell。
-u 用戶號 指定用戶的用戶號,如果同時有-o選項,則可以重複使用其他用戶的標識號。
用戶名 指定新用戶的登錄名。
2、刪除用戶帳號——userdel命令
如果一個用戶的帳號不再使用,可以從系統中刪除。
刪除用戶帳號就是要將/etc/passwd等系統文件中的該用戶記錄刪除,必要時還刪除用戶的主目錄。
語法:
userdel 選項 用戶名
選項:
-r, 把用戶的主目錄一起刪除。
3、修改用戶帳號——usermod命令
修改用戶帳號就是根據實際情況更改用戶的有關屬性,如用戶號、主目錄、用戶組、登錄Shell等。
語法:
usermod 選項 用戶名
選項:
同useradd命令中的選項一樣。
二、用戶口令的管理
用戶帳號剛創建時沒有口令,但是被系統鎖定,無法使用,必須爲其指定口令後纔可以使用,即便是指定空口令。
1.指定和修改口令——passwd命令
超級用戶可以爲自己和其他用戶指定口令,爲其它用戶修改時不許要知道原口令;普通用戶只能用它修改自己的口令,使用passwd,需要輸入原口令。
語法:
passwd 選項 用戶名
選項:
-l 鎖定口令,即禁用賬號。
-u 口令解鎖。
-d 使賬號無口令。
-f 強迫用戶下次登錄時修改口令。
如果默認用戶名,則修改當前用戶的口令。
三、用戶組的管理
每個用戶都有一個用戶組,系統可以對一個用戶組中的所喲用戶進行集中管理。
不同Linux系統對用戶組的規定有所不同,如Linux下的用戶屬於與它同名的用戶組,這個用戶組在創建用戶時同時創建。
組的管理實際上就是對/etc/group文件的更新。
1、用戶組的增加——groupadd命令
語法:
groupadd 選項 用戶組
選項:
-g GID 指定新用戶組的組標識號(GID)。
-o 一般與-g選項同時使用,表示新用戶組的GID可以與系統已有用戶組的GID相同。
2、用戶組的修改——groupmod命令
語法:
groupmod 選項 用戶組
選項:
-g GID 爲用戶組指定新的組標識號。
-o 與-g選項同時使用,用戶組的新GID可以與系統已有用戶組的GID相同。
-n 新用戶組 將用戶組的名字改爲新名字
3、用戶組的刪除——groupdel命令
語法:
groupdel 用戶組
4、用戶在用戶組之間的切換——newgrp命令
用戶可以在登錄後,使用該命令切換到其他用戶組。
語法:
newgrp 目標用戶組
四、用戶root權限的賦予方法
1、修改 /etc/sudoers 文件,找到下面一行,把前面的註釋(#)去掉
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
然後修改用戶,使其屬於root組(wheel),命令如下:
#usermod -g root tommy
修改完畢,現在可以用tommy帳號登錄,然後用命令 su – ,即可獲得root權限進行操作。
2、修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示:
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
tommy ALL=(ALL) ALL
修改完畢,現在可以用tommy帳號登錄,然後用命令 sudo – ,即可獲得root權限進行操作。
3、修改 /etc/passwd 文件,找到如下行,把用戶ID修改爲 0 ,如下所示:
tommy:x:0:33:tommy:/data/webroot:/bin/bash
修改完畢,現在可以用tommy帳號登錄,然後用命令su- ,即可獲得root權限。
建議使用方法二,不要輕易使用方法三。
感謝以下兩篇博文的總結:
1.Linux下添加用戶並賦予root權限. http://blog.csdn.net/stormbjm/article/details/9086163
2.淺談Centos用戶權限管理. http://www.centoscn.com/CentOS/Intermediate/2013/0803/929.html