linux-用戶-組-權限

user-group-linux

reference

常用

本文總結了Linux添加或者刪除用戶和用戶組時常用的一些命令和參數.

建用戶

example-01

$ useradd –d /usr/sam -m sam
# 此命令創建了一個用戶sam, 
# 其中-d和-m選項用來爲登錄名sam產生一個主目錄/usr/sam(/usr爲默認的用戶主目錄所在的父目錄).
# 要想自動生成目錄, 必須有 -m 選項. 

example-02

$ useradd -s /bin/sh -g group –G adm,root -d /usr/gemHome -m gem
此命令新建了一個用戶gem, 該用戶的登錄Shell是/bin/sh, 它屬於group用戶組, 同時又屬於adm和root用戶組, 其中group用戶組是其主組. 
adduser phpq               # 新建phpq用戶
passwd phpq                # 給phpq用戶設置密碼

建工作組

groupadd test             # 新建test工作組

新建用戶同時增加工作組

useradd -g test phpq           
# 新建phpq用戶並增加到test工作組
# -g 所屬組 -d 家目錄 -s 所用的SHELL

給已有的用戶增加工作組

usermod -G groupname username (這個會把用戶從其他組中去掉)

usermod -a groupname username

或者:gpasswd -a user group

如果添加了用戶, 添加了組, 然後使這個組裏的人都可以sudo 到公共賬號下

可以/etc/sudoers.d 下面建立一個文件內容如下 , 就可以是etl組的所有用戶都可以無密碼的切到etl用戶下.

%etl ALL=(ALL) NOPASSWD: /bin/su etl
%etl ALL=(ALL) NOPASSWD: /bin/su - etl

sudo 具體參考 http:# www.cnblogs.com/xd502djj/p/6641475.html

臨時關閉

在/etc/shadow文件中屬於該用戶的行的第二個字段(密碼)前面加上就可以了. 想恢復該用戶, 去掉即可.

或者使用如下命令關閉用戶賬號:
passwd peter –l

重新釋放:
passwd peter –u

永久性刪除用戶賬號

userdel peter

groupdel peter

usermod –G peter peter (強制刪除該用戶的主目錄和主目錄下的所有文件和子目錄)

從組中刪除用戶

編輯/etc/group 找到GROUP1那一行, 刪除 A
或者用命令
gpasswd -d A GROUP

顯示用戶信息

id user
cat /etc/passwd

Examples

不同的命令來查看羣組選項的用法

$ sudo useradd tester1

沒有使用任何羣組相關的參數, 默認在創建用戶 tester1 的同時會創建一個同名的羣組. 用戶 tester1 的初始羣組就是這個新建的羣組.

$ sudo useradd tester2 -N

這次我們使用了 -N 選項, 即不要生成與用戶同名的羣組.

查看下 /etc/passwd 文件, 發現 tester2 用戶的初始羣組ID是100. 這個100是哪來的?有ID爲100的羣組嗎?其實100作爲 -N 的默認值是寫在配置文件中的. 不管有沒有ID爲100的羣組, 都是這個值. 當然我們也可以通過修改配置文件來改變這個默認值!

$ sudo useradd tester3 -g sudo

sudo 是一個非常有權勢的羣組, 我決定把 tester3 加入到這個羣組.

現在去查看一下 /etc/passwd 和 /etc/group 文件, 看看有沒有新的羣組被創建? tester3 的初始羣組又是誰?這次沒有創建與 tester3 同名的羣組. 用戶 tester3 的初始羣組變成了 sudo.

$ sudo useradd tester4 -G sudo

和上一條命令相比我們只是把小寫的g替換成了大寫的G.

但結果可相差太多了, 請您一定要好好的檢查 /etc/passwd 和 /etc/group 文件. 因爲這次不僅創建了羣組 tester4, 它還是用戶 tester4 的初始羣組. 和tester1 的唯一不同是 tester4 被加入了 sudo 羣組.

在實際的使用中, tester3 和 tester4 的場景都是比較常見的, 需要根據實際情況進行區分.

家目錄

Useradd 命令對用戶家目錄的處理讓人困惑, 下面我們將通過實驗來了解家目錄相關的不同選項的使用方法:

$ sudo useradd tester1

讓我們重新看看創建用戶 tester1 這條命令. 它不會爲用戶 tester1 創建名爲 tester1 的目錄作爲家目錄, 但是我們打開 /etc/passwd 文件, 發現 tester1 的記錄中居然包含了家目錄 /home/tester1.

$ tester1:x:1005:1005::/home/tester1:

這讓人不可思議, 但這條命令確實是這麼實現的.

$ sudo useradd -m tester5

若要在創建用戶的同時創建用戶的家目錄, 必須指定 -m 選項

$ sudo useradd -d /home/abc tester6

我們希望自己指定家目錄, 此時不生成目錄 abc

$ sudo useradd -d /home/abcd -m tester7

此時生成目錄 abcd, 並且目錄下默認存在文件

常見用例

Case 1: 創建一個帶有家目錄並且可以登錄 bash 的用戶

$ sudo useradd -m -s /bin/bash tester1

Case 2: 指定創建用戶家目錄的路徑

$ sudo useradd -m -d /home/xxx tester2
# /home/xxx目錄會被創建. 

Case 3: 創建一個沒有家目錄且不能登錄的用戶

$ sudo useradd -s /sbin/nologin tester3

Case 4: 創建時把用戶加入不同的用戶組

$ sudo useradd -m -G xxx,sudo tester4

注意過個組名使用逗號分隔, 不能有空格.

初始羣組

什麼是初始羣組?簡單來說在 /etc/passwd 文件中, 每行的第四個字段指定的就是用戶的初始羣組. 用戶登錄後立即就擁有了初始羣組中的權限

選項與參數

  • -c:加上備註文字, 備註文字保存在passwd的備註欄中.
  • -d:指定用戶登入時的主目錄, 替換系統默認值/home/<用戶名>
  • -D:變更預設值.
  • -e:指定賬號的失效日期, 日期格式爲MM/DD/YY, 例如06/30/12. 缺省表示永久有效.
  • -f:指定在密碼過期後多少天即關閉該賬號. 如果爲0賬號立即被停用;如果爲-1則賬號一直可用. 默認值爲-1.
  • -g:指定用戶所屬的羣組. 值可以使組名也可以是GID. 用戶組必須已經存在的, 期默認值爲100, 即users.
  • -G:指定用戶所屬的附加羣組.
  • -m:自動建立用戶的登入目錄. 加-m 如果主目錄不存在則自動創建
  • -M:不要自動建立用戶的登入目錄.
  • -n:取消建立以用戶名稱爲名的羣組.
  • -r:建立系統賬號.
  • -s:指定用戶登入後所使用的shell. 默認值爲/bin/bash.
  • -u:指定用戶ID號. 該值在系統中必須是唯一的. 0~499默認是保留給系統用戶賬號使用的, 所以該值必須大於499.
  • -g vs. -G ::= -g<羣組> 初始羣組; -G<羣組> 非初始羣組.

user配置文件

/etc/passwd # 用戶(user)的配置文件
/etc/shadow # 用戶(user)影子口令文件

group配置文件

/etc/group # 用戶組(group)配置文件
/etc/gshadow # 用戶組(group)的影子文件

user管理工具

  • useradd # 添加用戶
  • adduser # 添加用戶
  • passwd # 爲用戶設置密碼
  • usermod # 修改用戶命令, 可以通過usermod 來修改登錄名、用戶的家目錄等等
  • pwcov # 同步用戶從/etc/passwd 到/etc/shadow
  • pwck # pwck是校驗用戶配置文件/etc/passwd 和/etc/shadow 文件內容是否合法或完整
  • pwunconv # 是pwcov 的立逆向操作, 是從/etc/shadow和 /etc/passwd 創建/etc/passwd , 然後會刪除 /etc/shadow 文件
  • finger # 查看用戶信息工具
  • id # 查看用戶的UID、GID及所歸屬的用戶組
  • chfn # 更改用戶信息工具
  • su # 用戶切換工具
  • sudo # sudo 是通過另一個用戶來執行命令(execute a command as another user), su 是用來切換用戶, 然後通過切換到的用戶來完成相應的任務, 但sudo 能後面直接執行命令, 比如sudo 不需要root 密碼就可以執行root 賦與的執行只有root才能執行相應的命令;但得通過visudo 來編輯/etc/sudoers來實現
  • visudo # visodo 是編輯 /etc/sudoers 的命令;也可以不用這個命令, 直接用vi 來編輯 /etc/sudoers 的效果是一樣的
  • sudoedit # 和sudo 功能差不多

group管理工具

  • groupadd # 添加用戶組
  • groupdel # 刪除用戶組
  • groupmod # 修改用戶組信息
  • groups # 顯示用戶所屬的用戶組
  • grpck
  • grpconv # 通過/etc/group和/etc/gshadow 的文件內容來同步或創建/etc/gshadow , 如果/etc/gshadow 不存在則創建
  • grpunconv # 通過/etc/group 和/etc/gshadow 文件內容來同步或創建/etc/group , 然後刪除gshadow文件

/etc/skel 目錄

/etc/skel目錄一般是存放用戶啓動文件的目錄, 這個目錄是由root權限控制, 當我們添加用戶時, 這個目錄下的文件自動複製到新添加的用戶的家目錄下;/etc/skel 目錄下的文件都是隱藏文件, 也就是類似.file格式的;我們可通過修改、添加、刪除/etc/skel目錄下的文件, 來爲用戶提供一個統一、標準的、默認的用戶環境

[root@localhost beinan]# ls -la /etc/skel/
總用量 92
drwxr-xr-x    3 root root  4096  8月 11 23:32 .
drwxr-xr-x  115 root root 12288 10月 14 13:44 ..
-rw-r--r--    1 root root    24  5月 11 00:15 .bash_logout
-rw-r--r--    1 root root   191  5月 11 00:15 .bash_profile
-rw-r--r--    1 root root   124  5月 11 00:15 .bashrc
-rw-r--r--    1 root root  5619 2005-03-08  .canna
-rw-r--r--    1 root root   438  5月 18 15:23 .emacs
-rw-r--r--    1 root root   120  5月 23 05:18 .gtkrc
drwxr-xr-x    3 root root  4096  8月 11 23:16 .kde
-rw-r--r--    1 root root   658 2005-01-17  .zshrc

/etc/skel 目錄下的文件, 一般是我們用useradd 和adduser 命令添加用戶(user)時, 系統自動複製到新添加用戶(user)的家目錄下;如果我們通過修改 /etc/passwd 來添加用戶時, 我們可以自己創建用戶的家目錄, 然後把/etc/skel 下的文件複製到用戶的家目錄下, 然後要用chown 來改變新用戶家目錄的屬主

/etc/login.defs 配置文件

/etc/login.defs 文件是當創建用戶時的一些規劃, 比如創建用戶時, 是否需要家目錄, UID和GID的範圍;用戶的期限等等, 這個文件是可以通過root來定義的

比如Fedora 的 /etc/logins.defs 文件內容

# *REQUIRED*
#   Directory where mailboxes reside, _or_ name of file, relative to the
#   home directory.  If you _do_ define both, MAIL_DIR takes precedence.
#   QMAIL_DIR is for Qmail
#
#QMAIL_DIR      Maildir
MAIL_DIR        /var/spool/mail  # 創建用戶時, 要在目錄/var/spool/mail中創建一個用戶mail文件
#MAIL_FILE      .mail

# Password aging controls:
#
#       PASS_MAX_DAYS   Maximum number of days a password may be used.
#       PASS_MIN_DAYS   Minimum number of days allowed between password changes.
#       PASS_MIN_LEN    Minimum acceptable password length.
#       PASS_WARN_AGE   Number of days warning given before a password expires.
#
PASS_MAX_DAYS   99999   # 用戶的密碼不過期最多的天數
PASS_MIN_DAYS   0       # 密碼修改之間最小的天數
PASS_MIN_LEN    5       # 密碼最小長度
PASS_WARN_AGE   7       # 

#
# Min/max values for automatic uid selection in useradd
#
UID_MIN                   500  # 最小UID爲500 , 也就是說添加用戶時, UID 是從500開始的
UID_MAX                 60000   # 最大UID爲60000

#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN                   500   # GID 是從500開始
GID_MAX                 60000

#
# If defined, this command is run when removing a user.
# It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument).
#
#USERDEL_CMD    /usr/sbin/userdel_local

#
# If useradd should create home directories for users by default
# On RH systems, we do. This option is ORed with the -m flag on
# useradd command line.
#
CREATE_HOME     yes   # 是否創用戶家目錄, 要求創建

/etc/default/useradd 文件

通過useradd 添加用戶時的規則文件

# useradd defaults file
GROUP=100
HOME=/home  # 把用戶的家目錄建在/home中
INACTIVE=-1  # 是否啓用帳號過期停權, -1表示不啓用
EXPIRE=   # 帳號終止日期, 不設置表示不啓用
SHELL=/bin/bash  # 所用SHELL的類型
SKEL=/etc/skel   #  默認添加用戶的目錄默認文件存放位置;也就是說, 當我們用adduser添加用戶時, 用戶家目錄下的文件, 都是從這個目錄中複製過去的; 

用戶, 任務, 安全

、理解Linux的單用戶多任務, 多用戶多任務概念

Linux 是一個多用戶、多任務的操作系統;我們應該瞭解單用戶多任務和多用戶多任務的概念

Linux 的單用戶多任務

單用戶多任務;比如我們以beinan 登錄系統, 進入系統後, 我要打開gedit 來寫文檔, 但在寫文檔的過程中, 我感覺少點音樂, 所以又打開xmms 來點音樂;當然聽點音樂還不行, MSN 還得打開, 想知道幾個弟兄現在正在做什麼, 這樣一樣, 我在用beinan 用戶登錄時, 執行了gedit 、xmms以及msn等, 當然還有輸入法fcitx ;這樣說來就有點簡單了, 一個beinan用戶, 爲了完成工作, 執行了幾個任務;當然beinan這個用戶, 其它的人還能以遠程登錄過來, 也能做其它的工作.

Linux 的多用戶、多任務

有時可能是很多用戶同時用同一個系統, 但並不所有的用戶都一定都要做同一件事, 所以這就有多用戶多任務之說

舉個例子, 比如LinuxSir.Org 服務器, 上面有FTP 用戶、系統管理員、web 用戶、常規普通用戶等, 在同一時刻, 可能有的弟兄正在訪問論壇;有的可能在上傳軟件包管理子站, 比如luma 或Yuking 兄在管理他們的主頁系統和FTP ;在與此同時, 可能還會有系統管理員在維護系統;瀏覽主頁的用的是nobody 用戶, 大家都用同一個, 而上傳軟件包用的是FTP用戶;管理員的對系統的維護或查看, 可能用的是普通帳號或超級權限root帳號;不同用戶所具有的權限也不同, 要完成不同的任務得需要不同的用戶, 也可以說不同的用戶, 可能完成的工作也不一樣

值得注意的是:多用戶多任務並不是大家同時擠到一接在一臺機器的的鍵盤和顯示器前來操作機器, 多用戶可能通過遠程登錄來進行, 比如對服務器的遠程控制, 只要有用戶權限任何人都是可以上去操作或訪問的

用戶的角色區分

用戶在系統中是分角色的, 在Linux 系統中, 由於角色不同, 權限和所完成的任務也不同;值得注意的是用戶的角色是通過UID和識別的, 特別是UID;在系統管理中, 系統管理員一定要堅守UID 唯一的特性

root 用戶:系統唯一, 是真實的, 可以登錄系統, 可以操作系統任何文件和命令, 擁有最高權限
虛擬用戶:這類用戶也被稱之爲僞用戶或假用戶, 與真實用戶區分開來, 這類用戶不具有登錄系統的能力, 但卻是系統運行不可缺少的用戶, 比如bin、daemon、adm、ftp、mail等;這類用戶都系統自身擁有的, 而非後來添加的, 當然我們也可以添加虛擬用戶
普通真實用戶:這類用戶能登錄系統, 但只能操作自己家目錄的內容;權限有限;這類用戶都是系統管理員自行添加的

多用戶操作系統的安全

多用戶系統從事實來說對系統管理更爲方便. 從安全角度來說, 多用戶管理的系統更爲安全, 比如beinan用戶下的某個文件不想讓其它用戶看到, 只是設置一下文件的權限, 只有beinan一個用戶可讀可寫可編輯就行了, 這樣一來只有beinan一個用戶可以對其私有文件進行操作, Linux 在多用戶下表現最佳, Linux能很好的保護每個用戶的安全, 但我們也得學會Linux 纔是, 再安全的系統, 如果沒有安全意識的管理員或管理技術, 這樣的系統也不是安全的.

從服務器角度來說, 多用戶的下的系統安全性也是最爲重要的, 我們常用的Windows 操作系統, 它在系紡權限管理的能力只能說是一般般, 根本沒有沒有辦法和Linux或Unix 類系統相比

用戶(user)和用戶組(group)

用戶(user)和用戶組(group)概念

用戶(user)的概念

通過前面對Linux 多用戶的理解, 我們明白Linux 是真正意義上的多用戶操作系統, 所以我們能在Linux系統中建若干用戶(user). 比如我們的同事想用我的計算機, 但我不想讓他用我的用戶名登錄, 因爲我的用戶名下有不想讓別人看到的資料和信息(也就是隱私內容)這時我就可以給他建一個新的用戶名, 讓他用我所開的用戶名去折騰, 這從計算機安全角度來說是符合操作規則的

當然用戶(user)的概念理解還不僅僅於此, 在Linux系統中還有一些用戶是用來完成特定任務的, 比如nobody和ftp 等, 我們訪問LinuxSir.Org 的網頁程序, 就是nobody用戶;我們匿名訪問ftp 時, 會用到用戶ftp或nobody ;如果您想了解Linux系統的一些帳號, 請查看 /etc/passwd

用戶組(group)的概念

用戶組(group)就是具有相同特徵的用戶(user)的集合體;比如有時我們要讓多個用戶具有相同的權限, 比如查看、修改某一文件或執行某個命令, 這時我們需要用戶組, 我們把用戶都定義到同一用戶組, 我們通過修改文件或目錄的權限, 讓用戶組具有一定的操作權限, 這樣用戶組下的用戶對該文件或目錄都具有相同的權限, 這是我們通過定義組和修改文件的權限來實現的

舉例:我們爲了讓一些用戶有權限查看某一文檔, 比如是一個時間表, 而編寫時間表的人要具有讀寫執行的權限, 我們想讓一些用戶知道這個時間表的內容, 而不讓他們修改, 所以我們可以把這些用戶都劃到一個組, 然後來修改這個文件的權限, 讓用戶組可讀, 這樣用戶組下面的每個用戶都是可讀的

用戶和用戶組的對應關係

用戶和用戶組的對應關係是:一對一、多對一、一對多或多對多

  • 一對一:某個用戶可以是某個組的唯一成員
  • 多對一:多個用戶可以是某個唯一的組的成員, 不歸屬其它用戶組;比如beinan和linuxsir兩個用戶只歸屬於beinan用戶組
  • 一對多:某個用戶可以是多個用戶組的成員;比如beinan可以是root組成員, 也可以是linuxsir用戶組成員, 還可以是adm用戶組成員
  • 多對多:多個用戶對應多個用戶組, 並且幾個用戶可以是歸屬相同的組;其實多對多的關係是前面三條的擴展;理解了上面的三條, 這條也能理解
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章