使用者群組
一、使用者群組的概念
随着計算機對多使用者需求越來越多,才引入了使用者群組的概念。所謂的使用者就是作業系統用來辨別登陸系統的。就是使用者群組是實作計算機資源配置設定的核心要素。組:是具有相同計算機資源(主要指權限)使用者的一個集合。
在計算機核心中,使用者群組都是一個數字,我們稱之為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,如需轉載請自行聯系原作者