RH124學習筆記---linux用戶(user)和組(group)管理

linux的用戶和用戶組

用戶是必須的嗎?python

用戶:標識計算機上的資源的歸屬
密碼:對用戶的身份作驗證

登陸的時候計算機如何作身份驗證?mysql

在計算機內部預先有一個數據庫,在數據庫中保存用戶名和對應的密碼,用戶登陸時候經過比對數據庫來檢查用戶和密碼是否正確

什麼是數據庫?
用來保存數據的文件,數據庫管理軟件(oracle mysql sqlserver db2)linux

保存帳號和密碼的數據庫文件算法

/etc/passwd   <<<< 保存系統中的所有的用戶名
/etc/shadow   <<<< 保存各個用戶的密碼
/etc/group    <<<< 保存系統中的所有用戶組名
/etc/gpasswd  <<<< 保存各個用戶組的密碼

windows下新建用戶sql

計算機-管理-本地用戶和組-用戶-新建 (用戶名 密碼)
計算機-管理-本地用戶和組-組-新建(用戶組)添加用戶
windows下有用戶和組,linux中一樣有用戶和,linux中一個用戶也能夠同屬多個組,100個用戶受權的話須要受權100次,直接把用戶加到組中,直接受權組

用戶和用戶組shell

用戶:登陸系統的用戶名
用戶組:多個用戶的合集

用戶組的做用數據庫

方便爲多個用戶批量受權

用戶身份標識vim

計算機爲每個用戶設置一個惟一的數字,當計算機識別用戶的時候,經過
該數字來識別的,數字就是UID(User IDentifier)

用戶組身份標識windows

GID

注意:爲用戶賦權的時候,實際上是針對uid賦權的
例子:zs--uid=601
賦權:zs能夠訪問文件a.txt
本質:讓uid爲601的用戶能夠訪問a.txt安全

/etc/passwd文件詳解

cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

文件的做用
這個文件中保存了系統中的所有用戶,每行是一個用戶
每一個用戶的信息包括7部分,以下
第一段:用戶名
第二段:用戶密碼佔位符,爲了安全將密碼放在另一個文件中
(/etc/shadow)
第三段:用戶的UID
第四段: 用戶所在組的GID(該組是用戶的基本組)
第五段:用戶的描述信息(能夠隨便寫)
第六段:用戶的家目錄
第七段:用戶的shell類型
    常見的shell類型
     1:/bin/bash <<<< 默認是該shell的時候,能夠登陸系統
     2:/sbin/nologin  <<<改shell的用戶是沒法登陸系統的
例子:統計有多少用戶
    [root@localhost ~]# cat /etc/passwd | wc -l
例子:統計當前系統中有多少用戶能夠登陸系統
    [root@localhost ~]# grep "/bin/bash$" /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    zhangsan:x:500:500::/home/zhangsan:/bin/bash
    lisi:x:502:502::/home/lisi:/bin/bash
    zs:x:503:503::/home/zs:/bin/bash
    [root@localhost ~]# grep "/bin/bash$" /etc/passwd |wc -l
    4

用戶的分類

管理員
    UID 0 
    特色:默認只有一個,就是root root不受任何權限的約束
系統用戶
    UID 1-499
    特色:在安裝完成linux以後或者安裝了某個程序執行自動生成
    的用戶,這類用戶是默認狀況不能登陸系統的,這類用戶存在的
    目的是爲了運行特定的服務(程序、進程)
    默認系統用戶也沒有家目錄
普通用戶
    UID 500+
    特色:須要運行命令 useradd來建立
    普通用戶的權限很是小,一般僅僅能在本身的家目錄下進行操做
    該類用戶的家目錄/home下和用戶同名的目錄

用戶組的分類

用戶的基本組(用戶的主組)
    在/etc/passwd中第四個字段(GID)所指向的組就是用戶的基本組
用戶的附件組
注意:一個用戶能夠屬於多個組。同一時間,只能有一個是主組,其餘的就是附加組,除了主組以外的其餘組就是該用戶的附加組

補充:在用useradd建立普通用戶的時候,默認狀況下,會建立一個組,組名和用戶名
相同,該組默認就是該用戶的基本組(主組)    
useradd bajie
tail /etc/passwd
cat /etc/group

補充:linux的文件屬性
屬主:文件的屬主(誰建立的文件,文件的屬主就是誰)
屬組:設置文件對於一個特定用戶組所具備的權限,這個組就是該文件的屬組
注意:屬組、屬主默認都只有一個
若是一個用戶既不是屬主,也不是屬組的組內用戶,那麼該用戶就是"其餘用戶"

三類用戶

屬主
屬組的組內用戶
其餘用戶

建立用戶

useradd命令
    做用:新建用戶
    格式:useradd [options]用戶名
    選項:
        -c "string" 設置新用戶的描述信息
        -d "/path/to/dir" 設置用戶的家目錄
        -e 月月/日日/年年:指定帳號的過時日期
        -g GID:指定用戶的主組ID號或名稱
        -G GID,GID,GID:指定用戶的附加組的ID號或名稱
        -m 在建立用戶的時候,若是用戶家目錄不存在,則自動建立(該選項
        自動使用)
        -M 不自動建立用戶家目錄
        -r 建立系統用戶
            用此選項建立的用戶有如下特色
                一、默認用戶無家目錄
                二、默認用戶uid<500
                三、默認用戶的shell是bash
                四、用戶能夠登陸系統
        -s shType:指定用戶的shell類型
            經常使用的shell
                /bin/bash
                /sbin/nologin
        -u UID 指定用戶的uid
        -u UID -o 指定讓新用戶使用一個現有的ID
    [root@localhost ~]# useradd -c "i am tom" tom
    [root@localhost ~]# tail /etc/passwd
    tom:x:505:505:i am tom:/home/tom:/bin/bash

    useradd zhangsan   建立用戶zhangsan
    tail /etc/passwd   查看用戶是否存在
    id 用戶名          能夠查看用戶是否存在

例子:新建用戶jerry,要求主組爲gp01,附加組爲gp02 和gp03
    [root@localhost ~]# useradd -g gp01 -G gp02,gp03 jerry
    [root@localhost ~]# tail /etc/passwd
    [root@localhost ~]# tail /etc/group

例子:建立一個用戶kity,要求將其建立爲系統用戶(無家目錄,uid<500,不能登陸系統)
     useradd -r -s /sbin/nologin kity

例子:新建用戶2222並指定UID爲600
    useradd -u 600 2222
    tail /etc/passwd
    lll:x:507:509::/home/lll:/bin/bash
    2222:x:600:600::/home/2222:/bin/bash

例子:新建用戶dog,要求其uid爲660,主組爲gp02,附加組爲gp01,gp03,家目錄在/tmp/dog,指定shell類型爲bin/bash
    useradd -u 660 -g gp02 -G gp01,gp03 -d /tmp/dog -s /bin/bash dog

groupadd命令
    做用:新建用戶組
    格式:groupadd [選項]組名
    選項:-g:指定用戶組的組id
    [root@localhost ~]# groupadd gp01 
    [root@localhost ~]# groupadd gp02
    [root@localhost ~]# groupadd gp03
    [root@localhost ~]# tail /etc/group
    gp01:x:506:
    gp02:x:507:
    gp03:x:508:

id命令

做用:顯示指定用戶的id信息
格式:id[選項]用戶名
選項:
     -u:顯示用戶的UID
     -g:顯示用戶的主組的ID
     -G:顯示用戶的所有租的ID列表

     id -g hhhhh 
     useradd 
    [root@localhost ~]# useradd -u 670 -g gp01 -Ggp02,gp03 hhhhh
    [root@localhost ~]# id hhhhh
    uid=670(hhhhh) gid=506(gp01) groups=506(gp01),507(gp02),508(gp03)
    [root@localhost ~]# id -G hhhhh
    506 507 508
    [root@localhost ~]# id -g hhhhh
    506
    [root@localhost ~]# id -u hhhhh
    670

passwd命令

做用:修改用戶的密碼(給用戶設置密碼)
格式:passwd[選項]用戶名
注意:
    1:passwd 用戶 修改指定用戶的密碼
    2:passwd 修改當前用戶的密碼
    3:默認狀況只有root用戶,才能修改其餘用戶的密碼,普通用戶只能修改本身的密碼
    選項:
    -l:鎖定用戶(只有root才能進行鎖定操做)
    -u:解鎖用戶
    --stdin:從表示輸出來讀取內容,爲用戶設置密碼(shell腳本中使用)

影子文件 /etc/shadow

做用:保存密碼
root:$6$HhL6V5BM$f29xu.FUgGnQqNtmqLGAyOy/fLMlF/JepDTfgoaqvC4.b7wiVmMc7i3HRDMVNdYQACOK9d3.wsgbZi1hPAEoj/:17997:0:99999:7:::
第一個字段:login name :系統中存在的用戶名
第二個字段:encrypted password :這裏存放的是加密後的密碼(單向加密)
        1:若是密碼段中出現!或*,那麼就不能用此密碼登陸系統
        2:若是密碼段爲空,則表示空密碼,可是系統每每禁止使用空密碼登陸
        3:若是密碼開頭是*,表示密碼被鎖定了

第三個字段:date of last password change:密碼上次修改的日期,這裏所寫的是舉例
        1970-1-1所通過的天數。
        (1)若是該字段爲0,會要求用戶在下次登陸的時候修改密碼
        (2)該文件不能爲空
第四個字段:minimum password  age ,兩次修改密碼的最短期
        一、爲空或者爲0,表示沒有最短期限制

第五個字段:maximum password age:密碼的最長有效期
        一、若是字段爲空或者99999,表示不限制最長有效期
        二、若是最長時間小於最短期,則禁止該用戶修改密碼
第六個字段:password warning period
        指定在密碼到期前N天發送報警信息
        一、若是爲0,表示不會自動發送報警信息
        二、在此期間內,用戶能夠正常登錄系統
第七個字段:password inactivity period:密碼的非活動時間
        一、在此期間登錄系統的時候,必須先修改密碼才能登錄系統。
        二、若是在此階段仍然沒有修改密碼,那麼就真的登錄不上了(找管理員處理)
第八個字段:account expiration date:用戶的過時日期
        一、表示方式也是用距離1970.1.1所通過的天數
        二、該字段爲空,表示該字段永不過時
        三、0表示用戶被禁用

第九個字段:reserved field :還沒有使用

注意:
密碼過時:修改密碼能夠繼續使用
帳戶過時:帳戶不再能登陸系統

/etc/passwd <<<用戶基本信息 ,useradd新建用戶,用戶的信息保存在這裏
/etc/group  <<<用戶組信息,groupadd新建用戶組,用戶組的信息保存在這裏。
/etc/shadow <<<用戶的密碼文件,passwd的時候,其實就是修改這個文件中的內容

userdel命令

做用:刪除用戶
    格式: userdel [options] 用戶名
    選項:
    -r :在刪除用戶的同時,刪除用戶的家目錄

chsh命令

做用:修改用戶的shell類型
格式:chsh[-s type]username
(本質上就是修改/etc/passwd中的內容)

chfn命令

做用:修改用戶的註釋信息

usermod命令

做用:修改用戶的基本信息(/etc/passwd)
格式:usermod [options]username
選項:
    -g GID:修改基本組
    -G GID: 修改附加組
    -u UID:修改uid值
    -C string:修改用戶的描述
    -d /path/dir:修改用戶的家目錄
    -s SHELL:修改用戶的shell類型
    -l newName:修改用戶的名稱
    -L 鎖定用戶
    -U 解鎖用戶

su命令

做用:切換用戶
格式:[options]用戶
選項
    -[l]:切換用戶,而且繼承用戶的環境變量
    -c 命令:在不切換用戶狀況下,以指定用戶的身份來執行命令

注意:

su切換用戶後返回,須要執行命令exit

例子:以root身份執行mkdir命令

$ su - -c "mkdir /abc1" root

生產環境的注意事項:

在生產環境中,若是員工離職,一般是禁用用戶,在短期內是不會刪除用戶的,更不會刪除用戶的家目錄以及家目錄中的文件。

禁用用戶

修改shell類型/sbin/nologin
在密碼前加上!
設置帳戶的過時時間爲0(密碼文件的第八段)

權限

r:讀  能夠執行cat、head、more、less等命令讀取文件中的內容,也能夠用vi打開並讀取文件中的內容
w:寫  能夠用vi或者重定向等操做文件中寫入內容或者修改其中的內容
x:執行 能夠執行文件(把程序轉換成進程)

目錄的權限

r:能夠執行ls命令來查看目錄下的文件有哪些
w:能夠在目錄下執行文件的建立和刪除等操做
x:能夠執行cd命令

用戶的角色有三類

屬主用戶(u)user
屬組用戶(g)group
其餘用戶(o)other
所有用戶(a)all

文件的權限位一共有10位
第一位:表示文件的類型

-:通常文件
d:目錄
l:連接文件
s:套接字文件
第二到第四位:表示文件的屬主所具備的權限
第五到第七位:表示文件的屬組的組內用戶所具備的權限
第八到第十位,表示系統中的其餘用戶所具備的權限
注意:
一、每一類用戶的權限的順序都是:讀權限、寫權限、執行權限
二、若是用戶有對應的權限,就出現字符,若是沒有對應的權限就用-表示。

例子:[root@localhost tmp]# ls -l 1.txt 
       -rw-r--r-- 1 root bin 149 Apr 16 18:22 1.txt
文件的屬主權限:可讀可寫
文件的屬組用戶權限:只讀權限
其餘用戶的權限:只讀權限

chown命令

做用:修改文件的屬主
格式:chown userName [-R]fileNAme
選項: -R 在修改目錄的時候,將目錄和目錄中的文件都一併修改
例子:將文件a.txt的屬主改成zhangsan
chown zhangsan a.txt

例子:將目錄yunwei和yunwei中的文件的屬主都修改成zhangsan
chown -R zhangsan yunwei

chgrp命令

做用:修改文件的屬組
例子:將文件a.txt的屬組改成tom
chgrp tom a.txt
例子:將文件a.txt的屬主改成zhangsan ,屬組改成tom
chown zhangsan.tom a.txt 
或者
chown zhangsan:tom a.txt
注意:
修改屬主或者屬組的時候,那個用戶名和組名是存在的,不然報錯。

chmod命令

做用:修改文件的權限
格式:chmod 權限  -R fileName
選項:-R 
方式:
    +:增價某項權限
    -:去除權限
    =:將權限修改成指定的類型(和原來的權限無關)

例子:修改文件a.txt的權限
去除屬主的寫權限
將屬組的權限設置爲讀和寫
給其餘用戶添加寫權限
chmod u-w,g=rw,0+w a.txt

例子:給所有用戶都添加上執行權限
chmod ugo+x a.txt
或者
chmod a+x a.txt
或者
chmod +x a.txt

例子:去除其餘用戶的所有權限
chmod o=  a.txt
chmod o-rwx a.txt

基於數字表示文件的權限

r:4
w:2
x:1
---   000   0
--x   001   1
-w-   010   2
-rx   011   3 
r--   100   4
r-w   101   5
rw-   110   6
rwx   111   7

例子:將文件a.txt的屬主改成可讀可寫,屬組改成可讀,其餘用戶沒有任何權限

#chmod 640 a.txt

建立用戶的原理

和用戶相關的文件
一、/etc/passwd
二、/etc/shadow
三、/etc/group
四、/etc/skel                      <<<<用戶家目錄的模版
五、/etc/login.defs                <<<<控制新建用戶的默認屬性
六、/etc/defaults/useradd          <<<<控制新建用戶的默認屬性
七、/var/spool/mail/用戶名

新用戶的家目錄若是生成

一、將/etc/skel目錄複製home下,更名爲和用戶名相同
二、將該目錄的屬主和屬組改成用戶名
三、將該目錄的權限設改成700
假設新建一個用戶laosun
#cp r /etc/skel /home/laosun
#chown -R laosun.laosun /home/laosun
#chmod -R 700 /home/laosun

MAIL_DIR    /var/spool/mail 指定新建用戶的郵件文件的默認位置
(默認郵件文件的名稱和用戶名相同)
PASS_MAX_DAYS   99999
新用戶的密碼最長有效期

PASS_MIN_DAYS   0
修改密碼最短間隔時間

PASS_MIN_LEN    5
普通用戶密碼的最短長度

PASS_WARN_AGE   7
密碼到期前警告時間

UID_MIN           500
新建普通用戶的默認UID最小值

UID_MAX         60000
新建普通用戶的默認UID最大值

GID_MIN           500
新建普通用戶的默認GID最小值

GID_MAX         60000
新建普通用戶的默認GID最大值

CREATE_HOME yes
是否默認建立用戶家目錄

UMASK           077
反向掩碼值(用來控制新建文件和目錄的默認權限值)

USERGROUPS_ENAB yes
當用戶組中沒有用戶了,是否刪除用戶組

ENCRYPT_METHOD SHA512
指定加密算法
SHA512
MD5

加密後的密碼由三部分構成

$6$qSBbNTqA$ESH1UDekytAKPw4olQNulWQv/uZxOJETUQOcB
$加密算法$隨機字符串$加密後的數據
說明:
加密算法:
 一、表示MD5加密
 六、SHA512加密

vim /etc/default/useradd 

# useradd defaults file
GROUP=100                
HOME=/home               <<<<<默認普通用戶的家目錄的位置
INACTIVE=-1              <<<<<設置新用戶帳號是否過時。-1表示不啓用
EXPIRE=                  <<<<<設置新建帳戶的過時日期,空白表示不啓用
SHELL=/bin/bash          <<<<<設置新建用戶的默認shell類型
SKEL=/etc/skel           <<<<<指定新建用戶的家目錄模版目錄
CREATE_MAIL_SPOOL=yes    <<<<<設置是否給新建的用戶建立用戶郵件

新建用戶

useradd
passwd

完成的操做

一、/etc/passwd 添加一行
二、/etc/shadow 添加一行
三、/etc/group  添加一行
四、建立用戶家目錄
五、建立用戶郵件文件

例子:建立用戶timi,要求uid 777,主組hadoop (800)

附加組 python (850) hbase(860) 家目錄 /home/timi
描述 i am timi
密碼設置爲123 最少使用3天才能修改,最長使用30天,到期
前5天發送報警,非活動時間2天。

實現步驟:

一、建立用戶基本信息(/etc/passwd)
vim /etc/passwd
timi:x:777:800:i am timi:/home/timi:/bin/bash

二、檢查用戶
id timi
三、使用openssl來生成密碼
格式:openssl -1 --salt "string" 
說明:
    -1 表示md5加密算法
    --salt表示在加密的時候摻入雜誌(提高安全性)
[root@localhost ~]# openssl passwd -1 -salt "abc123"
Password: 
$1$abc123$uE7.dLhrmG/qKHqAIlwPi.

四、修改密碼文件

timi:$1$abc123$uE7.dLhrmG/qKHqAIlwPi.:18005:3:30:5:2::

五、建立用戶組
    vim /etc/group

    hadoop:x:800:
    python:x:850:timi
    habse:x:860:timi

六、建立用戶家目錄
# cp -r /etc/skel /home/timi
# cd /home/
# chown -R timi.hadoop /home/timi/
# chmod -R --reference=*** timi   ***已經存在於/home中
    (把timi的權限參照改成***的權限)
七、建立用戶郵件
cd /var/spool/mail/
ls
touch timi
chmod 660 timi
chown timi.mail timi
八、測試用戶是否能夠正常使用

補充: 
#useradd guizi
useradd 警告:此主目錄已經存在。
不從sekl目錄裏向其中複製任何文件。   <<<<<1
正在建立信箱文件,文件已存在         <<<<<2
新建用戶出現這個錯誤信息,就表示
一、表示用戶的家目錄已經存在
二、表示用戶的郵件文件已經存在
相關文章
相關標籤/搜索