自學Linux Shell7.1-linux用戶帳戶和組

點擊返回 自學Linux命令行與Shell腳本之路html

7.1-linux用戶帳戶和組

linux安全系統的核心是用戶帳戶。
每一個能進入linux系統的用戶都會被分配惟一的用戶帳戶,用戶對系統中各對象的訪問權限取決於他們登錄時用的帳戶。
用戶權限是經過建立用戶時分配的用戶ID(UID)來跟蹤的。linux

1. 用戶帳戶

Linux系統使用特定的文件和工具來跟蹤和管理系統上的用戶帳戶,常用的有/etc/passwd    /etc/shadow   shell

 1.1  /etc/passwd 文件

  •  /etc/passwd文件中的每一個用戶都有一個對應的記錄行,記錄着這個用戶的一下基本屬性
  • 該文件對全部用戶可讀
  • 該文件內root用戶帳戶是linux系統管理員,固定分配UID爲0
  • linux系統爲各式各樣的系統建立不一樣的用戶帳戶,這些帳戶爲系統帳戶,爲這些預留500如下的UID值


解釋一下     carlos:x:1000:1000:yk,,,:/home/carlos:/bin/bash  (上面截圖不完整,沒有顯示)ubuntu

  • 用戶名(login_name):是表明用戶帳號的字符串。一般長度不超過8個字符,而且由大小寫字母和/或數字組成。
                      登陸名中不能有冒號(:),由於冒號在這裏是分隔符。爲了兼容起見,登陸名中最好不要包含點字符(.),而且不使用連字符(-)和加號(+)打頭。
  • 口令(passwd): 一些系統中,存放着加密後的用戶口令字。雖然這個字段存放的只是用戶口令的加密串,不是明文,可是因爲/etc/passwd文件對全部用戶均可讀,因此這還是一個安全隱患。
                      所以,如今許多Linux系統(如SVR4)都使用了shadow技術,把真正的加密後的用戶口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一個特殊的字符,例如「x」或者「*」。
  • 用戶標識號(UID):是一個整數,系統內部用它來標識用戶。通常狀況下它與用戶名是一一對應的。
                      若是幾個用戶名對應的用戶標識號是同樣的,系統內部將把它們視爲同一個用戶,可是它們能夠有不一樣的口令、不一樣的主目錄以及不一樣的登陸Shell等。
                      取值範圍是0-65535。0是超級用戶root的標識號,1-99由系統保留,做爲管理帳號,普通用戶的標識號從100開始。在Linux系統中,這個界限是500。
  • 組標識號(GID):字段記錄的是用戶所屬的用戶組。它對應着/etc/group文件中的一條記錄。
  • 註釋性描述(users):字段記錄着用戶的一些我的狀況,例如用戶的真實姓名、電話、地址等,這個字段並無什麼實際的用途。
                      在不一樣的Linux系統中,這個字段的格式並無統一。在許多Linux系統中,這個字段存放的是一段任意的註釋性描述文字,用作finger命令的輸出。
  • 主目錄(home_directory):也就是用戶的起始工做目錄,它是用戶在登陸到系統以後所處的目錄。在大多數系統中,各用戶的主目錄都被組織在同一個特定的目錄下,而用戶主目錄的名稱就是該用戶的登陸名。
                     各用戶對本身的主目錄有讀、寫、執行(搜索)權限,其餘用戶對此目錄的訪問權限則根據具體狀況設置。
  • 登陸Shell(Shell):用戶登陸後,要啓動一個進程,負責將用戶的操做傳給內核,這個進程是用戶登陸到系統後運行的命令解釋器或某個特定的程序,即Shell。Shell是用戶與Linux系統之間的接口。
                      Linux的Shell有許多種,每種都有不一樣的特色。系統管理員能夠根據系統狀況和用戶習慣爲用戶指定某個Shell。若是不指定Shell,那麼系統使用sh爲默認的登陸Shell,即這個字段的值爲/bin/sh。

 1.2  /etc/shadow 文件

  • 只有root才能訪問/etc/shadow文件
  • /etc/shadow文件爲每個用戶帳戶都保存了一條密碼記錄

大部分Linux發行版的默認帳戶是普通用戶,而更改系統文件或者執行某些命令(此時的/etc/shadow文件),須要root身份才能進行,這就須要從當前用戶切換到root用戶,Linux中切換用戶的命令是  su  或  su - 
安全

初始化root密碼:
Ubuntu剛安裝後,不能在terminal中運行su命令,由於root沒有默認密碼,須要手動設定。安裝ubuntu時輸入的用戶名登錄,該用戶在admin組中,有權限給root設定密碼.bash

  • 打開一個terminal,而後輸入下面的命令 sudo passwd root
  • 回車後會出現讓你輸入原始密碼,新密碼和確認密碼,這樣root的密碼設置完畢

 這樣才能在terminal中利用su  su- 就能夠切換到root用戶了, exit退出root用戶返回原用戶。服務器

  •  su      只是切換了root身份,但Shell環境仍然是普通用戶的Shell
  •  su -    連用戶和Shell環境一塊兒切換成root身份了。只有切換了Shell環境纔不會出現PATH環境變量錯誤。
     su切換成root用戶之後,pwd一下,發現工做目錄仍然是普通用戶的工做目錄;
     su -命令切換之後,工做目錄變成root的工做目錄了。
     用echo $PATH命令看一下su和su - 之後的環境變量有何不一樣。以此類推,要從當前用戶切換到其它用戶也同樣,應該使用su -命令。

介紹sudo:工具

因爲su 對切換到超級權限用戶root後,權限的無限制性,因此su並不能擔任多個管理員所管理的系統。若是用su 來切換到超級用戶來管理系統,也不能明確哪些工做是由哪一個管理員進行的操做。特別是對於服務器的管理有多人蔘與管理時,最好是針對每一個管理員的技術特長和 管理範圍,而且有針對性的下放給權限,而且約定其使用哪些工具來完成與其相關的工做,這時咱們就有必要用到 sudo。ui

經過sudo,咱們能把某些超級權限有針對性的下放,而且不須要普通用戶知道root密碼,因此sudo 相對於權限無限制性的su來講,仍是比較安全的,因此sudo 也能被稱爲受限制的su ;另外sudo 是須要受權許可的,因此也被稱爲受權許可的su;加密

sudo 執行命令的流程是當前用戶切換到root(或其它指定切換到的用戶),而後以root(或其它指定的切換到的用戶)身份執行命令,執行完成後,直接退回到當前用戶;而這些的前提是要經過sudo的配置文件/etc/sudoers來進行受權;

如今有權限看/etc/shadow文件:

 

  • 「登陸名」是與/etc/passwd文件中的登陸名相一致的用戶帳號
  • 「口令」字段存放的是加密後的用戶口令字:
         若是爲空或!,則對應用戶沒有口令,登陸時不須要口令;
         *星號表明賬號被鎖定;
         !!表示這個密碼已通過期了;
         $6$開頭的,代表是用SHA-512加密;
         $1$代表是用MD5加密;
         $2$ 是用Blowfish加密;
         $5$ 是用 SHA-256加密;
  • 「最後一次修改時間」表示的是從某個時刻起,到用戶最後一次修改口令時的天數。時間起點對不一樣的系統可能不同。例如在SCOLinux中,這個時間起點是1970年1月1日。
  • 「最小時間間隔」指的是兩次修改口令之間所需的最小天數。
  • 「最大時間間隔」指的是口令保持有效的最大天數。
  • 「警告時間」字段表示的是從系統開始警告用戶到用戶密碼正式失效之間的天數。
  • 「不活動時間」表示的是用戶沒有登陸活動但帳號仍能保持有效的最大天數。
  • 「失效時間」字段給出的是一個絕對的天數,若是使用了這個字段,那麼就給出相應帳號的生存期。期滿後,該帳號就再也不是一個合法的帳號,也就不能再用來登陸了。

 1.3   用戶帳戶操做

Linux 系統中,UID以以下的方式劃分:

  • 0 表示管理員(root)
  • 1 - 500 表示系統用戶
  • 501 - 65535 表示普通用戶
  • 不一樣的 Linux 發行版,這些數字可能不同

1.3.1  useradd 命令:添加用戶

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

 useradd -D 能夠查看linux系統中默認的值

  • 新添加的用戶會被添加到GIQ位100的公共組
  • 新添加的用戶HOME目錄在/home
  • 新添加的用戶密碼在過時後不會被禁用
  • 新添加的用戶未被設置過時時間
  • 新添加的用戶將sh做爲默認的shell
  • 系統會叫/etc/skel目錄下的內容複製到用戶的HOME目錄下
  • 系統爲該用戶帳號在mail目錄下建立一個用於接收郵件的文件

 

 useradd -D 選項後面跟一個指定的值能夠修改系統默認的新用戶的設置,主要有:

  • -b   更改新添加的用戶HOME目錄在/home
  • -e  更改新添加的用戶過時時間
  • -f   更改新添加的用戶從密碼過時到帳號被禁的天數
  • -g  更改新添加的用戶的組名稱或者GID
  • -s  更改新添加的用戶shell

1.3.2  userdel命令:刪除用戶

  •   userdel 會修改系統帳戶文件,因此須要root特權來運行它
  •  不帶選項使用 userdel,只會刪除/etc/passwd文件中的用戶信息,不會刪除該系統中屬於該帳戶的任何文件
  •  userdel -r 會刪除用戶的HOME目錄以及郵箱目錄

 

1.3.3 用戶帳戶修改的命令

  • usemod       修改用戶帳戶的字段

    基本用法和 useradd 類似,這裏列出須要注意的點
    usermod -G GROUPS USERNAME:改變用戶的附加組,會徹底替換原有的附加組
    usermod -G -a GROUPS USERNAME:在原有附加組的基礎上追加附加組
    usermod -d PATH USERNAME:修改家目錄。修改後原先家目錄中的文件不能訪問了,由於在當前的家目錄中並不存在這些文件。
    usermod -l NEWNAME USERNAME:改變用戶名
    usermod -e USERNAME:指定該用戶的過時時間
    usermod -L USERNAME:鎖定用戶
    usermod -U USERNAME:解鎖用戶

  • passwd        修改已有用戶的密碼

    若是省略用戶名,意味着更改當前登陸用戶的密碼;
    若是指定用戶名,更改指定用戶的密碼,只能root使用;

    passwd --stdio:標準輸入讀取密碼passwd -l:鎖定用戶帳號(root only)
    echo "newpassword" | passwd --stdio MIKE
    passwd -u:解鎖用戶帳號(root only)
    passwd -d:刪除用戶密碼。用戶密碼刪除後不能登陸。

  • chpasswd    從文件中讀取登錄名密碼對,並更新密碼
  • change        修改密碼的過時日期
  • chfn             修改用戶帳戶的備註信息
    chfn USERNAME:修改註釋信息,用來增長用戶的詳細信息,如公司,地址等。能夠由 finger 查看相應的改變。
  • chsh            修改用戶帳戶的默認登錄shell
    chsh SHELL USERNAME:改變默認 shell
  • id   查看賬號屬性 

    格式: id user1      顯示user1的uid和gid ,缺省爲當前用戶的id信息
        真實的ID:在/etc/passwd定義的用戶的UID和GID
        有效的ID:當前生效的用戶的UID和GID

  

2. 組帳戶

  • 每一個用戶都有一個用戶組,系統能夠對一個用戶組中的全部用戶進行集中管理
  • 不一樣Linux 系統對用戶組的規定有所不一樣,如Linux下的用戶屬於與它同名的用戶組,這個用戶組在建立用戶時同時建立
  • 每一個組都有惟一的GID,還有一個惟一的組名
  • 用戶組的管理涉及用戶組的添加、刪除和修改。組的增長、刪除和修改實際上就是對/etc/group文件的更新
  • 當一個用戶在/etc/passwd文件中指定某個組做爲默認組時,用戶帳戶不會做爲該組成員再出如今/etc/group文件中

2.1  /etc/group 文件 

每行組用戶包含4個字段:

  • 組名
  • 組密碼
  • GID
  • 屬於該組的用戶列表

2.2  groupadd 建立組

groupadd 選項 用戶組 

  •     -g     gid在建立組帳戶的時候,指定組帳戶的GID
                若是不使用該選項指定,系統會選擇在組解析文件中出如今的不大於60000最大的GID加1;
  •     -r     建立系統組,意思就是建立一個GID在1~999(1~499)之間的組;

 

2.3  groupdel 刪除組

2.4 gorupmod 修改組

  •  -g  gid:修改組帳戶的ID;
  •  -n :修改組名;

 

最後備註:若是一個用戶同時屬於多個用戶組,那麼用戶能夠在用戶組之間切換,以便具備其餘用戶組的權限。用戶能夠在登陸後,使用命令newgrp切換到其餘用戶組,這個命令的參數就是目的用戶組。

相關文章
相關標籤/搜索