1. 程式人生 > >Linux賬號管理與ACL許可權

Linux賬號管理與ACL許可權

1、登入shell (1)/etc/passwd ①/etc/passwd檔案內容介紹,其中每一行的內容如下(共7列): 使用者名稱:密碼(都是x):UID:GID:使用者資訊說明:家目錄:使用者登入shell ②UID簡介 0 系統管理員,可以但不建議修改其他使用者的UID為0 1~499 系統使用者,其中1~99為系統使用者,100~499為使用者新增的系統服務賬戶 500~65535 一般使用者 ③GID簡介 GID與/etc/group檔案有關 (2)/etc/shadow ①該檔案中存放了使用者的登入密碼,之所以不放在/etc/passwd中是因為程式的執行與許可權緊密相關,而許可權又與UID與GID相關,所以需要經常讀取/etc/passwd。為了保護密碼的安全,才將密碼轉移。 ②/etc/shadow檔案內容如下(共9列): 使用者名稱:密碼:最近修改密碼的日期:密碼修改後不可被更動的天數:密碼需要重置的天數(一般為99999):密碼需要重置前的警告天數:密碼失效後的寬限天數:密碼失效日:保留欄位 2、忘記密碼
(1)passwd命令簡介 passwd -【lu】 使用者 -l 鎖住密碼,使普通使用者不能修改密碼 -u 解鎖使用者密碼 (2)修改密碼 ①普通使用者 直接輸入passwd命令,不需要加任何引數,然後輸入新舊密碼即可。 ②使用root使用者修改普通使用者密碼,只需輸入新密碼 passwd 使用者名稱 (3)忘記密碼 ①普通使用者忘記密碼 使用root使用者身份登入,用“passwd 使用者名稱”命令重置 ②root使用者忘記密碼 開機時以單人維護模式進入,再用passwd修改密碼 3、關於群組 (1)usermod命令簡介 usermod -G 附加分組 使用者名稱 ##將使用者新增/修改到附加分組 usermod -l 新使用者名稱 舊使用者名稱 ##修改使用者名稱 usermod -L 使用者名稱 ##鎖定使用者,使密碼無效 usermod -U 使用者名稱 ##解鎖使用者 usermod -a -G 附加分組 使用者名稱 ##在原來附加分組的基礎上再新增一個附加分組 (2)/etc/group /etc/group內容如下(共4列): 組名:群組密碼(x):GID:組內使用者成員(以“,”隔開) (3)初始群組 /etc./passwd中的GID就是初始群組,初始群組不需要在/etc/group中第4列填入使用者名稱 (4)groups命令簡介 groups 使用者名稱
  • 如果不帶使用者名稱,顯示的是當前使用者所屬的使用者組
  • 如果帶使用者名稱,則顯示的是使用者名稱的所屬組
(5)有效群組 ①使用groups命令輸出的第一個群組就是有效群組 ②有效群組的切換 當前使用者登入的情況下,使用“newgrp 組名”切換即可,但前提是待切換的組名必須是該使用者擁有的群組。需要注意的是,切換有效群組時,會開啟一個新的bash shell,退出需要輸入exit。 (6)/etc/gshadow /etc/gshadow內容如下: 組名:密碼:群組管理員:群組擁有的賬號 密碼為!時,表示無合法密碼,所以也無群組管理員。群組管理員這個概念是當無法使用root時,可以用gpasswd命令操作群組,但自從有了sudo這個命令,群組管理員已經很少使用。 4、新增、刪除使用者
(1)useradd useradd 【-u UID】 【-g 初始群組】 【-G 附加群組】 【-mM】 【-c 說明欄】 【-d 家目錄】 【-s shell型別】 使用者名稱 -m 自動建立使用者的家目錄(普通使用者的預設選項) -M 不自動建立使用者的家目錄(系統使用者預設值) -r 建立系統賬號 -D useradd的預設值 插曲:檢視使用者家目錄 echo ~使用者名稱 (2)/etc/login.defs UID/GID和密碼引數是參考的/etc/login.defs這個檔案, (3)/etc/skel/* 使用者家目錄中的配置檔案就是拷貝的這個目錄下的 (4)userdel user -r 使用者名稱 -r 連使用者的家目錄一併刪除 一般很少用這個命令,如果只是想讓賬號無法使用,只要將/etc/shadow中的第8列賬號失效日期設為0就行了。 5、查閱使用者資訊 (1)前面的useradd/usermod/userdel都是系統管理員才能用的命令,如果普通使用者想檢視使用者資訊,可以通過“finger”命令查詢,也可以使用“chfn”修改使用者的一般資訊。 (2)chsh chsh -l 列出目前系統中的shell chsh -s shell路徑 修改使用者的登入shell (3)id 查閱UID、GID等 6、ACL許可權 6.1、什麼是ACL 傳統的許可權設定只能針對(使用者,使用者組,其他組)進行(r,w,x)之類的許可權設定,ACL可以針對單一使用者,單個檔案或目錄來進行更細緻的許可權設定。 6.2、啟動ACL (1)ACL需要有檔案系統的支援才行,如何檢視檔案系統是否支援ACL,可以使用mount命令或者 dumpe2fs -h /dev/hda2 (2)如果沒有開啟ACL許可權,可以通過如下命令開啟 mount -o remount,acl / 如果想每次開機都生效,得在/etc/fstab中新增ACL許可權 6.3、使用ACL許可權 藉助getfacl和setfacl命令可以對檔案和使用者進行許可權設定 7、切換使用者身份 7.1、su (1)su 【-lm】 【-c “指令”】 【使用者名稱】 - -與-l類似,代表切換使用者時,使用待切換使用者的環境配置 -m 與-p類似,表示切換使用者時,不使用待切換使用者的環境配置 -c 後面可以執行一次指令,指令必須用雙引號引起來 注:關於這個-c指令,類似於sudo,表示用一次root身份執行指令,需要先輸入root的密碼,執行完後又會變回普通使用者。 (2)使用exit可以離開su的環境 (3)使用su的缺點,必須知道root的密碼 7.2、sudo (1)sudo可以讓當前使用者以其他使用者的身份執行指令,因此不是所有人都能使用sudo命令,只有在/etc/sudoers內的使用者才能執行sudo指令。 (2)sudo 【-b】 【-u 使用者名稱】 指令 -b 表示將後面的指令放到後臺程序執行,而不影響當前的shell -u 後面可以接欲切換的使用者,如果沒有這個選項表示使用root (3)sudo執行步驟如下:
  • 系統先去/etc/sudoers中搜尋該使用者是否有執行sudo的許可權
  • 如果使用者有執行sudo的許可權,則讓其輸入自己的密碼
  • 密碼正確就執行命令,root執行sudo不需要輸入密碼
(4)修改/etc/sudoers ①修改/etc/sudoers檔案需要使用visudo,因為/etc/sudoers是有一定語法規範的,如果設定錯誤會造成sudo不能使用,使用visudo在修改結束退出時,系統會去校驗檔案的語法。 ②使用visudo時,找到root那一行,會看到如下內容 使用者名稱 登入主機=(可切換的身份) 可下達的指令 root ALL=(ALL) ALL (5)利用群組以及免密碼的方式處理visudo ①使用visudo時,找到wheel那一行,會看到如下內容 #%wheel ALL=(ALL) ALL 將#註釋去掉,可以繼續使用wheel分組也可以替換成別的分組,再將使用者加入群組中 usermod -a -G 組名 使用者 這樣做的目的是減少/etc/sudoers中出現的使用者,只用一行分組設定就可以代替很多需要設定sudo的使用者。 ②使用群組免密方式 %wheel ALL=(ALL) NOPASSWD:ALL (6)限制使用者sudo操作root使用者的指令引數 使用者名稱 ALL=(root) !/usr/bin/passwd,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root ! 表示不可執行的意思,多個命令之間用“,”隔開 如此一來,上面這段設定就可以使普通使用者不能修改root的密碼了 (7)visudo還支援別名 visudo支援的別名包括指令別名、使用者別名、主機別名。 為什麼要設定別名,如果有很多使用者需要設定可用與不可用的命令,而這些命令又相同,就需要每配置一個使用者就寫一段指令,很麻煩。 ①建立使用者別名 User_Alias 別名1=使用者1,使用者2。。。 ②建立命令別名 Cmnd_Alias 別名2=命令1,命令2。。。 ③使用別名 別名1 ALL=(root) 別名2 注:別名必須使用大寫字元,命令使用絕對路徑 ④sudo的時間間隔問題 第一次使用sudo時需要輸入密碼,但5分鐘內不需要再次輸入密碼 (8)sudo搭配su使用 別名1 ALL=(root) /bin/su - 這樣可以讓使用者具有root的許可權,但是可以輸入自己的密碼執行,這是多人管理一臺主機時的常用技巧 8、特殊的shell-/sbin/nologin 普通使用者和系統管理員登入系統時是使用的bash shell登入的,而系統賬號是不需要登入主機即可使用的,這裡的不需要登入是指不能輸入使用者名稱和密碼登入,但是可以使用系統資源。所以,針對這種情況,我們讓系統賬號使用/sbin/nologin來登入系統。 9、PAM (1)PAM是統一資料校驗介面,PAM用來進行驗證的資料稱為模組。 (2)PAM藉由一個與程式同名的配置檔案來進行一連串的校驗工作,所有的配置檔案都放在/etc/pam.d資料夾下。PAM配置檔案的示例如下: #%PAM-1.0 <==這是PAM版本說明,除此以外的#都是註釋 驗證類別 控制標準 PAM模組與該模組的引數 <==每一行都是一個獨立驗證流程 (3)PAM關鍵字 控制標準:include 表示引入第3列的PAM模組來進行驗證 (4)驗證類別:
auth 身份驗證
account 賬號驗證
session 記載使用者在登入shell期間PAM的環境設定
passwd 密碼驗證
(5)控制標準
required 會返回驗證結果,但不會影響後續驗證
requisite 會返回驗證結果,但是驗證失敗會中斷後續驗證
sufficient 會返回驗證結果,但驗證成功會中斷後續驗證
optional 主要用於顯示資訊,並不是用於驗證
(6)模組資訊 /etc/pam.d/* 每個程式個別的PAM配置檔案 /lib/security/* PAM模組檔案的實際目錄 /etc/security/* 其他PAM環境配置檔案 /usr/share/doc/pam-*/ 詳細的PAM說明檔案
pam_securetty.so 限制root只能從安全的終端登入,/etc/securetty
pam_nologin.so 限制普通使用者是否能夠登入主機,如果/etc/nologin存在,則登入不了
pam_selinux.so 驗證通過後,啟動SELinux
pam_console.so 幫助使用者通過特殊的終端介面登入系統
pam_loginuid.so 驗證使用者UID
pam_env.so 如果需要設定額外的環境變數,可以參考/etc/security/pam_env.conf
pam_unix.so 這個模組比較重要,可以用在驗證階段的認證
pam_cracklib.so 驗證密碼強度
pam_limits.so ulimit就是使用的這個,參考/etc/security/limits.conf
(7)PAM的日誌記錄地址:/var/log/secure 10、主機上的使用者資訊交流 (1)查詢目前已登入系統的使用者 w/who 使用w時 第一行顯示當前時間,開機(up)多久,幾個使用者在系統上平均負載 (2)顯示每個賬號的最近登入時間 lastlog lastlog會去讀/var/log/lastlog檔案 (3)登入使用者對談 write 使用者名稱 【使用者所在終端】 接下來輸入內容,按enter鍵傳送,按ctrl+c結束輸入 如果使用者不想接收資訊,可以輸入mesg n抵擋,但是不能抵擋root的資訊,解開資訊使用mesg y (4)對所有人傳送資訊 wall “資訊內容” 按enter鍵傳送 11、一些檢查工具 (1)pwck
  • 檢查/etc/passwd配置資訊
  • 檢查家目錄是否存在
  • 比對/etc/passwd和/etc/shadow
(2)pwconv (3)大量新建賬號