运维基础--Linux用户和组的管理
用戶和組的管理
? 系統中,創建用戶和群組的目的,就是對系統資源進行權限的統一分配管理。好比說,在一個公司內的資源,不同級別的在職員工對資源的利用權限需要進行統一分配;?
如何避免權限分配后的濫用呢?
?用戶進行權限使用的時候,都必須遵守Cisco公司開發的AAA認證體系,即:
? ?Authentication:認證,核實身份是否正確
? ?Authorization: 授權,對已經核實身份的用戶進行資源分配
? ?Accounting: 審計,監管資源被使用的情況;
進行資源認證的必要性最主要來源于計算機系統資源的有限性;在系統中,能夠實現資源使用和完成任務的主體是:程序進程;linux作為一個多用戶、多任務的操作系統,進程是以其發起者的身份運行的:可以理解為,進程的所有者就是發起者;在進程上會將發起者標記在進程上;
? 當進程試圖訪問資源的時候,安全上下文會去比對進程的所有者和資源的所有者的關系;
? ? 首先查看進程的所有者是不是資源的所有者:
? ? 如果是,就按照屬主的權限使用資源;
? ? 如果不是,則判斷進程的所有者是否屬于資源所屬組:
? ? ? ? 如果是 按照屬組的權限使用資源;
? ? ? ? 如果不是,則直接進入資源的其他人訪問權限來使用資源;
因此這里引出了用戶的概念:
一、用戶
?1.用戶賬戶:就是計算機操作者在操作系統中的身份映射;//在滿足了認證條件之后的身份映射;
?2.分類:
? ? ?超級用戶(管理員):root
? ? ?普通用戶:
? ? ? ?系統用戶:為了保證安全,必須讓那些運行在后臺的進程或者服務類進程,以非管理員的身份運行;一般不需要登錄到系統
? ? ? ?登錄用戶:能夠正常使用整個系統資源的用戶;
?3.用戶的標識
? ? 1)用戶登錄名稱:為操作者準備的簡單易記的字符串標識
? ? 2)用戶ID:為計算機系統準備的數字標識;?
? ? ? ? 超級用戶:0;
? ? ? ? 系統用戶:CentOS 5、6:1-499;CentOS 7:1-999;
? ? ? ? 登錄用戶:CentOS 5、6:500-60000;CentOS 7:1000-60000 ? 6W+的標識符是用戶自定義的標識;
? ? 3)名稱解析:名字<--->UID ; 解析庫:/etc/passwd
? ? ?系統利用解析庫完成認證機制:即驗證登錄用戶是否是輸入的用戶;
? ? ?認證庫:
? ? ? ?用戶的認證信息庫;/etc/shadow
? ? ? ?組的認真信息庫:/etc/group
? ?采用密碼認證機制
? ? ? ?設置密碼的一般性策略;
? ? ? ? ?1.盡量使用隨機字符串作為密碼;
? ? ? ? ?2.密碼長度不要少于8字符;
? ? ? ? ?3.至少包括:大小寫字母、數字、標點符號四類中的三類;
? ? ? ? ?4.不定期更換密碼;
? ? ?在linux中,保存到認證庫中的密碼信息是經過加密的方式保存的:
? ? ? ?hash單向加密算法;抽取原始數據是特征信息,數據指紋;
? ? ? ? ? 單向加密算法的特征:
? ? ? ? ? ? 1.只要數據相同,加密結果就必然相同
? ? ? ? ? ? 2.無論數據多大,加密結果定長輸出
? ? ? ? ? ? 3.雪崩(蝴蝶)效應:原始信息修改一丁點,加密后的結果大不同
? ? ? ? ? ? 4.不可逆
? ? ? ? ? ?常用的單向加密算法:
? ? ? ? ? ? ?md5(Message Digest 5): 128bit定長輸出;
? ? ? ? ? ? ?shal(Secure Hash Algorithm) 160bit定長輸出;sha224\256\384\512
? ? ? ? ? ?salt:隨機數
? ? ? ? ? ? ? /dec/random :僅僅只是從熵池中返回隨機數;如果熵池中隨機數耗盡,則進程被阻塞;
? ? ? ? ? ? ? /dev/urandom:先試圖從熵池中返回隨機數,如果熵池耗盡,則利用偽隨機數生成器生成偽隨機數;
而最終認證字符串是:算法+salt+密碼
二、群組
?用戶組:可以將具有某些相同或相似屬性的用戶聯系在一起以便集中授權的這樣一種容器;
? ? 組的類別:
? ? ? 管理員組
? ? ? 普通用戶組:
? ? ? ? 系統組:
? ? ? ? 登陸組:
? ? ?組的標識方法:
? ? ? ?組名:方便操作者使用的組的標識
? ? ??組的ID(GID):為系統提供組標識
? ? ? ? ?管理員組:0
? ? ? ? ?系統組:CentOS 5、6:1-499;CentOS 7 :1-999;
? ? ? ? ?登陸組:CentOS 5、6:500-60000 CentOS 7:1000-60000;
? ? ? 解析庫:/etc/group 認證庫:/etc/gpasswd
? ? ? 組也需要密碼保護;
? ? ? 如果組沒有設置密碼保護,則不能隨時加入
? ? ? 以用戶為核心,來對組進行分類:
? ? ? ? 用戶的主要組(基本組):primary group,對于用戶,這樣的組必須要有且只能有一個;
? ? ? ? 用戶的附加組(附屬組,額外組):addition group。這樣的組對于用戶來說,可以沒有,可以有多個;
? ? ? 根據組所容納的用戶來分:私有組和公共租;
? ? ? ? 私有組:組名和用戶登錄名相同,并且組中只有此用戶;
? ? ? ? 公共租:組織可以包含其他多個不同用戶;
? ? ? ? ?注意:默認情況下,用戶的主要組都是其私有組;
用戶和組的管理(主要使用命令完成):
? 組管理相關:
? ? groupadd groupdel groupmems groupmod groups?
? 用戶管理:
? ? useradd userdel usermod userhelper users
? 認證管理相關:
? ? passwd gpasswd chage?
? 其他相關管理:
? ? chsh finger su id?
/etc/passwd文件:
?格式:name:password:UID:GID:GECOS:directory:shell
? name:登錄名
? password:密碼字段,現使用了shadow機制的系統中,同常用"x"作為占位符;
? UID: 用戶的id
? GID:用戶的主要組的id
? GECOS:comment,注釋類的信息,現在一般都會用來存放用戶的說明信息或者全名;
? directory:用戶的家目錄路徑(一般是絕對路徑);
? shell:用戶的默認登錄shell 的絕對路徑
/etc/group文件:
? 格式: group_name:password:GID:user_list
? group_name:組名;
? password:組密碼占位符,默認為空;
? GID:組的ID
? user_list:以該組為附加組的用戶的列表;
/etc/shadow文件:
? 格式:login name:encrypted password … …
? login name:用戶的登錄名;
? encrypted password:加密了的密碼
? ? 格式: $算法$salt+$真正意義的加密密碼;
? ? ?如果該位置!,則表明用戶的密碼被禁用;
? ? ?如果該位置*,則表明該用戶是系統用戶不能登錄
? ? ?如果該位置為空:則表明用戶可以無數如密碼即可登錄,不推薦
? ?date of last password change:
? ? ?相對時間概念,1970.1.1到最后一次修改密碼的時間
? ?mimimum password age:
? ? ?在多長時間內無法修改密碼,默認是0 ,意即 隨時可以改密碼,
? ?maximum password age:
? ? ?在多長時間過后密碼過期,默認99999;意為永久有效;
? ?password warning period:
? ? ? 密碼過期之前的友善提醒天數,默認7天;
? ?password inactivity period
? ? ? 密碼過期之后的寬限期,默認為-1,意思是永久寬限
? ?Account expiration date:
? ? ? 一個用戶賬戶密碼過期的日期,是一個絕對期限;
? ?reserved field
? ? ?保留字段,以備以后使用;
?/etc/gpasswd
?組的管理命令:
? ?1.groupadd:新建組賬戶。
? ? ? -g ?gid:在創建組賬戶的時候,指定組賬戶的GID,如果不使用該選項,系統會選擇在組解析文件中出現的不大于60000的最大GID加1;
? ? ? -r :創建系統組,意思就是創建一個GID在1-999/1-499之間的組;
? ?2.groupmod:修改組的相關屬性信息;
? ? ?-g ?gid:修改組ID
? ? ?-n ?修改組名
? ?3.groupdel:刪除組賬戶
? ? ?注意:如果某個組是某個用戶的主要組或私有組,則該組無法刪除;
?用戶管理命令:
? ?1.useradd:添加用戶賬戶;
? ? ? /etc/default/useradd
? ? ? /etc/login.defs
? ? ? /etc/ske1;
? ? 以上三個文件和目錄能夠幫助管理員在未指定任何選項時,也能創建用戶,并為用戶賦予默認的屬性
? ? 【選項】
? ? ? -c,--comment ‘COMMENT’在創建用戶時為用戶添加注釋信息,一般為全民
? ? ? -d,--home /PATH/TO/HOME_DIR:在創建用戶時,為用戶指定的家目錄的絕對路徑,被指定的目錄應該是實現不存在的目錄;
? ? ? -g,--gid GROUP :在創建用戶時,為用戶指定主組;
? ? ? -G, --groupsGROUP1[,GROUP2,...[,GROUPN]]]:每個組都用逗號隔開,沒有中間的空格。創建用戶時,為用戶添加附加組;
? ? ? -m,--create-home:創建用戶時 ,強制性為用戶創建家目錄
? ? ? -M:創建用戶時,不會創建用戶的家目錄,即使在/etc/login.defs里CREATE_HOME的值為yes也不創建;
? ? ? -r,--system ?:創建系統用戶;
? ? ? -u,--uid:創建用戶時,為用戶指定UID,這個UID可以超過60000;
? ? ? -s,--shell /PATH/TO/SHELL :創建用戶時,為用戶指定默認shell;
? ? ? -D,--default 顯示或修改用戶默認屬性值;
? ? ? ? -s,--shell ?/PATH/TO/SHELL ?:修改 /etc/default/useradd文件中SHELL的默認值;
? ?2.usermod: 修改用戶賬戶信息:
? ? ? 選項:
? ? ? ?-c,--comment 'COMMENT' 修改用戶的注釋信息
? ? ? ?-g,--gid GROUPNAME 修改用戶的主要組
? ? ? ?-G,--groupsGROUP1[,GROUP2,...[,GROUPN]]]:修改用戶的附加組為列表中的組(覆蓋)
? ? ? ? ?-a,--append: 與-G選項同時使用,給用戶添加心的附加組;
? ? ? ?-d,--homeHOME_DIR :修改用戶的家目錄;
? ? ? ? ?如果給了-m選項,將舊的家目錄的數據移動至新的家目錄中;
? ? ? ?-l:更改用戶的登錄名
? ? ? ?-s, --shellSHELL:修改用戶的登錄shell
? ? ? ?-u, --uidUID ?修改uid
? ? ? ?-L,--lock 鎖定用戶密碼
? ? ? ?-U,--unlock 解鎖用戶密碼;
? ?3.userdel:刪除用戶賬戶
? ? ? ?-r, --remove
? ? ? ? ? ?用戶主目錄中的文件將隨用戶主目錄和用戶郵箱一起刪除。在其它文件系統中的文件必須手動搜索并刪除。
用戶認證相關:
? ?1.passwd:設置和查看用戶的口令信息-密碼;
? ? ?passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]
? ? ?如果省略用戶名,意味著修改當前登錄用戶的密碼;如果指定用戶名,更改指定用戶的密碼,且只能root使用;
? ?【選項】:
? ? ? -l,--lock
? ? ? -u,--unlock
? ? ? ? 相比較usermod里的-L -U 其優先級更高
? ? ? ? 如果使用usermod -L鎖定的用戶密碼,可以用passwd -u解鎖
? ? ? ? 而使用passwd -l鎖定的用戶密碼,不可以用usermod -U解鎖;
? ? ?-d,--delete :刪除用戶密碼,將/etc/shadow文件中的第二字段清空~!
? ? ?-S,--status :查看用戶密碼的狀態
? ? ?--stdin :借助管道,將輸入數據流當作標準輸入信息送給passwd命令
? ? ? ? ? ? echo "PASSWORD" |passwd --stdin USERNAME
組認證相關:
? ? gpasswd:
? ? ?gpasswd 【選項】 groupname
? ? ? -a,--adduser ?向名為group的組中添加用戶
? ? ? -d,--deleteuser 從名為 group 的組中移除用戶 user。 ??
其他命令:
? su : 切換用戶身份;
? ? ?su USERNAME?
? ? ? ? 部分切換,半切換;即切換用戶時,不會重新讀取目標用戶的配置文件,因此用戶并沒有登陸行為,所以工作環境不初始化;
? ? ?su - USERNAME == su -l USERNAME ? ? ? ?
? ? ? ? ?登錄式切換,完全切換;即切換用戶時,會重新讀取目標用戶的配置文件,并且初始化工作環境;
? ? ?
? ? ?-c:并不會切換用戶身份,而是以目標用戶的身份執行某命令
? ? ?用su命令從root切換至普通用戶時,無需密碼;反過來,就必須給出目標用戶的正確密碼否則切換失敗;
? ? ?進行切換后不要連續切換,而是要用exit命令返回之前的用戶;
? newgrp:臨時更改當前登錄用戶的主要組;exit返回之前的狀態;
? id:顯示真實的有效的用戶和組的ID;
? ? ?所謂真實的:就是在/etc/passwd定義的用戶的UID&GID
? ? ?所謂有效的:就是指當前生效的用戶的UID&GID
? ? ?【選項】
? ? ?-u,--user,只顯示用戶的有效的uid
? ? ?-g, 只顯示用戶的gid
? ? ?-G 顯示用戶的所有組的gid
? ? ?-n 顯示用戶和組的名字而不是id號
轉載于:https://blog.51cto.com/healerj9/1912211
總結
以上是生活随笔為你收集整理的运维基础--Linux用户和组的管理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RabbitMQ之消息确认机制(事务+C
- 下一篇: express 框架中的参数小记