轉載博文:https://blog.csdn.net/xietansheng/article/details/80044620
0、使用者、組、檔案權限 常用指令:
類型 | 舉例 |
使用者 | who, whoami, su, useradd, userdel, passwd, usermod, /etc/passwd |
組 | groupadd, groupdel, groupmod, /etc/group |
檔案 | chmod, chown, chgrp |
其他 | sudo, exit |
PS:
1、chown: 修改某個目錄或檔案的使用者名和使用者組
chown 使用者名:組名 檔案路徑
例如:chown zhanmusi:laker /usr/local/nba 就是把 /usr/local/nba的使用者名和使用者組改成了zhanmusi和laker ,修改的是上圖的 6和7
2、chmod :用來修改某個檔案或者目錄的通路權限
chmod -R 777 目錄 或者 chmod -R 777 目錄 (-R : 對目前目錄下的所有檔案與子目錄進行相同的權限變更(即以遞回的 方式逐個變更))
例如: chmod 777 /usr/local/nba 或者 chmod -R 777 /usr/local/nba 就是把目錄/usr/local/nba的權限設定為了777
3、數字表示rwx權限為:r=4,w=2,x=1 是以rwx=4+2+1=7. r-可讀權限、w-可寫權限 x-可執行權限 -- 0表示沒有權限
1. 使用者
- 已登入的使用者資訊:
who
顯示目前所有已登入到系統的使用者資訊。
參數:
-H 顯示各列的标題(表頭)。
-u 顯示閑置時間。如果使用者在前1分鐘内有操作, 顯示“.”; 超過24小時沒有操作, 顯示“old”字元串。
-m 顯示目前會話的使用者的資訊, 相當于: who am i
-q 顯示目前所有已登入的 賬戶名稱 和 總人數。
-T 顯示使用者的 狀态資訊
例子:
who // 顯示目前所有已登入的使用者
who -q // 顯示目前所有已登入的賬号名稱和總人數
who am i // 顯示目前會話的使用者的資訊
who -m // 顯示目前會話的使用者的資訊
who -uTH // 顯示目前所有已登入的使用者資訊(包括 閑置時間, 使用者狀态, 各列标題)
- 顯示目前會話的使用者的名稱:
whoami
顯示目前會話的使用者的名稱, 格式: whoami
- 切換使用者:
su
select user, 切換使用者。su 後面加上 “-” 表示切換使用者後同時把工作目錄切換到該使用者的 home 目錄。
例子:
su username // 切換到指定使用者
su - username // 切換到指定使用者, 并同時把工作目錄切換到使用者的home目錄
su // 沒有指定使用者名, 則切換到 root 使用者
su - // 切換到 root 使用者, 并把工作目錄切換到 /root
su root // 切換到 root 使用者
su - root // 切換到 root 使用者, 并把工作目錄切換到 /root
- 添加使用者:
useradd
格式: useradd [-potions] username
參數:
-d 指定建立使用者的主目錄, 如果不指定, 則系統自動在 /home 目錄建立
一個和使用者名相同的檔案夾作為建立使用者的主目錄(/home/username)
-m 自動建立主目錄檔案夾
-g 指定建立使用者所在組名稱, 如果不指定, 則系統自動建立一個和使用者名
相同的組作為建立使用者所屬組
例子:
useradd -m user01 // 建立使用者 user01, 自動建立主目錄 /home/user01, 自動建立組 user01
useradd -md /home/u2 user02 // 建立使用者 user02, 自動建立主目錄 /home/u2, 自動建立組 user02
useradd -md /home/u3 -g g3 user03 // 建立使用者 user03, 自動建立主目錄 /home/u3, 指定組為 g3(指定的組必須已存在)
注意:
新建立的使用者預設不能使用 sudo 指令, 需要另外添加該指令的權限, 實際上 sudo 是一個組的名稱,
把 組sudo 追加到使用者的附加組清單, 該使用者便能在輸入使用者自己密碼的情況下執行 sudo 指令。
例如讓使用者 user01 擁有 sudo 指令權限, 指令格式為: usermod -aG sudo user01
具體參考後面的 usermod 指令介紹。
- 删除使用者:
userdel
删除使用者時, 如果使用者所屬組是建立使用者時自動建立的和使用者名稱同名的組, 并且該組内沒有其他使用者, 則該組也會被删掉。
格式: userdel [-options] username
參數:
-f 強制删除使用者, 即使使用者目前已登入
-r 删除使用者, 同時删除使用者主目錄
例子:
userdel user01 // 删除使用者 user01, 保留使用者主目錄
userdel -r user02 // 删除使用者 user02, 并同時删除使用者主目錄
- 更改使用者密碼:
passwd
設定或修改使用者密碼, 普通使用者可以根據原密碼修改自己的密碼, 超級使用者可以直接重置所有使用者(包括 root 使用者)的密碼。 格式: passwd [-options] [username] 參數: -a all, 此選項隻能和 -S 一起使用, 來顯示所有使用者的狀态 -d delete, 删除使用者密碼(把密碼置為空) -l lock, 鎖定指定賬戶(将密碼更改為一個不可能與加密值比對的值來禁用) -u unlock, 解鎖指定賬戶 -S status, 顯示賬戶狀态資訊 例子: passwd // 更改自己的密碼, 輸入 原密碼, 新密碼, 确認新密碼 passwd user01 // 重置使用者的密碼, 輸入 新密碼, 确認新密碼 passwd -aS // 檢視所有使用者的狀态 passwd -S user01 // 檢視使用者 user01 的狀态
- 修改使用者資訊:
usermod
usermode 指令用于修改使用者的基本資訊。不允許修改正線上上的使用者的名稱, 不允許修改正在系統上執行程式的使用者的ID。 格式: usermod [-options] username 參數: -c comment, 設定帳戶注釋 -d home_dir, 設定使用者主目錄 -e expiredate, 設定帳戶過期日期 -g group, 強制修改使用者的新主組 -G groups, 修改使用者新的附加組清單 -a append group, 将使用者追加至上邊 -G 中提到的附加組中, 并不從其它組中删除此使用者 -u uid, 修改賬戶的使用者ID -l login, 設定使用者的登入名稱 -s shell, 修改使用者登入後使用的 shell -L lock, 鎖定使用者帳戶(等同于 passwd -l 指令鎖定賬戶) -U unlock, 解鎖使用者帳戶(等同于 passwd -u 指令解賬戶) 例子: usermod -g group01 user01 // 把使用者 user01 的主組修改為 group01 組 usermod -u 9999 user01 // 把使用者 user01 的 ID 修改為 9999 usermod -l u1 user01 // 把使用者 user01 的名稱修改為 u1 usermod -aG sudo user01 // 把 組sudo 添加到使用者 user01 的附加組清單, 使該使用者擁有執行 sudo 指令的權限
- 使用者賬戶資訊:
/etc/passwd
檔案 /etc/passwd 中存放了所有使用者的賬戶資訊, 每一行為一個使用者, 每個使用者的賬戶資訊分為 7 個字段, 用 “:” 分隔。
格式:
Username : Password : User ID : Group ID : Comment : Home Diretory : Login Command
使用者名 : 密碼 : 使用者ID : 組ID : 使用者注解 : 主目錄 : 登入後執行的指令
其中 密碼字段 隻顯示一個特殊字元“x”或“*”, 加密後的密碼存放在 /etc/shadow 檔案中, 隻有超級使用者才能通路。
2. 組
- 添加組:
groupadd
格式: groupadd [-options] groupname
參數:
-g 指定建立組的ID
例子:
groupadd group01 // 建立名稱為 group01 的組
groupadd -g 1001 group02 // 建立名稱為 group02 的組, 并給指定組的 ID 為 1001
- 删除組:
groupdel
删除組, 如果組内還包含有使用者, 需要想将使用者删除或移出該組後才能删除。
格式: groupdel groupname
- 改變組資訊:
groupmod
格式: groupmod [-options] groupname
參數:
-n 修改組的名稱
例子:
groupmod -n NewGroupName OldGroupName
- 檢視所有組:
/etc/group
檔案 /etc/group 中存放了所有組的資訊, 每一行表示一個組, 每個組的資訊分為 4 個字段, 用 “:” 分隔。
格式:
Group Name : Password : Group ID : User List
3. 檔案
- Linux的檔案權限用 3組 每組3位 共9位 字元表示
終端輸入指令
ls -al
檢視目前目錄下的所有檔案的權限:
-r--r--r--
-rw-------
drw-r--r--
-rw-rw-rw-
drwx------
-rwxr--r--
lrwxr-xr-x
-rwxrwxrwx
上面每行列出了10個字元,其中第1位表示檔案的類型: d表示檔案夾, l表示連結檔案, -表示檔案。
剩餘9位分為3組,每組3位,分别表示: 檔案所有者、同組使用者、其他使用者 對該檔案的權限。
每組的3位字母分别表示對該檔案的讀(r)、寫(w)、執行(x)權限,顯示字母表示有該權限,顯示-表示沒有該權限。
- 權限的數字解析
每組權限可分别由3位二進制數分别表示 r、w、x 的權限開關,1表示有該權限,0表示沒有該權限,3位二進制數轉換為十進制的一個整數即可用于表示讀、寫、執行三個權限的開關。如下案例:
// 可總結為: r=4, w=2, x=1
rwx r-x rw- ---
111 == 7 101 == 5 110 == 6 000 = 0
// 上面表示是單組權限, 使用過程中一般三組權限一起使用
rwxrwxrwx r--r--r-- rw-rw-rw- rw-r-----
111111111 == 777 100100100 == 444 110110110 == 666 110100000 == 640
PS: 上面的777, 444等權限數字, 應該 拆分解讀, 即 3位數字 分别表示 三組使用者(所有者, 同組使用者, 其他使用者)對檔案的權限。
- 修改檔案/目錄的 權限:
chmod
chmod修改檔案權限有兩種形式: 字母形式 和 數字形式
字母形式:
格式:
chmod [u/g/o/a][+/-/=][r/w/x] file/dir
參數:
u/g/o/a: 修改哪個組的權限, 分别表示 所有者(user), 所在組(group), 其他組(other), 所有(all)
+/-/=: 增加(+), 撤銷(-) 或 重置(=) 權限
r/w/x: 需要操作的權限, 讀(r)、寫(w)、執行(x)
例子:
chmod u+x aa.sh // 給檔案所有者添加執行權限
chmod a+x aa.sh // 給所有使用者添加執行權限
chmod a=rwx aa.sh // 給所有使用者添加讀寫和執行權限
chomd a= aa.sh // 撤銷所有使用者的所有權限, 相當于 a-rwx
chmod o-w aa.txt // 給其他組的使用者撤銷寫權限
chmod u=rw,g=r,o= aa.sh // 可以用逗号分隔分别給不同權限組修改權限
數字形式:
權限有3位數字組成(注意: 每一位單獨使用, 分别表示 所有者、所在組、其他組 的權限),
讀(r) = 4, 寫(w) = 2, 執行(x) = 1, 沒有(-) = 0
格式:
chmod [3位數字權限] file/dir
例子:
chmod 777 aa.sh // 給所有使用者添加讀寫和執行權限
chmod 640 aa.sh // 所有者有讀寫權限, 所在組有讀權限, 其他組沒有任何權限
- 修改檔案/目錄的 所屬組:
chgrp
修改檔案所在組(change group)
格式: chgrp [-options] group_name file/dir
參數:
-R 遞歸處理, 如果修改的是目錄, 則遞歸修改目錄下的所有檔案和子目錄
例子:
chgrp group01 aa.txt // 把檔案 aa.txt 的所在組修改為 組group01
chgrp -R group01 bbDir // 遞歸修改 目錄bbDir 的所在組為 組group01
4. 其他
- 以其他身份來執行指令:
sudo
sodu, 以其他身份來執行指令, 預設預設的身份為 root 使用者。普通使用者身份可能沒有權限執行某些指令或檢視某些
檔案/檔案夾, 此時需要切換到 root 使用者, 如此比較麻煩, 也會暴露 root 使用者密碼給更多的普通使用者, 是以可以
為使用者添加 sudo 權限(詳見上面的 usermod 指令介紹), 讓該使用者可以臨時以 root 身份來執行相關指令。
執行該指令需要輸入目前登入使用者的密碼。
格式: sudo [-options] original_commands
參數:
-H 将HOME環境變量設為新身份的HOME環境變量。
-u 以指定使用者的身份來執行指令, 預設為 root 使用者。
例子:
sudo ls /root // 以 root 身份檢視 /root 目錄
- 退出shell:
exit
退出shell, 或者退出目前登入的使用者, 并傳回給定值, 傳回0表示執行成功正常退出, 傳回非0表示執行失敗異常退出。
例子:
exit // 退出shell, 正常退出, 預設傳回0
exit 1 // 退出shell, 異常退出, 傳回給定值