一、Linux用戶管理
1、用戶概念以及基本作用
用戶:指的是Linux操作系統中用于管理系統或者服務的人
一問:管理系統到底在管理什么?
答:Linux下一切皆文件,所以用戶管理的是相應的文件
二問:如何管理文件呢?
答:
- 文件基本管理,比如文件的創建、刪除、復制、查找、打包壓縮等;文件的權限增加、減少等;
- 文件高級管理,比如程序文件的安裝、卸載、配置等。終極目的是對外提供穩定的服務。
2、用戶的類別
① root超級管理員,在Linux系統中擁有至高無上的權力。
② 系統用戶,CentOS6=> 1 ~ 499,CentOS7=> 1 ~ 999,系統賬號默認不允許登錄
# useradd -s /sbin/nologin 系統用戶
③ 普通用戶,大部分是由root管理員創建的,UID的取值范圍:CentOS6=> 500 ~ 60000,CentOS7=> 1000 ~ 60000,對系統進行有限的管理維護操作
總結
① 用戶指的是操作系統上管理系統或服務的人,是人,就有相關的屬性信息
② 用戶的屬性信息包括但不限于,如:==家目錄、唯一身份標識(UID)、所屬組(GID)==等
③ 今天我們討論的用戶指的是普通用戶,即由管理員創建的用戶
3、用戶管理
與用戶管理相關的幾個單詞 => user(用戶)、add(添加)、mod(修改)、del(刪除)
① 用戶添加 useradd
② 用戶修改 usermod
③ 用戶刪除 userdel
☆ useradd用戶添加
基本語法:
# useradd [選項 選項的值] 新用戶名稱
-u 指定用戶uid,唯一標識,必須唯一
-g 指定用戶的默認組(主組)
-G 指定用戶附加組(一個用戶可以加入多個組,但是默認組只有一個)
-d 指定用戶家目錄(每個用戶都有一個自己的家,并且默認在/home/xxx)
-s 指定用戶默認shell,常見/bin/bash或/sbin/nologin擴展:
-r 指定用戶為系統用戶,如創建一個系統賬號mysql
案例:在Linux系統中創建一個賬號zhangsan
# useradd zhangsan
問題:一個用戶創建成功后,如何判斷是否添加到系統?
答:第一種方案我們可以通過tail命令查看/etc/passwd文件
第二種方案我們可以使用id命令查看zhangsan信息
案例:在Linux系統中創建一個賬號lisi,指定用戶的家目錄為/rhome/lisi
# mkdir /rhome
# useradd -d /rhome/lisi lisi
當我們為用戶自定義家目錄時,其上級目錄必須是真實存在的,如/rhome
案例:在Linux系統中創建一個mysql賬號,要求真實存在的,但是其不允許登錄操作系統
# useradd -s /sbin/nologin mysql
案例:在Linux系統中創建一個mysql系統賬號,要求真實存在,但是不允許登錄操作系統
# userdel -r mysql
# useradd -r -s /sbin/nologin mysql
☆ 與用戶相關的文件
Linux中一切皆文件,所以保存用戶的信息的也是一個文件 => /etc/passwd
# vim /etc/passwd
root:x:0:0:root:/root:/bin/bash第1列:用戶名稱
第2列:用戶密碼,使用一個x占位符,真實密碼存儲在/etc/shadow文件中
第3列:用戶的編號UID,0,1-999,1000 ~ 60000
第4列:用戶的主組編號GID
第5列:用戶的備注信息(擴展,可以使用-c進行指定) useradd -c "mysql" mysql
第6列:用戶的家目錄,/root,超級管理員的家/home,普通賬號的家
第7列:用戶的Shell文件,常見/bin/bash或/sbin/nologin=>/bin/false
☆ usermod用戶修改
基本語法:
# usermod [選項 選項的值] 用戶名稱
-u 指定用戶uid,唯一標識,必須唯一
-g 指定用戶的默認組(主組)
-G 指定用戶附加組(一個用戶可以加入多個組,但是默認組只有一個)
-d 指定用戶家目錄(每個用戶都有一個自己的家,并且默認在/home/xxx)
-s 指定用戶默認shell
案例:修改zhangsan賬號的主組為itheima組(只能指定一個)
① 可以獲取itheima組的編號信息GID
② 使用usermod -g GID編號修改某個用戶的主組信息
其實在usermod修改用戶的主組中,usermod -g 可以使用GID編號也可以使用組名稱
# cat /etc/group |grep itheima
# usermod -g 1000 zhangsan
或
# usermod -g itheima zhangsan
案例:修改lisi賬號的附加組,將其添加到itheima中
# usermod -G 1000 lisi
或
# usermod -G itheima lisi
案例:創建一個itcast組,在創建一個wangwu的賬號,修改wangwu的附加組為itcast與itheima
# groupadd itcast
# useradd wangwu
# usermod -G itcast,itheima wangwu
問題:如果一個用戶同時擁有多個附屬組,怎么查看呢?
答:使用id命令即可
案例:修改用戶zhangsan的家目錄為/rhome/zhangsan(默認/home/zhangsan)
# mkdir /rhome/zhangsan
# usermod -d /rhome/zhangsan zhangsan
# su - zhangsan
-bash-4.2$
出現以上問題的主要原因在于:我們遷移用戶的家目錄時,沒有遷移家目錄中的配置文件"家具"解決方案:
① 家目錄已經遷移,我們把/etc/skel中的文件,copy到新家中
# cp -a /etc/skel/. /rhome/zhangsan/
選項說明:
-a :all所有,復制時,保留文件的原有屬性
② 家目錄還沒有遷移,準備遷移時,使用usermod -md /rhome/zhangsan 用戶名
-m :move,遷移家目錄時,把"家具"一起遷移到新的家目錄
# usermod -md /rhome/zhangsan zhangsan
注:要求/rhome/zhangsan必須是真實存在的!
案例:當我們創建了某個賬號,但是不希望這個賬號登錄操作系統
# usermod -s /sbin/nologin 用戶名稱
☆ userdel用戶的刪除
# userdel [選項] 用戶名稱
選項說明:
-r :刪除用戶的同時,刪除用戶的家目錄
-f :強制刪除用戶(即使用戶處于登錄狀態)
案例:刪除zhangsan這個賬號
# userdel zhangsan
案例:刪除zhangsan這個賬號,同時刪除這個賬號的家
# userdel -r zhangsan
案例:刪除某個正在使用的賬號(強制刪除)
# userdel -f zhangsan
4、用戶密碼
☆ passwd修改用戶密碼
# passwd [用戶名稱]說明:
1.管理員root可以給任何用戶修改密碼
2.普通用戶可以自己給自己修改密碼,但是密碼復雜度要符合規范(大小寫、特殊字符、長度)
案例:使用root賬號給itheima用戶修改密碼,新密碼為123456
# su - root
# passwd itheima
Changing password for user itheima.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
案例:切換到itheima這個賬號,自己給自己修改密碼(密碼規范)
# su - itheima
# passwd
Changing password for user itheima.
Changing password for itheima.
(current) UNIX password:
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
☆ --stdin修改用戶密碼
–stdin :標準輸入
# echo 123 |passwd --stdin itheima
# history -c => 清除history歷史記錄
注意:以上方式操作非常簡單,但是以上命令會留在history歷史命令中!
5、chage更改用戶的賬號信息
背景:很多公司運維工程師剛入職,都會默認得到一個服務器的管理賬號,密碼默認,如123456,我們有沒有辦法讓運維工程師在第一次登陸操作系統后,強制要求其更新密碼。
# chage --help
-l:列出用戶的詳細密碼狀態;
-d 日期:修改 /etc/shadow 文件中指定用戶密碼信息的第3個字段,也就是最后一次修改密碼的日期,格式為 YYYY-MM-DD;
-m 天數:修改密碼最短保留的天數,也就是 /etc/shadow 文件中的第4個字段;
注:幾天后才能修改一次密碼
-M 天數:修改密碼的有效期,也就是 /etc/shadow 文件中的第5個字段;
注:每隔多少天更新一次密碼
-W 天數:修改密碼到期前的警告天數,也就是 /etc/shadow 文件中的第6個字段;
-i 天數:修改密碼過期后的寬限天數,也就是 /etc/shadow 文件中的第7個字段;
注:過期后還可以使用的天數,達到這個天數后,賬號失效-E 日期:修改賬號失效日期,格式為 YYYY-MM-DD,也就是 /etc/shadow 文件中的第8個字段;
案例:新創建一個賬號lamp,設置初始化密碼為123456。要求用戶第一次登陸后必須強制修改用戶的密碼。
解決思路:把密碼的最后修改時間重置為0(回到1970年1月1日)
# useradd lamp
# echo 123456 |passwd --stdin lamp# chage -d 0 lamp
運行效果:
案例:設置lamp賬號的過期時間為2010-04-10
# chage -E "2020-04-10" lamp
案例:設置lamp賬號的10天后過期(延伸)
# chage -E $(date +%F -d '+10 days') lamp
%F:YYYY-mm-dd,格式2020-04-01
-d:多少天以后的日期
案例:設置mysql用戶60天后密碼過期,至少7天后才能修改密碼,密碼過期前7天開始收到告警信息
# useradd mysql
# echo 123456 |passwd --stdin mysql# chage -M 60 -m 7 -W 7 mysql
☆ 練習題:
創建3個普通用戶stu1~stu3,要求如下:
- stu1默認創建,密碼為123
- stu2的家目錄為/rhome/redhat/stu2,密碼為123
- stu3用戶不能登錄操作系統,密碼為123
6、用戶組管理
☆ 用戶和組的關系
核心:組的目的是為了方便管理用戶
- 用戶是操作系統上管理維護系統或服務的人
- 組是用戶的一個屬性信息
- 任何一個用戶默認都會有一個主組(默認組)
- 一個用戶除了主組也可以有多個其他組(附加組)
一問:用戶的主組和附加組到底有啥關系呢?
答:用戶的主組和附加組半毛錢關系都木有
二問:那要這個主組或者附加組有啥用呢?
答:肯定是有用的,組的目的是方便管理用戶,用戶的目的是管理操作文件,文件就有權限這個屬性。
- 用戶要操作一些文件,文件是由用戶創建,不同用戶創建的文件的屬性信息也就不一樣
- 文件的屬性都有啥呢?比如,文件的創建者,文件屬于哪個組,文件大小,文件時間等
- 其中,不同用戶所創建的文件的屬組就是該用戶的主組(默認組)
- A用戶附加組也有可能是其他用戶的主組,道理同上(權限章節再細細體會組的作用)
☆ 用戶組管理
group組,添加add,修改mod,刪除del
groupadd 添加用戶組
groupmod 修改用戶組
groupdel 刪除用戶組
☆ 添加用戶組
# groupadd [選項 選項的值] 用戶組名稱
選項說明:
-g :創建用戶組時指定用戶組編號GID,0代表超級管理員root組,1-999代表系統用戶組,1000以后代表普通用戶組
案例:在系統中創建一個admin組
# groupadd admin
案例:在系統中創建一個itcast組,并指定用戶組的編號為1200
# groupadd -g 1200 itcast
問題:用戶組創建完成后,如何判斷是否創建成功?
# tail -1 /etc/group
☆ 與用戶組相關的文件
在Linux系統中,與用戶組相關的文件 => /etc/group
# vim /etc/group
root:x:0:
第1列:代表用戶組的組名稱
第2列:代表用戶組的組密碼,使用一個x占位符(基本已經不使用了)
第3列:代表用戶的組ID編號GID的值
第4列:代表用戶組內的用戶信息
☆ 修改用戶組
# groupmod [選項 選項的值] 用戶組名稱
選項說明:
-g :gid縮寫,代表修改用戶所屬組的ID編號
-n :name縮寫,代表修改用戶組的名稱
案例:更改itcast用戶的GID編號(從1200 => 1005)
# groupmod -g 1005 itcast
☆ 刪除用戶組
# groupdel 用戶組的名稱
注意:在Linux操作系統中,如果想刪除某個用戶組,必須要保證這個組不能是某個用戶的主組。
案例:刪除itcast用戶組
# groupdel itcast
案例:刪除admin用戶組
# groupdel admin
7、附屬組管理
基本語法:
# gpasswd [選項 選項的值] 用戶組的名稱
-a :添加用戶到組,append追加
-d :從組中刪除成員,delete移除
-A :指定管理員,Admin管理員
-M :指定組成員,可以批量添加用戶到組中問題解析:-a與-M到底有啥區別?
-a一次只能追加一個用戶到附屬組中(-a,append,追加的形式,原有用戶不覆蓋)
-M一次可以追加多個用戶到附屬組中(覆蓋追加,先把原有用戶刪除,然后添加我們的用戶)
案例:創建3個用戶user01~user03,將user01添加到sysadmin組里(附屬組)
# useradd user01
# useradd user02
# useradd user03
# groupadd sysadmin① 方案1
# usermod -G sysadmin user01
② 方案2
# gpasswd -a user01 sysadmin
案例:把user02、user03添加到sysadmin組中
① 方案1
# gpasswd -a user02 sysadmin
# gpasswd -a user03 sysadmin② 方案2
# gpasswd -M user02,user03 sysadmin
案例:從附屬組中移除某個賬號
# gpasswd -d 移除的用戶名稱 附屬組名稱# gpasswd -d user03 sysadmin
Removing user user03 from group sysadmin
二、文件權限管理
1、什么是權限
權限:在計算機系統中,權限是指某個計算機用戶具有使用軟件資源的權利。
2、權限的目的
文件權限的設置目的:是想讓某個用戶有權利操作文件
3、權限的分類
- 普通權限rwx
用戶正常情況去操作文件所具有的權限 - 高級權限st
用戶對某個文件操作有特殊需求,而普通權限不能滿足,需要給文件設置高級權限 - 默認權限umask
用戶在系統中創建一個文件,該文件默認都會有一個權限,該權限是默認有的
注意:
權限是設置在文件上的,而不是用戶
4、普通權限rwx(重點)
☆ read讀權限
- 針對目錄
一個目錄擁有r權限,說明可以查看該目錄里的內容(ls命令列出) - 針對普通文件
一個普通文件擁有r權限,說明可以查看該文件的內容(cat/head/tail/less/more等命令查看) - 讀權限r(read)用數字表示是4
☆ write寫權限
- 針對目錄
一個目錄擁有w權限,說明可以在該目錄里創建、刪除、重命名等操作(mkdir/touch/mv/rm等) - 針對普通文件
一個普通文件擁有w權限,說明可以修改該文件的內容(vi/vim編輯器編輯文件) - 寫權限w(write)用數字表示是2
☆ execute執行權限
- 針對目錄
一個目錄擁有x權限,說明可以進入或切換到該目錄里(cd命令) - 針對普通文件
一個普通文件擁有x權限,說明可以執行該文件(一般程序文件、腳本文件、命令都需要執行權限) - 執行權限x(execute)用數字表示是1
rwx = 讀寫執行 = 4 + 2 + 1
☆ -沒有權限
沒有任何權限用橫杠==-表示,數字表示是0==
5、理解UGO
UGO,指的是用戶身份,每個字母代表不同的用戶身份。
- U(the user who owns it)
文件的擁有者(owner)或者創建者 - G(other users in the file’s group)
在文件的所屬組(默認是創建文件的用戶的主組)里的用戶 - O(other users not in the file’s group)
既不是文件的創建者,也不在文件屬組里的用戶,稱為其他人
注意:
除了上面ugo以外,還有一個字母==a==(all users),表示==所有用戶==,包含ugo
6、查看文件的權限
# ls -l 文件名稱
或
# ll 文件名稱
注:如果查看一個文件夾的權限,建議使用-d