天天看點

linux基礎知識---使用者

使用者群組

一、使用者群組的概念

    随着計算機對多使用者需求越來越多,才引入了使用者群組的概念。所謂的使用者就是作業系統用來辨別登陸系統的。就是使用者群組是實作計算機資源配置設定的核心要素。組:是具有相同計算機資源(主要指權限)使用者的一個集合。

    在計算機核心中,使用者群組都是一個數字,我們稱之為UID和GID。UID和GID在系統中具有唯一性。實作這個過程進行名稱解析才能完成,在Linux系統中使用glib庫中的系統調用來完成。

二、使用者識别

    識别使用者通過3A(Authentication,Authorization,Audit)

    Authentication:通過密碼來實作 

    Authorization:授權

    Audit:審計(通過記錄檔來實作的)

三、使用者群組類别

    使用者類别:

        管理者使用者:UID=0

        系統使用者:1 <= UID <= 499

        普通使用者:UID >= 499

    組類别:

        管理者組:GID=0

        系統組:1 <= GID <= 499

        使用者組:GID >= 500

四、使用者群組的對應關系

    一對一:一個使用者存在一個組中,即使用者是組的唯一成員

    一對多:一個使用者可以存在多個使用者組中,此使用者有多個組的共同權限

    多對一:多個使用者組可以存在一個組中,這些使用者具有群組共同的權限

    多對多:多個使用者可以存在多個組中,即上述關系的擴充

五、使用者群組相關的配置檔案    

1、有關使用者的相關檔案

    /etc/passwd:使用者賬号資訊

    /etc/passwd-:/etc/passwd的backup(備份)

/etc/passwd檔案格式:

    account:password:UID:GID:GECOS:directory:shell  一個使用者的資訊占一行

具體含義:

字段

account

password

UID

GID

GECOS

directory

shell

含義

使用者賬号的字元串

密碼定位符(以前是密碼)

使用者辨別号,就是使用者的UID,通常UID号的取值範圍是0~65535

組辨別号,就是組的GID,指的是主組

注釋資訊

家目錄,也就是使用者登入到系統之後預設所處的目錄

使用者預設shell

1

2

3

4

5

6

<code>root:x:0:0:root:</code><code>/root</code><code>:</code><code>/bin/bash</code>

<code>bin:x:1:1:bin:</code><code>/bin</code><code>:</code><code>/sbin/nologin</code>

<code>daemon:x:2:2:daemon:</code><code>/sbin</code><code>:</code><code>/sbin/nologin</code>

<code>adm:x:3:4:adm:</code><code>/var/adm</code><code>:</code><code>/sbin/nologin</code>

<code>lp:x:4:7:lp:</code><code>/var/spool/lpd</code><code>:</code><code>/sbin/nologin</code>

<code>sync</code><code>:x:5:0:</code><code>sync</code><code>:</code><code>/sbin</code><code>:</code><code>/bin/sync</code>

密碼複雜度政策:

數字、小寫、大寫和特殊字元至少三類

最短長度5位

不要使用易猜測的密碼

定期修改,且不要使用最近曾經使用過的密碼

加密方式:

對稱加密:加密和解密使用同一個密鑰;密鑰分發困難

公鑰加密(非對稱加密):加密和解密使用一對兒密鑰

單向加密:提取資料的惟一的特征碼,主要用于比對資料的完整性 單向加密的特性是定長輸出;不可逆;雪崩效應

/etc/shadow:使用者密碼和相關的賬戶設定

/etc/shadow-:/etc/shadow的backup(備份)

    /etc/shadow檔案格式:

    login name:password:date of last password change:minimum password age:maximum password age:password warning period:password inactivity period:account expiration date:reserved field 一個使用者資訊占一行,使用者加密咨詢檔案。由于/etc/passwd檔案是所有使用者都可讀的,這樣就導緻了使用者的密碼容易出現洩露,是以,linux将使用者的密碼資訊從/etc/passwd中分離出來,單獨的放到了一個檔案中,這個檔案就是/etc/shadow,該檔案隻有root使用者擁有讀權限,進而保證了使用者密碼的安全性。

login name

date of last password change

minimum password age

maximum password age

password warning period

password inactivity period

account expiration date

reserved field

使用者名,同/etc/passwd相對應

加密後的密碼

最近一次修改密碼的時間(從1970-01-01到現在的天數)

密碼最短使用期限(天數)

密碼最長使用期限(天數)

密碼過期警告區間(天數)

非活動時間(天數)

賬号過期時間,絕對時間

保留區域

<code>centos:$6$X</code><code>/HwvP5Q</code><code>$5qUun33gWjfHALXiJ1e.9XVEUlSEq1k6uPMCDp.ry8h7Y9bs7xVNQrdQsXIHWCIuUEWEqFw0RE8UtPk37Zah91:16252:0:99999:7:::</code>

<code>mandriva:!!:16255:0:99999:7:::</code>

<code>gentoo:$6$QUEaMRzj$L8g8OsDRr6LZM8KCuu9cieNYnbGS</code><code>/SUTsVNJf2pRd5iDrsyama</code><code>.jrKh2gI86b3QQfMqr1oZQwx.TQTLyBocnj/:16255:2:60:3:7::</code>

<code>openstack:!!:16255:0:99999:7:::</code>

2、有關組的相關檔案

/etc/group:組的賬号資訊

/etc/group-:/etc/group檔案的backup

    /etc/group檔案格式:

        group_name:passwd:GID:user_list

group_name

passwd

user_list

組名

組密碼定位符

GruopID

以逗号分開的屬于此組(以此作為附屬組)的使用者清單

<code>root:x:0:</code>

<code>bin:x:1:bin,daemon</code>

<code>daemon:x:2:bin,daemon</code>

<code>sys:x:3:bin,adm</code>

<code>adm:x:4:adm,daemon</code>

/etc/gshadow:組的密碼資訊

/etc/gshadow-:/etc/gshadow檔案的backup

    /etc/gshadow檔案格式:

使用者組管理者

組成員

<code>root:::</code>

<code>bin:::bin,daemon</code>

<code>daemon:::bin,daemon</code>

<code>sys:::bin,adm</code>

<code>adm:::adm,daemon</code>

 六、其他相關的配置檔案

(1)etc/login.defs檔案

    用來定義建立一個使用者時的預設設定,比如指定使用者的UID和GID的範圍,使用者的過期時間、是否需要建立使用者主目錄等等。

    下面是centos6.4下的/etc/login.defs,簡單介紹如下:

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

<code>[root@server ~]</code><code># cat /etc/login.defs | grep -v ^# | grep -v ^$</code>

<code>MAIL_DIR    </code><code>/var/spool/mail</code>

<code>#當建立使用者時,同時在目錄/var/spool/mail中建立一個使用者mail檔案 </code>

<code>PASS_MAX_DAYS   99999</code>

<code>#指定密碼保持有效的最大天數</code>

<code>PASS_MIN_DAYS   0</code>

<code>#表示自從上次密碼修改以來多少天後使用者才被允許修改密碼</code>

<code>PASS_MIN_LEN    5</code>

<code>#指定密碼的最小長度 </code>

<code>PASS_WARN_AGE   7</code>

<code>#表示在密碼到期前多少天系統開始通知使用者密碼即将到期</code>

<code>UID_MIN           500</code>

<code>#指定最小UID為500 ,也就是說添加使用者時,使用者的UID 從500開始</code>

<code>UID_MAX         60000</code>

<code>#指定最大UID為60000 </code>

<code>GID_MIN           500</code>

<code>#指定最小GID為500,也就是添加組時,組的GID從500開始。</code>

<code>GID_MAX         60000</code>

<code>#指定最大GID為60000</code>

<code>CREATE_HOME </code><code>yes</code>

<code>#此項是指定是否建立使用者主目錄,yes為建立,no為不建立。</code>

<code>UMASK           077</code>

<code>#預設家目錄的掩碼</code>

<code>USERGROUPS_ENAB </code><code>yes</code>

<code>#########有待驗證########################</code>

<code>ENCRYPT_METHOD SHA512 </code>

<code>#預設密碼加密算法是SHA512</code>

 (2)/etc/skel目錄

    /etc/skel目錄定義了建立使用者在主目錄下預設的配置檔案,更改/etc/skel目錄下的内容就可以改變建立使用者預設主目錄的配置檔案資訊,例如建立一個新使用者後,會在新使用者的主目錄下看到類似.bash_profile, .bashrc, .bash_logout等檔案,這些檔案就是存在于/etc/skel目錄下的。

(3)/etc/default/useradd檔案

    useradd 添加使用者時的規則檔案,當我們通過useradd指令不加任何參數建立一個使用者後,使用者預設的主目錄一般位于/home下,預設使用的shell是/bin/bash,這些都是在/etc/default/useradd檔案中定義的。更改此檔案可以更改添加使用者的預設配置,除此方法外還可以通過adduser指令的參數來實作。

<code>[root@server ~]</code><code># cat /etc/default/useradd </code>

<code># useradd defaults file</code>

<code>GROUP=100</code>

<code>HOME=</code><code>/home</code> <code>#把使用者的家目錄建在/home中</code>

<code>INACTIVE=-1 </code><code>#是否啟用帳号過期停權,-1表示不啟用</code>

<code>EXPIRE= </code><code>#帳号終止日期,不設定表示不啟用</code>

<code>SHELL=</code><code>/bin/bash</code> <code>#所用SHELL的類型</code>

<code>SKEL=</code><code>/etc/skel</code>

<code> </code><code>#預設添加使用者的目錄預設檔案存放位置;也就是說,當我們用adduser添加使用者時,使用者家目錄下的檔案,都是從這個目錄中複制過去的</code>

<code>CREATE_MAIL_SPOOL=</code><code>yes</code> 

<code>#當建立使用者時,同時在目錄/var/spool/mail中建立一個使用者mail檔案。yes是建立,no是不建立。</code>

七、使用者群組的管理

1)使用者的管理指令

    useradd,adduser:添加使用者

指令

常用參數

參數意義

示例

useradd或者adduser

-u

指定使用者的UID

useradd -u 506 gentoo

-g

指定使用者的GID

useradd -u 506 -g 1000 gentoo

-G

指定使用者的附加組,可以指定多個附加組

useradd -u 506 -G Linux,centos gentoo

-c

添加注釋資訊,不指定預設為空

useradd -c 'this is a test user' ubantu

-d

指定使用者的家目錄,不指定的話,預設數/hmoe/目錄下與使用者名同名的目錄

useradd -d /tmp/redhat redhat

-s

指定使用者的預設shell,不指定的話預設是/bin/bash

useaadd -s /sbin/nologin slackware

-r

添加系統使用者

useradd -r mysql

-m

如果使用者沒有家目錄則自動建立

-M

強制不建立家目錄

useradd -M Archlinux

-e

expire_date 賬号終止日期

useradd -e 14/7/20 suse 

    userdel:删除使用者

        用法:  userdel USER_NAME

        常用參數:-r   删除使用者是将使用者的家目錄删除 例如 userdel -r gentoo

    passwd:為使用者設定密碼

--stdin

避免互動式設定密碼

echo 'Acrhlinux' | passwd Archlinux

-l,-u

使用者加鎖,解鎖

passwd -l ArchLinux

passwd -u ArchLinux

-n,-x,-w,-i

設定使用者的最短使用,最長使用,告警,非活動期限

passwd -n 2 -u 60 -w 7 -i 3 gentoo

    usermod:修改使用者指令,可以通過usermod 來修改登入名、使用者的家目錄等等

-u,-g,-s,-c

修改使用者的UID,GID,預設shell,注釋資訊

usermod -u 800 -g 6666 -s /bin/zsh -c 'Beijing zhongguancun' gentoo

-G -a

在修改使用者的附加組是,要想保留原來的附加組,還需要與-a并用,否則則會覆寫原來的附加組

usermod -a -G gentoo,centos,linux ubantu

-d -m 

修改家目錄,若想同時儲存原來家目錄下的所有檔案,則與-m一起使用

usermod -d /tmp/linux -m gentoo

-L,-U 

鎖定和解鎖使用者

usermod -L redhat

usermod -U redhat

    chown:改變檔案的屬主屬組

-R,-r

改變該目錄以及位于該目錄下所有檔案的屬主屬組

1、修改/tmp/mylinux檔案的屬主屬組為gentoo

chown gentoo:gentoo /tmp/mylinux

或者chown gentoo.gentoo /tmp/mylinux

2、修改/tmp/mylinux檔案的屬主為gentoo

chown gentoo /tmp/mylinux

3、修改/tmp/mylinux檔案的屬組為gentoo

chown .gentoo /tmp/mylinux

4、修改/tmp/test/目錄下檔案的屬主屬組為gentoo

chown -R gentoo.gentoo /tmp/mytest

    pwcovn:同步使用者從/etc/passwd 到/etc/shadow

    pwck:pwck是校驗使用者配置檔案/etc/passwd 和/etc/shadow 檔案内容是否合法或完整

    pwunconv:是pwcov 的立逆向操作,是從/etc/shadow和 /etc/passwd 建立/etc/passwd ,然後會删除 /etc/shadow 檔案

    finger:檢視使用者資訊工具

<code>[root@server ~]</code><code># finger centos</code>

<code>Login: centos                     Name: </code>

<code>Directory: </code><code>/home/centos</code>               <code>Shell: </code><code>/bin/bash</code>

<code>On since Sat Jul  5 11:21 (CST) on pts</code><code>/2</code> <code>from 172.16.9.17</code>

<code>   </code><code>8 hours 25 minutes idle</code>

<code>No mail.</code>

<code>No Plan.</code>

    id:檢視使用者的UID、GID及所歸屬的使用者組

<code>[root@server ~]</code><code># id centos</code>

<code>uid=500(centos) gid=500(centos) </code><code>groups</code><code>=500(centos),600(magedu)</code>

    chfn:更改使用者資訊工具

    su:使用者切換工具

        常用參數:

         su -l USENAME 或 su - USERNAME 完全切換

         su -c 以切換的使用者身份執行指令 例如:

<code>[root@server ~]</code><code># su - centos -c 'whoami'</code>

<code>centos</code>

    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 功能差不多

2)組管理指令

    groupadd:添加使用者組

        常用參數:

        -g:指定組ID     例如:groupadd -g 1000 centos

        -r:指定一個系統組

    groupdel:删除使用者組

    groupmod:修改使用者組資訊

    chgrp:改變使用者的所屬組

    groups:顯示使用者所屬的使用者組

    grpck:檢查/etc/group檔案和/etc/gshadow檔案,檢查資料是否正确存放

    grpconv:通過/etc/group和/etc/gshadow 的檔案内容來同步或建立/etc/gshadow ,如果/etc/gshadow 不存在則建立

    grpunconv:通過/etc/group 和/etc/gshadow 檔案内容來同步或建立/etc/group ,然後删除gshadow檔案

八、手動建立一個使用者

    1、手動在/etc/passwd中添加一行(當然使用者名,UID不能使用已經存在的)

    test1:x:2222:2222::/home/tes1t:/bin/bash

    2、産生密碼資訊

    echo 'redhat' | sha512sum 

    20641bd9d93708c844f59bf5f5d5bfb16fd5c3cece84127f56072579f778e6aca04ca7985eb4a7f555bd9532115205884d11fc5323534618da7596c300b4666d 

    并在/etc/shadow添加這一行

    test1:$6$bRFe2dsW$20641bd9d93708c844f59bf5f5d5bfb16fd5c3cece84127f56072579f778e6aca04ca7985eb4a7f555bd9532115205884d11fc5323534618da7596c300b4666d:16255:0:99999:7::::

    3、手動在/etc/group中添加一行

    test1:x:2222:

    4、複制相關檔案到家目錄下

    cp -r /etc/skel/ /home/test1

    5、修改家目錄權限

    chown -R test1.test1 /home/test1/

    此時就完成了一個使用者的建立工作,下來就可以登陸了。

本文轉自 羊木狼 51CTO部落格,原文連結:http://blog.51cto.com/guoting/1434957,如需轉載請自行聯系原作者

繼續閱讀