Linux基礎知識整理 8 賬號管理

2021-06-02 13:26:10 字數 4102 閱讀 7517

賬號管理

使用者id與群組id

linux並不認識賬號名稱,它認識的其實是賬號id。即linux只認識代表身份的號碼,而對應的號碼與賬號則是記錄在/etc/passwd中。

登入linux主機

在輸入賬號與密碼之後,linux會:

①先查詢/etc/passwd中是否有這個賬號,如果沒有則跳出,如果有則將該賬號對應的uid(user id)與gid(group id)讀出來。另外,該賬號的根目錄與shell設定也一併讀出。

②然後核對密碼表。這時linux會進入/etc/shadow中找出對應的賬號與uid,然後核對您剛剛輸入的密碼與其密碼是否相符。

③一切妥當之後,進入shell。

uid、gid、suid 與sgid

每個檔案都會有所謂的擁有者id與擁有群組id,亦即uid與gid,然後系統依據/etc/passwd的內容,將該檔案的擁有者與群組名稱、使用賬號的形式顯示出來; uid為0時,就是root。

/etc/passwd 檔案:在這個檔案中,每一行代表乙個賬號,有幾行就代表在您的系統中有幾個賬號。

/etc/shadow 檔案:存放賬號對應的密碼。

/etc/group:這個檔案可以讓您直接將賬號所要支援的群組加進來。

/etc/gshadow:存放群組密碼。

增加使用者的一般步驟

添**組:groupadd

[root @test /root ]# groupadd [-g gid]groupname

-g gid:自行設定gid的大小

[root @test /root]# groupadd -g 55testing <==設定乙個群組,gid為55

也可以直接修改/etc/group與/etc/gshadow這兩個檔案,根本不需要使用這個指令,使用vi修改上面兩個檔案更簡單。如果要新增的使用者所在群組並不存在於系統中,那麼在增加使用者賬號之前,必須先新增群組。

刪除群組:groupdel

[root @test /root ]# groupdel groupname

[root @test /root]# groupdel testing

在刪除群組之前,請先將該群組的primary使用者刪除。primary就是/etc/passwd中其gid設定為這個群組的gid

的使用者。

新增使用者:useradd

[root @test /root ]# useradd [-u uid] [-ggid] [-d home] [-mm] [-s shell] username

-u :直接給出乙個uid

-g :直接給出乙個gid(此gid必須已經存在於/etc/group中)

-d :直接將其根目錄指向已經存在的目錄(系統不會再建立)

-m :不建立根目錄

-s :定義其使用的shell

[root @test /root]# useradd testing

直接以預設資料建立乙個名為testing的賬號

[root @test /root]# useradd -u 720 -g 100-m -s /bin/bash testing

以自己的設定建立賬號

刪除使用者:userdel

[root @test /root ]# userdel [-r] username

-r :將該賬號的[home directory]與[/var/spool/mail/username]一併刪除

[root @test /root]# userdel testing

只刪除/etc/passwd與/etc/shadow中該賬號的內容

[root @test /root]# userdel -r testing

連同該賬號的/home/testing與/var/spool/mail/testing一起刪除

chsh

[root @test /root ]# chsh [-l] [-sshellname]

-l :列出當前機器上能用的shell名稱

-s :將當前的shell變為shellname

[test @test /root]# chsh -l <==列出本機上所有能用的shell名稱

/bin/sh

/bin/bash

/bin/ash

/bin/bsh

/bin/csh

[test @test /root]# chsh -s /bin/csh <==test使用者自行改變自己的預設shell

密碼管理與設定:passwd

root可以設定任何樣式的密碼,而且,root可以幫助user設定他們的密碼,而user僅能修改自己的密碼。修改密碼使用passwd這個命令。passwd必須具有suid才能讓一般使用者修改其密碼。

[root @test /root]# passwd [username]

[test @test /root]# passwd <==一般使用者自行修改密碼

[root @test /root]# passwd test <==root幫助修改密碼

changing password for user test

new password: <==輸入密碼

bad password: it is based on a dictionaryword

retype new password: <==再次輸入

passwd: all authentication tokens updated successfully

使用者身份切換

將一般使用者變成root:

①以su直接將身份變成root。這個指令需要root的密碼,也就是說,如果您要以su變成root,您的一般使用者必須有root的密碼。

[root@test /root ]# su

[test@testtest]$ su

password:<==輸入root的密碼

[root@testtest]# <==身份變成root

雖然您已經是root,但是您的環境還是屬於當初登入的那個使用者。例如,我以test登入linux,再以su切換身份成為root,但是我的mail,path及其他相關的環境變數,都還是test這個身份的。單純使用su變換成root身份,最大的好處是可以直接輸入我們慣用的指令

②如果多人同時管理一台主機,那麼,root的密碼就有很多人知道了,這樣不好。所以,不想將root的密碼透露出去,可以使用sudo。

[root@test /root ]# sudo[-u username] [command]

-u :將身份變成username的身份

[test@test test]$ sudo mkdir /root/testing

password:<==輸入test的密碼

[root@testtest]# sudo -u test touch test

root可以執行test使用者的指令,建立test的檔案

不需要root的密碼仍可以執行root的工具,這時就可以使用sudo。由於執行root身份的工作時,輸入的密碼是使用者的密碼,而不是root的密碼,所以可以減少root密碼外洩的可能性。

使用者查詢

可以直接到/etc/passwd及/etc/group中檢視,但還有更簡單的方法,就是使用簡單的指令工具:

①id 查詢使用者的uid,gid及所擁有的群組;

[root@test root]# id [username]

[root @test root]# id

uid=0(root)gid=0(root) groups=0(root)

[root@test root]# id test

uid=501(test)gid=501(test) groups=501(test)

③finger 查詢使用者的一些相關資訊,如**號碼等。

[root@test root]# finger [-s] username

-s :完整列出

Linux基礎知識整理

chgrp命令 chgrp r dirname filename r 進行遞迴的持續對所有檔案和子目錄更改 例如 chgrp users r dir 遞迴地把dir目錄下中的所有檔案和子目錄下所有檔案的使用者組修改為users chown命令 用於改變檔案的所有者 chmod命令 用於改變檔案的許可...

Linux賬號管理基礎知識總結

linux 使用者管理 使用者賬號管理 一.新增賬號 useradd adduser option username 新增使用者 option g 組名 指定該使用者的私有組 g 附屬組名 新增附屬組 d 顯示或設定該命令預設屬性 d 指定使用者家目錄若無該目錄使用 m自動建立該目錄 u 指定賬號u...

C 面試基礎知識整理(8)

元件描述 容器 containers 容器是用來管理某一類物件的集合。c 提供了各種不同型別的容器,比如 deque list vector map 等。演算法 algorithms 演算法作用於容器。它們提供了執行各種操作的方式,包括對容器內容執行初始化 排序 搜尋和轉換等操作。迭代器 itera...