linux筆記-----6------(linux用戶管理)
Posted on 2012-08-27 11:08 鑫龍 閱讀(402) 評(píng)論(0) 編輯 收藏 引用 所屬分類: linux基礎(chǔ) linux用戶管理部分主要介紹5個(gè)內(nèi)容,用戶管理配置文件,用戶管理命令,用戶組管理命令,批量添加用戶,用戶授權(quán)。
一、用戶配置文件
上圖就是我們需要掌握的一些配置文件,下面我們一一來(lái)解讀:
(1)/etc/passwd 用戶信息文件
在學(xué)習(xí)這個(gè)配置文件的時(shí)候,我們可以通過(guò)man 5 passwd來(lái)查看下這個(gè)配置文件的幫助,其中參數(shù)5是用來(lái)區(qū)分命令與配置文件的。從幫助文檔中可以看到這個(gè)配置文件的每一行的一個(gè)統(tǒng)一格式:
然后我們more 一下這個(gè)配置文件,
看到這個(gè)與man得到的格式是匹配的,這樣我們就一個(gè)一個(gè)弄清每一位的作用。
1.用戶名與UID
linux用戶類型分為三種:超級(jí)用戶(UID=0),偽用戶(UID=1-499),普通用戶(UID=500-60000)。可以看到通過(guò)用戶名和用戶的UID就可以確認(rèn)一個(gè)用戶的類型。root用戶正是因?yàn)槠銾ID為0,才獲得了超級(jí)用戶的權(quán)限,倘若你把你自己添加的用戶的用戶的UID也改為0,那便同樣擁有的超級(jí)用戶的權(quán)限。
那偽用戶什么呢?其實(shí)這些用戶是并不能實(shí)際登陸的。偽用戶有如下特征:
總之,偽用戶的出現(xiàn)是為了安全,防止壞人在獲得某些程序或者服務(wù)的控制權(quán)以后。進(jìn)行破壞,所以給了一個(gè)特殊的用戶。而最后的普通用戶,就是你自己添加的用戶了。
2.密碼
密碼很簡(jiǎn)單,這里其實(shí)并不是真正的密碼,只是一個(gè)密碼位。其實(shí)這里本來(lái)是密碼的,只不過(guò)后來(lái)被轉(zhuǎn)移到其他的地方去了(轉(zhuǎn)移到/etc/shadow)。當(dāng)然我們也可以把密碼移回來(lái),通過(guò)pwunconv與pwconv實(shí)現(xiàn)互操作。
可以看到密碼其實(shí)是被md5算法加密過(guò)的密文,并不是明文(md5sum)
3.GID 用戶組ID
用戶組是許多用戶的集合。添加一個(gè)新用戶,必須給予這個(gè)用戶一個(gè)用戶組,一般linux給新用戶分配組有兩種策略:要么是給所有新用戶默認(rèn)分配一個(gè)統(tǒng)一的組,要么創(chuàng)建一個(gè)與用戶名想同名字的用戶組,讓該用戶成為改組成員。centOS就是用的后一種。
4.注釋性描述 宿主目錄 命令解釋器 (略)
(2)/etc/shadow 用戶密碼文件
同樣man 5 shadow獲得格式說(shuō)明:
1.用戶名和密碼
這個(gè)文件就是保存用戶真正密碼的文件,如果把這個(gè)配置文件的某些用戶的密碼刪掉,(ps:普通用戶對(duì)這個(gè)配置文件是沒(méi)有w權(quán)限的,只有用root用戶修改),那么這些用戶無(wú)需密碼就可以登錄系統(tǒng)。
2.最后一次修改時(shí)間
這個(gè)是計(jì)算修改密碼的那天與1970.1.1相差的天數(shù)
3.最小時(shí)間間隔和最大時(shí)間間隔、警告時(shí)間
最小時(shí)間間隔設(shè)置的是兩次更改密碼的最小時(shí)間間隔(0是不限定)。最大的時(shí)間間隔就是如果在這個(gè)時(shí)間之內(nèi)不改密碼將無(wú)法登陸系統(tǒng)。當(dāng)然我們不可能去計(jì)算還差多少天就要更改密碼了,所以通過(guò)警告時(shí)間來(lái)告知用戶,距離最大時(shí)間間隔還差多少天。
4.賬號(hào)閑置時(shí)間、失效時(shí)間、標(biāo)志 (略)
(3)/etc/skel 新用戶配置文件目錄
這個(gè)目錄中,全是隱藏的文件,大都是用來(lái)給用戶登錄時(shí)候使用的配置文件,如果你新添加一個(gè)用戶,系統(tǒng)會(huì)把該目錄中的文件拷貝到用戶默認(rèn)的宿主目錄中去,以幫助新添加的用戶此后登錄系統(tǒng)。
(4)/etc/login.defs與/etc/useradd 用戶默認(rèn)配置文件
通過(guò)查看這兩個(gè)文件,我們發(fā)現(xiàn),這其中描述的是關(guān)于/etc/passwd、/etc/shadow中默認(rèn)配置的內(nèi)容設(shè)定。也就是說(shuō)/etc/passwd、/etc/shadow、還有登錄的缺省信息是哪里來(lái)的呢?就是從這兩個(gè)文件來(lái)的。我們可以通過(guò)修改這兩個(gè)文件里面的內(nèi)容來(lái)修改一些默認(rèn)的設(shè)置。
(5)/etc/issue和/etc/motd
這兩個(gè)文件是用來(lái)設(shè)置每日消息的,但有什么不同呢?通過(guò)一個(gè)例子來(lái)說(shuō)明。首先修改兩個(gè)文件里的內(nèi)容。
可以看到效果,issue的每日消息,是在用戶尚未成功登錄系統(tǒng)時(shí)候時(shí)候就會(huì)顯示的。而motd中的消息是在成功登錄系統(tǒng)以后才會(huì)顯示。
(6)手動(dòng)添加用戶專題
在我們添加用戶時(shí)候,最常用的方法就是使用useradd 用戶名 添加一個(gè)用戶,然后再用passwd 用戶名 給該用戶設(shè)置密碼。但是useradd指令的原理是什么,背后到底做了什么事情呢?今天我們就手動(dòng)來(lái)添加以下用戶:
1.在/etc/passwd配置文件中添加用戶
2.在/etc/shadow配置文件中添加用戶
3.創(chuàng)建宿主目錄(創(chuàng)建的宿主目錄,忘記更改所有者了。。!囧!)
4.把/etc/skel目錄下的文件拷貝到宿主目錄中
(7)普通用戶如何改密碼
通過(guò)ls -l /etc/passwd /etc/shadow 查看這兩個(gè)配置文件,我們可以看
到,對(duì)于普通用戶others是沒(méi)有修改權(quán)限W的。那為什么普通用戶能夠修改密碼呢?
其實(shí)原因在于用戶改密碼的命令passwd,我們查看下passwd
可以看到在這個(gè)用戶的權(quán)限中,有一個(gè)s標(biāo)記,這不同于我們以往認(rèn)識(shí)的,文件只有rwx這三種權(quán)限,那s到底是什么意思呢?其實(shí)我們把s稱作為SetUID。
SetUID只能是針對(duì)文件,針對(duì)目錄無(wú)效。換句話說(shuō),passwd的擁有者是root,那么以后其他用戶在執(zhí)行passwd這個(gè)文件的時(shí)候,會(huì)突然"穿越時(shí)空"臨時(shí)性的變成root用戶,這樣就可以修改密碼了。那我們?cè)趺唇o文件設(shè)置SetUID的權(quán)限呢?要知道除了SetUID還有SetGID,功能類似,只不過(guò)針對(duì)用戶組。那么SetUID的命令是,chmod 4xxx 或者chmod u+s。SetGID是chmod 2xxx或者chmod g+s。下面我來(lái)做一個(gè)實(shí)驗(yàn):
可以看到我給touch命令了setUID權(quán)限,然后再切換用戶到mysileng,通過(guò)mysileng用戶創(chuàng)建了一個(gè)文件,但是我們發(fā)現(xiàn),創(chuàng)建文件的owner即擁有者是root而不是mysileng用戶,這就證明了setUID的功能。其實(shí)SetUID是很危險(xiǎn)的,假若有壞人給VI授予了SetUID,那不是?。。。。。恐怖。。。~~
為了安全,我們可以定時(shí)對(duì)所有的文件中擁有SetUID或者SetGID的文件進(jìn)行查找,看有什么變化。命令是find / -perm -4000 -o -2000。0代表的是不限制。
我們通過(guò)umask可以查看到缺省最高位是0,這一位除了可以是2,或者4之外,可以設(shè)置為1。那是這什么功能呢?一般我們叫著黏著位。黏著位用t來(lái)表示,這個(gè)功能只能針對(duì)目錄來(lái)設(shè)置,并且是針對(duì)權(quán)限中的ohters用戶,而且這個(gè)目錄權(quán)限一定是777(rwx)。本來(lái)在沒(méi)有黏著位的情況下,如果一個(gè)目錄ohters的權(quán)限是是777,那么所有普通用戶可以在這個(gè)文件夾中任意創(chuàng)建文件然后任意刪除文件。
但是在設(shè)置了黏著位以后,用戶們?cè)谠撐募A中,只能刪除自己創(chuàng)建的文件了。下面做一個(gè)實(shí)驗(yàn):
(8)/etc/group與/etc/gshadow 用戶組配置文件與用戶組密碼文件
基本上與passwd和shadow文件的功能類似,以下是具體格式解釋:
二、用戶與用戶組管理命令
(1)用戶管理命令
1.添加用戶
2.修改用戶信息
usermod -l 新用戶名 -d 新的宿主目錄 -g 用戶組
-l是更改用戶名,-d是給更改宿主目錄,-g是分配用戶組
usermod -G 用戶名 用戶組1 用戶組2...
-G把用戶添加到多個(gè)組作用
3.刪除用戶
userdel -r 用戶名
-r是刪除宿主目錄
如果想手動(dòng)刪除一個(gè)用戶:首先刪除/etc/passwd、/etc/shadow中的用戶信息,然后再/etc/group與/etc/gshadow中也刪除用戶信息,然后刪除宿主目錄,再通過(guò)find / -user 用戶名 -ok rm {}\;刪除以該用戶是onwer的文件。
4.其他命令
pwch 可以檢查文件的格式錯(cuò)誤
vipw與vi passwd的不同之處在于,可以鎖定文件,避免寫混亂。
su 用戶名 與 su -用戶名的不同之處在于,改變用戶是否也跟著改變環(huán)境上下文。
(2)用戶組管理命令
1.添加用戶組
groupadd -g gid 組名
2.刪除用戶組
groupdel 組名
3.修改用戶組信息
groupmod -n namm 組名 //修改組名
4.用戶組密碼修改命令
直接gpasswd 用戶組名就可以設(shè)置和更改組密碼
5.其他命令
三、批量添加用戶
介紹兩種方法批量添加:手動(dòng)批量添加,shell腳本批量添加。現(xiàn)在只講前一種,后一張?jiān)趕hell腳本章節(jié)再講。那手動(dòng)批量添加的步驟是:
1.通過(guò)vi撰寫所需要添加的用戶信息文件,格式與passwd類似(假設(shè)為user.info)
2.通過(guò)newusers導(dǎo)入需要添加的用戶信息文件:newusers < user.info
3.再通過(guò)pwunconv取消shadow文件,并寫一個(gè)關(guān)于用戶的密碼文件,假設(shè)為pass.info。格式為:新添加的用戶名:用戶密碼
4.通過(guò)chpasswd命令導(dǎo)入新添加用戶的密碼:chpasswd < pass.info
5.最后調(diào)用pwconv重新生成shadow文件即可。
四、用戶授權(quán)
給用戶授權(quán)是很重要的。通常我們使用對(duì)用戶組的巧妙分配可以達(dá)到某些授權(quán)的目的,比如現(xiàn)在有一個(gè)需求:su命令是用來(lái)切換用戶的,假若普通用戶天天沒(méi)事就切換root用戶,那么不是早晚一天能被猜中密碼,所以我們讓一般人不具有執(zhí)行的su命令的權(quán)限,而只有特定人可以su。那我們?cè)趺醋觯?br /> 首先我們創(chuàng)建一個(gè)用戶組sugroup,然后把su文件給予權(quán)限4550,關(guān)鍵是要把ohers的x權(quán)限去掉。然后通過(guò)chgrp更改su命令的用戶組,使sugroup變成su的用戶組,這樣普通的用戶是沒(méi)有執(zhí)行的權(quán)力的,只有root和進(jìn)入了sugroup的成員才可以執(zhí)行su命令。
當(dāng)然除了通過(guò)用戶組來(lái)授權(quán)之外,常用的授權(quán)工具sudo是我們要了解的重點(diǎn)。sudo軟件可以讓用戶使用sudo授權(quán)的命令時(shí)臨時(shí)升級(jí)成root用戶(類似setid)。那么要簡(jiǎn)單學(xué)習(xí)sudo只需要學(xué)習(xí)命令visudo和配置問(wèn)件/etc/sudoers。visudo是對(duì)etc/sudoers進(jìn)行編輯的編輯命令,與vi不同的是,因?yàn)?etc/sudoers是被鎖定的配置文件,所以用vi編輯是無(wú)效的,就必須使用visudo來(lái)編輯。那/etc/sudoers里面每行的格式是什么呢?
用戶名(或用戶組名) 主機(jī)地址=命令(命令的絕對(duì)路徑)
這樣就表示給了這個(gè)用戶什么命令的權(quán)限,多條命令用,分割。sudo軟件最方便的就是可以把權(quán)限精確到某條命令的某條參數(shù)。比如:
可以當(dāng)?shù)降诙薪o予了csdn2這個(gè)用戶馬上關(guān)機(jī)的權(quán)限,那么它就只能執(zhí)行這條命令并帶這些參數(shù),如果換了其他參數(shù)是沒(méi)有權(quán)限執(zhí)行的。
執(zhí)行sudo授予的命令要通過(guò)sudo 命令來(lái)調(diào)用,而且調(diào)用后還要求驗(yàn)證當(dāng)前用戶密碼來(lái)保證安全。其中命令有時(shí)候因?yàn)閜ath問(wèn)題可能要輸入絕對(duì)路徑。例如:
此外可以通過(guò)sudo -l查看當(dāng)前用戶被sudo授權(quán)了那些命令。