文章目錄
- 使用者管理
-
- 配置檔案
- 建立使用者
- 檢視使用者賬号資訊
- 修改賬戶屬性
- 删除使用者
- 切換使用者
-
- bash配置檔案
- 密碼管理
- 修改使用者密碼期限
- 密碼生成工具
- 組管理
-
- 建立組
- 修改組資訊
- 删除組
- 給組設密碼
- 切換組
- 權限管理
-
- 權限的二進制十進制轉換
- 修改權限
- 遮罩碼
- 特殊權限
-
- SUID
- SGID
- Sticky
- facl
- 管理指令
使用者管理
配置檔案
字元段\配置檔案 | /etc/shadow | /etc/passwd | /etc/group |
---|---|---|---|
第一個字段 | 登入名 | 使用者名 | 組名 |
第二個字段 | 加密後的密碼 | 密碼占位符 | 組密碼 |
第三個字段 | 最近一次更改密碼的日期 | UID | GID |
第四個字段 | 密碼的最小使用期限 | GID | 以目前組為附加組的使用者清單(分隔符為逗号) |
第五個字段 | 密碼的最大使用期限 | 使用者的描述資訊 | |
第六個字段 | 密碼警告時間段 | 使用者家目錄 | |
第七個字段 | 密碼禁用期 | 使用者的登入shell | |
第八個字段 | 帳号的過期日期 | ||
第九個字段 | 保留字段 |
例:
jay : x :1000:1000: jay : /home/jay :/bin/bash
使用者名 密碼占位符 UID GID 注釋資訊 使用者家目錄 執行shell
- 每個使用者都有一個ID,就像是我們的身份證号碼,是唯一的
- root使用者的UID、GID都是0
- 使用者分為
- 系統使用者:使用者ID在1-999
- 登入使用者:使用者ID在1000-60000
建立使用者
useradd
- 文法:
[選項] 使用者名useradd
- 常用選項;
-
指定uid-u
-
指定擁護所屬基本組、組名或GID-g
-
為使用者添加附加組,附加組必須事先存在-G 組名
-
“注釋資訊” 添加注釋資訊-c
-
指定使用者的家目錄。此目錄必須不能事先存在,否則将不會從/etc/skel中複制環境設定檔案-d 目錄
-
指定登入shell-s shell
-
建立使用者時不給其建立家目錄-M
-
添加一個系統使用者-r
-
[[email protected] test]# id jay //檢視使用者jay的詳細資訊
uid=1000(jay) gid=1000(jay) 組=1000(jay)
[[email protected] test]# useradd -u 1005 -g jay -G user lili //建立使用者lili,指定uid為1005,基本組為jay組,附加組為user
[[email protected] test]# id lili
uid=1005(lili) gid=1000(jay) 組=1000(jay),1001(user)
[[email protected] test]# ls /home/
jay lili bad
[[email protected] test]# ls /opt/
rh
[[email protected] test]# useradd -d /opt/tom tom //建立使用者,指定家目錄為/opt/tom
[[email protected] test]# ls /opt/
rh tom
[[email protected] test]# id tom
uid=1006(tom) gid=1006(tom) 組=1006(tom)
[[email protected] test]# useradd -s /bin/sh lisi //建立使用者lisi指定執行shell為/bin/sh
[[email protected] test]# su - lisi
-sh-4.2$
[[email protected] test]# useradd -M -s /sbin/nologin -r jerry //建立一個系統使用者jerry不建立家目錄,指定shell不允許登入系統,
[[email protected] test]# id jerry
uid=992(jerry) gid=990(jerry) 組=990(jerry)
[[email protected] test]# ls /home/
jay lili lisi bad
[[email protected] test]# su jerry
This account is currently not available.
[[email protected] test]# vim /etc/login.defs //預設配置
- 在建立使用者時,會預設建立一個相同名的組,這個組叫私有組也叫基本組
除了基本組,使用者還可以被加到其他組,這個組叫附加組
建立了一個使用者,我們要怎麼看是否建立成功了呢?這個時候,就會用到
指令了。
id
檢視使用者賬号資訊
id
- 文法:
[選項] 參數id
- 常用選項:
-
檢視UID-u
-
檢視GID-g
-
檢視Groups-G
-
[[email protected] test]# id -u jerry
992
[[email protected] test]# id -g jerry
990
[[email protected] test]# id -G jerry
990
修改賬戶屬性
usermod
- 文法:
[選項] 使用者名usermod
- 常用選項:
-
修改uid-u
-
修改gid-g
-
添加附加組,不使用-a選項,會覆寫此前的附加組-a -G
-
改變使用者家目錄的同時把原來家目錄的檔案移動到新的家目錄中-d -m
-
指明使用者帳号過期日期-e YYYY-MM-DD
-
設定非活動期限-f INACTIVE
-
鎖定帳号。被鎖定的帳号在/etc/shadow檔案中密碼前面會有一個感歎号-L
-
解鎖帳号-U
-
[[email protected] test]# id bad //檢視使用者詳細資訊
uid=1001(bad) gid=1001(user) 組=1001(user)
[[email protected] test]# usermod -u 1005 bad //修改uid為1005
[[email protected] test]# id bad
uid=1005(bad) gid=1001(user) 組=1001(user)
[[email protected] test]# usermod -g 1000 bad //修改gid為1000
[[email protected] test]# id bad
uid=1005(bad) gid=1000(jay) 組=1000(jay)
[[email protected] test]# usermod -G user bad //添加附加組為user
[[email protected] test]# id bad
uid=1005(bad) gid=1000(jay) 組=1000(jay),1001(user)
[[email protected] test]# groupadd a //建立新組為a
[[email protected] test]# usermod -G a bad //給使用者bad指定附加組a
[[email protected] test]# id bad
uid=1005(bad) gid=1000(jay) 組=1000(jay),1002(a)
[[email protected] test]# usermod -aG user bad //再原附加組的基礎上添加附加組
[[email protected] test]# id bad
uid=1005(bad) gid=1000(jay) 組=1000(jay),1001(user),1002(a)
[[email protected] ~]# tail -3 /etc/passwd //檢視密碼配置檔案
tcpdump:x:72:72::/:/sbin/nologin
jay:x:1000:1000:jay:/home/jay:/bin/bash
bad:x:1005:1000::/home/bad:/bin/bash
[[email protected] ~]# usermod -c "hello bad" bad //為使用者bad添加注釋資訊
[[email protected] ~]# tail -3 /etc/passwd
tcpdump:x:72:72::/:/sbin/nologin
jay:x:1000:1000:jay:/home/jay:/bin/bash
bad:x:1005:1000:hello bad:/home/bad:/bin/bash
删除使用者
userdel
- 文法:
[選項] 使用者名userdel
- 選項:
-
删除使用者的同時删除其家目錄-r
-
[[email protected] test]# ls /home/ //檢視家目錄下的目錄裡
jay lili lisi bad
[[email protected] test]# userdel -r lili //删除使用者,并删除家目錄
[[email protected] test]# ls /home/
jay lisi bad
如果我們在删除使用者的時候,沒有删除其家目錄,那麼在 /home
目錄下,還是依舊會看到我們建立的使用者的目錄。可以将目錄删除,或者重建立一個同名的使用者,重新删除使用者。
切換使用者
su
切換使用者的方式 | 特點 |
---|---|
su 使用者名 | 非登入式切換,即不會讀取目标使用者的配置檔案 |
su - 使用者名 | 登入式切換,即會讀取目标使用者的配置檔案。完全切換 |
su - | 不指定使用者時預設切換至root使用者 |
[[email protected] test]# su - jay //切換jay使用者,并切換到jay的家目錄
上一次登入:日 10月 20 15:45:30 CST 2019:0 上
[[email protected] ~]$ pwd //檢視目前位置
/home/jay
[[email protected] ~]$ exit
登出
[[email protected] test]# su jay //切換使用者,不切換目錄
[[email protected] test]$ pwd
/root/test
[[email protected] test]$ su - //不指定使用者預設為root使用者
密碼:
上一次登入:四 11月 7 00:40:36 CST 2019pts/0 上
[[email protected] ~]# whoami //檢視目前登入使用者
root
- 文法:
su - 使用者名 -c '指令'
- 切換身份執行指令,指令執行結束後又回到原來的身份
[[email protected] ~]# su - bad -c 'touch abc'
[[email protected] ~]# ll /home/bad/
總用量 0
-rw-r--r--. 1 bad jay 0 11月 7 14:07 abc
root使用者切換至其他使用者時,是不需要密碼的。但是其他的使用者想要切換别的使用者,需要輸入切換的使用者的密碼
sudo
- 配置檔案:/etc/sudoers
- 文法:sudo 選項 指令
- 選項:
-
顯示版本編号-V
-
會顯示版本編号及指令的使用方式說明-h
-
列出目前使用者可以使用的所有sudo類指令-l
-
在第一次執行時或是在N分鐘内沒有執行(N預設為5)會問密碼-v
-
使認證資訊失效,如果不指定-k,預設認證資訊在5分鐘後失效-k
-
将要執行的指令放在背景執行-b
-
使用者名 //以指定的使用者名執行指令,預設為root-u
-
bash配置檔案
配置檔案類型 | 配置檔案路徑 |
---|---|
全局配置 | /etc/profile、/etc/profile.d/*.sh、/etc/bashrc |
個人配置 | ~/.bash_profile、~/.bashrc |
配置檔案類型 | 功能 |
---|---|
profile類 | 為互動式登入的shell提供配置,用來設定環境變量、運作指令或腳本 |
bashrc | 為非互動式登入的shell提供配置,用來設定本地變量、定義指令别名 |
在RHCE的考試中,為了保險起見,通常會寫一個腳本,以保證我們所做的服務配置,能夠在機器重新開機之後挂載成功。而這個腳本需要執行就會放在全局配置檔案中,以及指令别名都會涉及到這裡。
密碼管理
passwd
- 文法:
[選項] usernamepasswd
- 選項:
-
從标準輸入擷取使用者密碼--stdin
-
鎖定使用者-l
-
解鎖使用者-u
-
删除使用者密碼-d
-
指定最短使用期限-n mindays
-
指定最長使用期限-x mandays
-
提前多少天開始警告-w warndays
-
非活動期限,密碼過期後到禁用前的這段時間-i inactivedays
-
這裡沒有舉例,可以自己練習,可以在 /etc/shadow
中檢視修改的使用者的詳細資訊
修改使用者密碼期限
chage
- 用于修改使用者密碼過期資訊的指令
- 文法:
[選項] usernamechage
- 選項:
-
最近一次的修改時間-d
-
過期時間-E
-
非活動時間-I
-
最短使用期限-m
-
最長使用期限-M
-
警告時間-W
-
這條指令我用到過的比較少,但是工作應該用的會多一點。
密碼生成工具
openssl
-
密碼生成工具openssl
- 文法:
command [ command_opts ] [ command_args ]openssl
- 選項:
-
包含标準指令、消息摘要指令、加密指令command
-
檢視程式版本号version
-
提取特征碼dgst
-
生成密碼passwd
-
生成僞随機數rand
-
//提取特征碼
[[email protected] ~]# openssl dgst -md5 /etc/fstab
MD5(/etc/fstab)= a977cc5e638d779ed880f3fee6d7067e
//生成密碼 openssl passwd -1 -salt string //string一般為8位
[[email protected] ~]# openssl passwd -1 -salt hellotom
Password:
$1$hellotom$HpEDmPGqWwhP/eHg0kJHA0
//生成随機數 openssl rand -base64 NUM
//NUM表示随機數的長度
[[email protected] ~]# openssl rand -base64 20
S/q8tjUSBuUNHb+0cgDX66dbvTQ=
組管理
建立組
groupadd
- 文法:
[選項] groupnamegroupadd
- 選項:
-
指定GID-g GID
-
添加一個系統組-r
-
修改組資訊
groupmod
- 文法:
[選項] groupnamegroupmod
- 選項:
-
指定GID-g GID
-
修改組名-n groupname
-
删除組
groupdel
- 文法:
groupnamegroupdel
給組設密碼
gpasswd
- 文法:
[選項] groupgpasswd
- 選項:
-
将使用者添加至組-a username
-
将使用者從組中删除-d username
-
删除組密碼-r -passwd
-
切換組
newgrp
- 文法:
groepnamenewgrp
這條指令我幾乎沒有用過。當你以以一個非root的使用者登入,可以使用這條指令臨時切換到新的基本組,但是需要輸入要切換的基本組的密碼。使用 exit
就可以退出新的基本組,回到目前使用者原本的基本組。
權限管理
那權限怎麼看呢?其實很簡單,在使用
ll
指令的時候,是不是發現檔案顯示一大串?那麼最前面的一列就是。第一個字元表示檔案類型,之後的九位就表示權限。
- 首先我們要知道,檔案的權限主要針對的對象
-
(owner)屬主,即檔案擁有者u
-
(group)數組,即檔案擁有的組g
-
(other)其他使用者,即除檔案擁有者及擁有者所屬組之外的所有使用者o
-
- 每個檔案或者目錄都有三種權限
-
可讀r
-
可寫w
-
可執行x
-
注意!在RHCSA的題目中,有涉及到設定權限的題,其中有一個坑就是要你給目錄可讀的權限。因為是個目錄,如果可讀,那麼就一定有執行權限,因為你要進入到目錄中去才可以檢視目錄中的内容。
權限的二進制十進制轉換
- 不要慌,進行進制轉換,是為了幫助我們更好的了解權限
權限 | 二進制 | 十進制 |
---|---|---|
— | 000 | |
–x | 001 | 1 |
-w- | 010 | 2 |
-wx | 011 | 3 |
r– | 100 | 4 |
r-x | 101 | 5 |
rw- | 110 | 6 |
rwx | 111 | 7 |
- 權限通常有兩種表達方式,一種是用字母
來表示,還有一種就是用十進制數來表示rwx
不要看着這麼多就慌了,記不住怎麼辦?我在剛開始學的時候,權限完全是懵逼的,但是隻要你了解了,也就很簡單。無非就讀寫執行,421。數字表示就是自由組合了。
修改權限
chmod
- 即change modify,修改
- 文法:
[選項] 檔案或目錄chmod
- 選項:
-
遞歸修改權限,修改目錄及目錄中的檔案權限時需要-R
-
chown
- 即change owner,修改屬主,也可以修改屬組
- 文法:
//修改屬主chown 使用者名 檔案名
- 文法:
//修改屬主和屬組,中間有點chown 使用者名.組名 檔案名
- 選項:
-
遞歸修改權限-R
-
在RHCSA中,會有一道題是需要修改檔案的屬主和屬組的。
chgrp
- 文法:
[選項] 組名 檔案名chown
- 選項:
-
遞歸修改-R
-
這條指令我們一般使用的少,一般都是直接使用的 chown
。
遮罩碼
- 這個其實就是将檔案的權限進行一個隐藏,能更安全
- 有個變量叫umask,預設值為0022
- 檔案最終權限是:666-umask
-
目錄最終權限是:777-umask
檔案預設是不能具有執行權限的,如果算得結果有執行權限,則将其權限整體+1
特殊權限
SUID
- 針對可執行的程式檔案
- 程式啟動的程序的屬主是程式檔案自身的屬主,不是啟動者為屬主
-
檔案chmod u+s
-
檔案chmod u-s
-
檔案chmod 4755
-
- 程式啟動的程序的屬主是程式檔案自身的屬主,不是啟動者為屬主
如果檔案本身擁有執行權限,則顯示SUID為s,否則為S
SGID
- 針對目錄
- 使用者建立檔案時,屬組為此使用者所屬的基本組
-
目錄chmod g+s
-
目錄chmod g-s
-
目錄chmod 2755
-
- 使用者建立檔案時,屬組為此使用者所屬的基本組
如果目錄本身擁有執行權限,則顯示SGID為s,否則為S
Sticky
- 針對目錄
- 在一個公共目錄,每個人都能建立檔案,删除自己的檔案,但是不能删除别人建立的檔案
-
目錄chmod o+t
-
目錄chmod o-t
-
目錄chmod 1755
-
- 在一個公共目錄,每個人都能建立檔案,删除自己的檔案,但是不能删除别人建立的檔案
如果目錄本身擁有執行權限,則顯示Sticky為t,否則為T
後面兩種權限在RHCSA中都會有相關的題目,需要掌握。
一般不會使用7755權限
facl
- Filesystem Access Control List,檔案系統通路控制清單
- 文法:
[選項] 文法 檔案名setfacl
-
設定-m
-
u:使用者名:權限
-
g:組名:權限
-
-
取消特殊權限-x
-
u:使用者名
-
g:組名
-
-
Remove all 即清除所有特殊權限-b
-
- 如果要為某個目錄設定預設的通路控制清單,則設定時在u或g前面加上d
- setfacl -m d:u:test:rw 檔案名
設定特殊權限也是RHCSA中必考的題目,需要多練習。
管理指令
-
顯示目前系統登入使用者,以及在做什麼w
-
睡眠sleep
- sleep 數字
-
秒,預設s
-
分m
-
小時h
-
天d
-
- sleep 數字
寫腳本為防止上一個指令沒執行完下一指令就開始執行時可以加上sleep表示停頓#秒後再執行後面的指令
-
顯示/var/log/wtmp檔案,顯示使用者登入曆史及系統重新開機曆史last
-
顯示最近#次的相關資訊-n #
-
-
顯示/var/log/btmp檔案,顯示使用者錯誤的登入嘗試lastb
-
顯示最近#次的相關資訊-n #
-
-
顯示每個使用者最近一次成功登入資訊lastlog
-
使用者名 //顯示特定使用者最近的登入資訊-u
-
-
//顯示路徑基名basename
[[email protected] test]# ls
abc test
[[email protected] test]# ll abc
-rw-r--r--. 1 root root 0 11月 9 10:00 abc
[[email protected] test]# chown jay abc
[[email protected] test]# ll
總用量 0
-rw-r--r--. 1 jay root 0 11月 9 10:00 abc
drw-------. 2 root root 6 11月 9 09:32 test
[[email protected] test]# chown .jay abc
[[email protected] test]# ll abc
-rw-r--r--. 1 jay jay 0 11月 9 10:00 abc
[[email protected] test]# chown root.root
chown: "root.root" 後缺少操作數
Try 'chown --help' for more information.
[[email protected] test]# chown root.root abc
以上内容均屬原創,如有不詳或錯誤,敬請指出。
本文作者: 壞壞 本文連結: https://blog.csdn.net/qq_45668124/article/details/104567687
版權聲明:本部落格所有文章除特别聲明外,均采用 CC BY-NC-SA 4.0 許可協定。轉載請注明出處!