Linux用戶管理詳解(中)

            Linux用戶管理詳解(中)
在我的上一篇Linux中用戶管理詳解(上)》我們已經明白通過命令useradd每創建一個用戶都會在相應的配置文件中添加相關的信息和創建用戶的宿主目錄。其實今天要和大家說的是和用戶相關的linux安全問題,在安全中有一種技術人們稱它爲“後門”技術,其實就是說一些“小黑”,***到服務器後得到root權限,最常見的就是添加一個用戶方便日後來訪。雖然這是一個初級的技術,但是這個能夠看出你對/etc/passwd/etc/shadow文件的熟悉程度。
如果你是***的話,***到一個系統後,你爲了防止管理員修改密碼導致你不能登錄,而你去修改密碼,這不是明擺着要通知管理員他的系統已近被***了,所以這個時候可以通過編輯passwdshadow文件來實現如下內容:
[root@qiuri ~]#echo "admin:x:0:0::/usr/src:/bin/bash" >> /etc/passwd
[root@qiuri ~]#echo "admin:*:14143:0:99999:7::: " >> /etc/shadow
通過以上兩條命令可以添加一個UID0的具有管理員權限的賬戶,也可以編輯配置文件手工輸入,當然,這裏小黑們會盡量的掩蓋自己創建的這個賬戶,首先用戶名稱一般會選擇一個類似系統應用程序的賬戶,用戶的主目錄也不會和其它賬戶一樣放在/home下。總之儘量的逃過哪些粗心的管理員。
當然,還沒有設置密碼是不能夠通過遠程可以連接上服務器的,這個時候用passwd來設置一下:輸入要設置的密碼,之後查看/etc/shadow配置文件後密碼位已近成爲md5加密的亂碼。
[root@qiuri ~]# passwd admin                                                         
[root@qiuri ~]# grep admin /etc/shadow
admin:$1$1IoPDSJW$3NxLHwcXeutWT1lIMb4Zy1:14163:0:99999:7:::
這個時候我們可以測試一下登錄,這個時候我們沒有必要退出後再登錄,我們可以使用su命令切換用戶,大家在使用這條命令的時候最常見的問題如下:
[root@qiuri ~]# su admin
bash-3.1#
[root@qiuri ~]# su – admin
bash-3.1#
咋看起來這兩條命令沒有什麼區別,當我們使用su admin命令的時候,我們輸入一個認爲可用的命令的時候會得到“command not found”的錯誤信息。是由於su命令不能在根用戶環境中的讀操作。爲了解決這個問題,只能在給su命令添加一個”–”的選項,也就是su – admin這樣的格式。我們使用pwd查看一下這兩個命令的區別:
[root@qiuri ~]# su admin
bash-3.1# pwd
/root
bash-3.1# su - admin
-bash-3.1# pwd
/usr/src
看到了吧,其實這兩個命令的區別就是:使用su命令切換用戶後,不會修改當前登錄會話的目錄或者環境;而su – 後,通常會修改用戶的登錄目錄爲用戶自己的根目錄,並且用戶自己的變量也可以使用了。或許有人還有疑問爲何提示符爲”-bash-3.1#”了,其實這個”-bash-3.1”不是關鍵,主要是看”#””$”來區別用戶的類型。這裏變爲”-bash-3.1”的原因是我們創建的admin用戶沒有自己的初始配置文件,我們使用命令創建用戶的時候都會從/etc/skel這個目錄中複製到用戶的宿主目錄。這裏查看一下這個配置文件:
[root@qiuri ~]# ls -al /etc/skel/
total? 48
drwxr-xr-x  2 root root  4096 09-18 21:26 .
drwxr-xr-x 94 root root 12288 10-11 20:27 ..
-rw-r--r--  1 root root    24 2006-07-12 .bash_logout
-rw-r--r--  1 root root   176 2006-07-12 .bash_profile
-rw-r--r--  1 root root   124 2006-07-12 .bashrc
[root@qiuri ~]#
我們看到這些都是一下隱藏文件,這些文件是用於用戶的環境變量的shell腳本,用戶登錄後可以修改這些文件。我在以後的文章中詳細介紹這些文件的用途。
那我們就將這些文件複製過去看看:
[root@qiuri ~]# cp -r /etc/skel/.* /usr/src
[root@qiuri ~]# su - admin
[root@qiuri ~]# pwd
/usr/admin
當然,通過這種方法創建的後門用戶很容易被細心的管理員發現,但是如果你對這些配置文件不是很熟悉的話也是很難發現問題。這就是火能助人,也能殺人的道理。
當發現這樣的用戶,我們需要做的是將其刪除,刪除用戶的命令是userdel
1)userdel命令用於刪除linux系統中的用戶賬號,命令格式如下:
userdel [-r] user_name
一般,在使用這條命令的時候,如果不添加”-r”的話,不會刪除用戶的宿主目錄,這樣就可以保存該用戶在系統中的文件,要是想刪除的話我們可以手工的去刪除該目錄。但是你已經確認該宿主目錄中的文件可以刪除,直接使用”-r”這樣就可以一次性的刪除用戶操作。
[root@qiuri ~]#userdel –r admin
2)手工刪除用戶
手工刪除一個用戶需要執行如下步驟:
/etc/passwd/etc/shadow/etc/group配置文件中刪除該用戶的相關條目,之後刪除該用戶的宿主目錄。
但是,在我們工作的過程中,爲了提高系統的安全性最常用的就是禁用和啓用賬戶。可以使用usermod命令來禁用賬號:
[root@qiuri ~]# grep u1 /etc/shadow    #禁用前查看一下
u1:$1$66svsu0z$9yg1bwziK2rXvnYiUH9HB1:14163:0:99999:7:::
[root@qiuri ~]# usermod -L u1     #禁用賬號
[root@qiuri ~]# grep u1 /etc/shadow   #再次查看一下,發現多出一個"!",表明用戶已禁用
u1:!$1$66svsu0z$9yg1bwziK2rXvnYiUH9HB1:14163:0:99999:7:::
[root@qiuri ~]#
當因工作需要的時候,可以將已禁用的賬號u1重新啓用,命令如下:
[root@qiuri ~]# usermod -U u1    #重新啓用賬號
[root@qiuri ~]# grep u1 /etc/shadow   #發現"!"已經移除,表明用戶已啓用
u1:$1$66svsu0z$9yg1bwziK2rXvnYiUH9HB1:14163:0:99999:7:::
[root@qiuri ~]#
從上邊的操作可以看出usermod命令禁用和啓用賬號功能是通過在/etc/shadow 配置文件中,在用戶密碼位之前添加和刪除"!"實現的。當然也可以使用手工添加或刪除"!"來實現效果。
不知道大家還記不記得我在上一篇文章中提到可以通過設置shadow文件中的“賬號失效期”來設置賬號的有效期限。這裏也可以使用usermod命令實現,命令格式如下:
usermod –e YYYY-MM-DD name
通過這個命令可以設置用戶賬號的過期時間,就是說在此日期之前用戶賬戶生效,過了這個日期後用戶將禁止登錄。設置後如下所示:
[root@qiuri ~]# usermod -e 2008-10-18 u1    #設置賬號過期時間
[root@qiuri ~]# grep u1 /etc/shadow    #驗證結果
u1:$1$66svsu0z$9yg1bwziK2rXvnYiUH9HB1:14163:0:99999:7::14170:
[root@qiuri ~]#
實際的管理工作中,如果我們一個一個的去管理賬號的話,無形中會增加我們大量的管理負擔和造成不必要的錯誤。可以使用“用戶組”來解決這些問題。那麼什麼是“用戶組”呢?用戶組就是一個具有相同特性的用戶集合,在同一個組中的所有用戶具有相同的組權限。一般情況下我們使用useradd創建用戶的時候會創建和用戶同名的用戶組,但是有些時候我們需要單獨的創建用戶組,可以使用groupadd命令實現?命令格式如下:
groupadd [-g gid [-o]] [-r] [-f] group

我們創建一個qiuri組爲例:
[root@qiuri ~]# groupadd qiuri  #添加用戶組
[root@qiuri~]# grep qiuri /etc/group    #驗證是否創建成功
qiuri:x:501:
如果我們要創建一個xifeng組同時組ID1000
[root@qiuri ~]# groupadd -g 1000 xifeng     #添加組ID爲1000的用戶組
[root@qiuri ~]# grep xifeng /etc/group       #驗證結果
xifeng:x:1000:
我們會創建組了,但是如何將用戶添加到相應的組呢?一般有以下幾種情況?

 1) 創建用戶的時候指定用戶屬於那個用戶組
例如:我們創建一個test用戶,同時這個用戶屬於qiuri組,這個時候系統就不會再建立與用戶名同名的用戶組賬號了。命令格式:
uersadd -g group_name user_name
創建過程:
[root@qiuri ~]# grep qiuri /etc/group      #確認用戶組qiuri是否存在
qiuri:x:1001:
[root@qiuri ~]# useradd -g qiuri test    #將創建用戶指定到qiuri組
[root@qiuri ~]# grep test /etc/passwd  #查看用戶是否創建成功,是否屬於組qiuri。
test:x:510:1001::/home/test:/bin/bash
[root@qiuri ~]# grep qiuri /etc/group
qiuri:x:1001:
說明:驗證用戶屬於那個組的時候也可以使用命令groups user_name來查詢。
2)更改用戶的用戶組
一般什麼時候需要更改用戶組呢?例如:我們在創建用戶的時候忘記指定用戶屬於那個用戶組,這個時候我們執行此命令。可以使用usermod –g來更新組的名稱,這裏我們將test用戶從qiuri組更改到xifeng組。命令格式:
uermod –g group_name user_name
更改過程:
[root@qiuri ~]# usermod -g xifeng test   #更改用戶所屬於的組
[root@qiuri ~]# grep test /etc/passwd    #確認用戶組ID是否發生變化
test:x:510:1000::/home/test:/bin/bash
[root@qiuri ~]# grep xifeng /etc/group   #確認組ID爲1000的組是否是xifeng。
xifeng:x:1000:
[root@qiuri ~]#
3) 將用戶添加到其它組
一個用戶可以同時屬於多個組,例如:test用戶同時屬於qiurixifeng組,可以通過usermod –G命令來實現。注意:這條命令執行的前提條件是確認該用戶是否存在,也就是說是將已有用戶添加到相應的組。命令格式:
usermod –G group_name user_name
方法一、添加過程:
[root@qiuri ~]# usermod -G qiuri test     #讓用戶test同時屬於qiuri組
[root@qiuri ~]# grep test /etc/passwd    #查看一下用戶配置文件,無變化
test:x:510:1000::/home/test:/bin/bash
[root@qiuri ~]# egrep 'qiuri|xifeng' /etc/group  
#查看一下用戶組配置文件中關於xifeng和qiuri組。個人認爲使用groups test命令查看更方便些。
xifeng:x:1000:
qiuri:x:1001:test
[root@qiuri ~]#
或者使用gpasswd命令,命令格式如下:
gpasswd –a user_name group_name
方法二、添加過程:
[root@qiuri ~]# gpasswd -a test qiuri  #讓用戶test同時屬於qiuri組
Adding user test to group qiuri
[root@qiuri ~]# egrep 'qiuri|xifeng' /etc/group  #驗證結果
xifeng:x:1000:
qiuri:x:1001:test
 
[root@qiuri ~]# grep test /etc/passwd
test:x:510:1000::/home/test:/bin/bash
[root@qiuri ~]#
我們需要修改組的名稱的時候可以使用groupmod -n實現,命令格式:
groupmod -n  new_group_name old_ group_name
例如:將組qiuri更改爲qiurixifeng
[root@qiuri ~]# groupmod -n qiurixifeng qiuri  #修改組名稱
[root@qiuri ~]# grep qiuri /etc/group   #確認結果
qiurixifeng:x:1001:test
[root@qiuri ~]#
和組名稱對應的就是用戶名稱,我們可以usermod –l修改用戶名稱,命令格式如下:
usermod –l new_user_name old_ user_name

 

[root@qiuri ~]# usermod -l qiuri test    #修改用戶名稱
[root@qiuri ~]# grep qiuri /etc/passwd  #驗證結果
qiuri:x:501:501::/home/test:/bin/bash
最後要介紹刪除組的命令groupdel,命令格式如下:
groupdel group_name
[root@qiuri ~]# egrep 'qiuri|xifeng' /etc/group  #查看一下qiuri和xifeng組是否存在
qiuri:x:1001:
xifeng:x:1000:
[root@qiuri ~]# groupdel qiuri   #刪除qiuri組
[root@qiuri ~]# groupdel xifeng  #刪除xifeng組
[root@qiuri ~]# egrep 'qiuri|xifeng' /etc/group   #確認結果
[root@qiuri ~]#
 下一篇: Linux用戶管理詳解(下)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章