liunx 用戶管理和ROOT許可權控制

liunx 用戶管理  建立一個新的用戶包括兩個步驟,第一步是使用useradd命令完成一個新用戶的初始化設置工作;第二步是用passwd為這個新用戶設置密碼。例如,我們要給系統添加一個用戶叫floatboat,密碼為fan2001z,那相關的操作是:  useradd floatboat <回車>  這時候系統沒有任何顯示。接著:  passwd floatboat <回車>  系統顯示:  Changing password for user floatboat  New UNIX password:  你輸入:  fan2001z<回車>  注意,由於linux並不採用類似windows的密碼回顯(顯示為*號)――為避免你輸入密碼時被人注意到有多少位――所以,輸入的這些字元你是看不見的。  系統顯示:  Retype new UNIX password:  你再重新輸入一次密碼,然後回車確認,這時系統會顯示:  passwd:all authentication tokens updated successfully  表示你修改密碼成功了。  到這裡,新用戶的創建工作就算完成了。下面,我們再補充一些有關增加新用戶的常識:  1、useradd所做的初始化操作已經包括在/home目錄下為floatboat帳號建立一個名為floatboat的主目錄。如果你不想使用這個預設的目錄,而希望把他的主目錄放在/home/goal里(還放在/home下,只是一種良好的習慣,沒有其他什麼特別的要求),可以使用useradd的參數-d,命令如下:  useradd -d /home/goal floatboat  2、useradd的初始化操作還包括為用戶單獨建立一個與用戶名同名的組(floatboat組)。這叫用戶私有組的機制,與默認組機制相對應。對用戶分組一是方便管理,二是可以明確許可權。複雜的我們將在以後的深入內容中探討。我們如果想讓此用戶加入一個已有的組的話,可以使用-g參數。例如我們想讓floatboat加入webusers組,那麼可以使用以下命令:  useradd -g webusers floatboat  同樣的,我們還可以使用-G參數使他同時加入多個組,例如webusers和ftpusers:  useradd -G ftpusers,webusers floatboat  3、passwd命令為一個用戶設置密碼,但它實質上是一個修改密碼的程序。只有超級用戶和用戶自己可以修改密碼,其它的普通用戶沒有給他修改密碼的權利。用戶密碼的組成要盡量的複雜,最好包括字母、數字和特殊符號,而且最好設成6位以上。太短passwd程序不允許,只是單純的字母或單純的數字,passwd也會有意見。你都會看見passwd出現的提示的,不要害怕,仔細看看到底它是怎麼說的:)  4、你在增加一個新用戶的時候,也可以設置用戶登錄的shell。預設的,系統提供了/bin/bash。你如果非要指定的話,可以使用-s 參數就可以了。例如  useradd -d /www -s /usr/bin/passwd floatboat  注意,這些參數是可以一塊使用的,如上例所示,它表示增加新用戶,並把其主目錄路徑設置在/www,登錄的shell為/usr/bin/passwd。關於shell的更詳細的說明,請參考下面的修改用戶的個人設置相關內容。

創建一個和ROOT一樣的用戶

useradd -u 0 -o -g 0 floatboat 這樣就有一個和ROOT一樣的用戶了

-u -g 都是0級 即ROOT 級 -O 是允許有相同的ID 也可以使用usemod 中同樣的參數即其它的參數了。這樣就可以利用下面介紹的方法(pam.d/ssh)禁止ROOT用戶遠程登陸了  5、刪除一個用戶可以使用userdel命令,直接帶用戶名做參數就可以了。    修改用戶的設置  對現有用戶的修改,比較常用的主要是修改密碼(使用passwd就好了),修改用戶的登錄shell,修改用戶所屬的默認組,設置帳號有效期,修改用戶的說明信息等等,偶爾也會用到修改用戶主目錄。    修改用戶的登錄shell  使用chsh命令可以修改自己的shell,只有超級用戶才能用chsh username為其它用戶修改shell設置。注意,指定的shell必須是列入/etc/shells文件中的shell,否則該用戶將不能登陸。  一般,比較常見的shells文件包括下面這些shell:  /bin/bash2  /bin/bash  /bin/sh  /bin/ash  /bin/bsh  /bin/tcsh  /bin/csh  而網管們還喜歡在裡面加上/usr/bin/passwd,這是為了不然用戶通過控制台或telnet登錄系統,卻可以使用修改帳戶密碼(比如在FTP里用)。以及/bin/false,也就是不讓這個用戶登錄的意思嘍^&^,連FTP也不能用。  你也可以使用usermod命令修改shell信息,如下所示:  usermod -s /bin/bash floatboat  其中/bin/bash和floatboat應取相應的shell路徑文件名及用戶名。  還有一種情況,就是你為用戶設置了一個空的shell(就是""),也就是說,這個用戶沒有shell。呵呵,絕對沒有在我還未曾見過,因為這種用戶登錄後,系統還是會給它一個shell用的。不信你試試:  usermod -s "" floatboat  這種用戶根據系統的不同,會有一個sh或bash進行操作,我也沒有看出功能上和其它普通用戶登錄有什麼不同。    修改用戶所屬的默認組  這個功能也可以通過usermod命令來實現,使用-g參數,例如把floatboat的默認組改為nobody,可以使用如下命令:  username -g nobody floatboat  nobody在類UNIX系統中一般都意味著沒有任何許可權。    設置帳號有效期  如果使用了影子口令,則可以使用如下命令來修改一個帳號的有效期:  usermod -e MM/DD/YY username  例如把用戶floatboat的有效期定為2001年12月31日:  usermod -e 12/31/01 floatboat  如果把該用戶的有效期設為已經過去的時間,就可以暫時禁止該用戶登錄系統。    修改用戶的說明信息  修改用戶的說明信息,最簡單的方法莫過於直接修改/etc/passwd文件,找到對應的用戶記錄行,例如下列行:  floatboat:x:503:503::/home/floatboat:/bin/bash  你可以直接在第四個冒號和第五個冒號之間插入該用戶的說明就可以了。其實,很多用戶設置都可以在這修改,比如該行最後一部分/bin/bash就是用戶登錄shell的設置。關於這個/etc/passwd文件,我們後面將進一步的深入探討。    修改用戶主目錄  修改用戶的主目錄主要使用usermod命令的-d參數,例如:  usermod -d /www floatboat  這一行將floatboat的主目錄改到/www。如果想將現有主目錄的主要內容轉移到新的目錄,應該使用-m開關,如下所示:  usermod -d -m /www floatboat    文件目錄的許可權  linux下,每一個文件、每一個目錄都有一個屬主,並針對用戶自己、用戶所在組、其它所有帳號(組)分別設定讀、寫、執行三種許可權。例如,我(假定是webusers組的floatboat帳戶的擁有者)使用如下命令建立一個新的文件  touch mytestfile  然後我們使用ls -l mytestfile這一命令來查看這個文件的許可權狀態(關於ls命令,可以查閱本站的命令查詢),可以得到如下的屏幕輸出顯示:  -rw-rw-r-- 1 floatboat webusers 0 Feb 6 21:37 mytestfile  輸出由空格分為9個部分,我們比較關心第一、三、四個欄位,分別表示文件許可權屬性、文件所有者帳戶、文件所屬組。  ◆使用chown命令修改文件的主人  當你新建立一個文件的時候,文件的所有者當然就是你了。這一事實只有超級用戶(比如說root)才可以通過chown命令改變(例如 chown otheruser mytestfile,把mytestfile文件的屬主改為otheruser)。普通用戶不能把自己的文件「送」給別人,不然你把有特殊目的的程序給了root怎麼辦?:)  chown命令的用法比較簡單。這裡我先假設你現在擁有超級用戶許可權,那麼你就可以使用如下命令將一個文件「送給」floatboat了:  chown floatboat /home/floatboat/thefileisrootcreate.txt (假定該文件是由root創建的)  修改一個目錄的所有者也是類似的:  chown floatboat /home/newboat  當然,如果這個目錄還有子目錄及文件需要同時送給floatboat,chown也是支持-R參數的:  chown -R floatboat /home/newboat  如果你同時想修改文件/目錄所屬的組的話,你可以使用以下命令方便的達到目的:  chown -R floatboat.ftpusers /home/newboat  這樣,不但文件主人得到了修改,文件所屬的組也變成了ftpusers  ◆ 修改文件的組屬性  文件所屬組你倒是可以改變,前提是:  1、你的超級用戶。  2、你同時屬於兩個或兩個以上的組。  兩個條件你至少具備一個,你才能夠把文件所屬舊組變為新組。使用如下的命令將當前目錄下所有html文件所屬的組改為httpd:  chgrp httpd *.html  和chown命令一樣,chgrp也可以使用-R參數對一個目錄內的所有文件和子目錄進行遞歸的修改組屬性。  <提示>:你可以使用不帶參數的groups命令查看自己屬於哪個組。    文件許可權的設定是我們這一小節討論的核心,我們主要介紹chmod命令的兩種用法。    ◆使用訪問字元串設置文件目錄許可權  正如前面所說的,每一個文件、目錄都針對用戶自己、用戶所在組、其它所有帳號(組)分別有讀、寫、執行三種許可權及其組合。當一個普通用戶新建一個文件的時候,它默認的訪問許可權顯示就如我們剛才所舉例子的第一個欄位所示。總共十位字元「-rw-rw-r--」,第一位是目錄區分標誌,如果是d的話,表示這是一個目錄。第二到四位分別表示文件所有者的讀(r:read)、寫(w:write)、執行(x:execute)屬性,第五到七位是文件所屬組的讀、寫、執行許可權,第八到第十位則是其它用戶的讀、寫、執行許可權。如果對應的位是相應的字母,就是有這相應許可權,否則為「-」,表示沒有獲得這個許可。象剛才例子中的文件就是自己可讀寫,本組可讀寫,其它用戶可讀,所有的用戶(包括自己)都不能執行它。  我們的用u、g、o分別來指代用戶(user)、組(group)、其它帳戶(other),就可以方便的設置文件和目錄的許可權了。當然,我們也可以用a來表示所有的這三項。  例如,我們要對所有perl的腳本文件設定許可權,對所有用戶都可以讀和

ROOT許可權控制

Linux是當前比較流行的網路伺服器操作系統,它繼承了UNIX系統安全、穩定、高效等優點。在Linux系統中Root擁有最高許可權,正因如此攻擊者往往以獲取Root許可權為目標。作為管理員如何有效地對Root進行有效管理呢?本文將從許可權控制的角度,提供幾個安全技巧。   演示環境

  Red Hat Enterprise Linux 5  1、遠程登錄  我們知道在RHEL系統中,默認是允許Root用戶直接遠程登錄的。假若攻擊者獲取了Root的密碼,然後進行遠程登錄,那整個伺服器就淪陷了。因此,我們要做好Root的許可權限制,拒絕其遠程登錄。這樣,就算攻擊者獲取了Root密碼,也不能通過遠程登錄控制伺服器。限制Root遠程登錄的方法有很多種,筆者向大家推薦兩種。  (1)SSH限制  我們知道SSH是Linux系統中用於遠程維護管理的一個服務,類似於Windows系統中的Telnet或者遠程桌面3389。通過SSH限制Root遠程登錄,我們需要做的就是修改SSH的配置文件。找/etc/ssh/sshd_config文件,在其中添加PermitRootLogin no。需要注意的是Linux系統是大小寫敏感的,不要輸錯。輸入完畢後,保存並退出,然後輸入命令service sshd restart重啟SSH服務使修改生效。這樣當通過Root遠程連接Linux伺服器時,就會拒絕連接。  (2)PAM認證  我們還可以使用PAM認證模塊來拒絕Root用戶直接登錄系統,可通過下面的操作來實現。打開/etc/pam.d/sshd文件,在第一行加入auth required /lib/security/pam_listfile.so item=user sense=deny file=/etc/sshduser onerr=succeed這條語句。其含義是,在登錄時認證帳戶和密碼是否有效,只有認證通過才能登錄系統,否則結束認證拒絕登錄。它的認證模塊是/lib/security/pam_listfile.so,認證的用戶是用戶(user),當然也可以是組(group),認證的方式是拒絕(deny),認證文件是/etc/sshduser,文件名及目錄隨意,如果認證成功就返回(succeed)。  然後我們創建一個認證文件,可以在終端中運行命令echo "root" > /etc/sshduser來創建,當然我們也可以使用vi打開sshduser文件來加入用戶。需要說明的是,當有多個用戶時,每個用戶佔用一行。添加完成後,再使用Root直接登錄伺服器就可以看到登錄被拒絕了。2、su限制  我們知道在Linux系統中有個su命令,利用該命令只要知道Root用戶的密碼,默認情況下任何人都可以切換到Root用戶中進行操作。例如,一個屬於users組的普通用戶gslw可以通過su命令切換到Root用戶中.  因此,我們需要對SU進行限制,只允許特定組的用戶才能SU到Root用戶。使用的方法還是通過PAM認證模塊來實現。我們先前控制ssh服務,是使用/etc/pam.d/sshd文件,當然控制用戶使用su命令就需要對  /etc/pam.d/su文件進行修改。直接打開該文件進行修改,或者在終端命令窗口輸入命令vi /etc/pam.d/su,然後去掉其中#auth required pam_wheel.so use_uid的注釋即可。  其含義是,使用pam_wheel.so文件來檢查當前用戶的UID,如果不是whell組的用戶就直接拒絕。現在我們通過gslw用戶登錄系統,然後su到Root可以看到被拒絕。當然,要使其可以su到Root需要將其加入了wheel組才可以。 3、Root分權  大家知道,由於Root具有最高的許可權,經常用root用戶來管理系統,會給系統帶來一定的安全隱患。比如,一條無意識輸入的破壞性的命令有可能會給系統帶來毀滅性的打擊。另外,如果系統被植入了嗅探工具,如果用root登錄會造成root口令被竊取。因此我們要消減Root的許可權,可以讓其它用戶來完成Root的一些工作,避免過多地使用Root用戶。  如何為Root分權,要根據伺服器的性質來確定。比如一個Linux平台的apache伺服器,作為管理員經常使用的命令應該是諸如/usr/local/apache2/bin/apachect1 start/stop/restart這樣的是啟動/重啟/停止伺服器的命令。我們可以為此創建一個用戶gslw來管理apache伺服器,我們知道普通用戶是沒有許可權來啟動apache伺服器的。這裡要用到sudo命令,通過它為gslw用戶加入擴展許可權使其可以管理apache伺服器。  利用Vi或者直接進入/etc/pam.d打開sudo文件,然後在其中添加一行gslw ALL=(ALL) /usr/local/apache2/bin/apachectl命令就可以了。該命令分成四個欄位,依次為用戶名、作用對象、以誰的身份運行以及運行的命令。當然,我們也可以加入gslw localhost=(root) /usr/local/apache2/bin/apachectl start,這樣過濾更嚴格一些。最後保存退出後,使用gslw用戶登錄系統就可以運行/usr/local/apache2/bin/apachectl start命令了。上面只是舉例,大家可以根據自己的需要在sudo文件中添加相應的命令行。不過,需要說明的是命令一定要嚴格過濾,不要賦權過大。總結:Linux下的許可權控制是非常嚴格的,但也非常靈活,我們可以根據自己的安全需求進行布防。當然,關於Root許可權的控制策略和方法還有很多,希望本文提供的思路對大家有所幫助
推薦閱讀:

男人愛你情難自禁,才會控制不住說這5句話!
成功者總能控制自己的情緒
糖友秋冬之際如何控制血糖?
溫補通便、防皺消斑還能控制糖尿病,什麼東西這麼神?
我總是無法控制我的情緒!|你的不良情緒可能80%來自原生家庭

TAG:管理 | 控制 | 用戶 | 許可權 |