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