Linux用戶與用戶組

用戶與用戶組

Linux系統是一個多用戶多任務的操做系統.php

用戶的帳號一方面能夠幫助系統管理員對使用系統的用戶進行跟蹤,並控制他們對系統資源的訪問;另外一方面也能夠幫助用戶組織文件,併爲用戶提供安全性保護。linux

每一個用戶帳號都擁有一個惟一的用戶名和各自的密碼。shell

用戶在登陸時鍵入正確的用戶名和密碼後,就可以進入系統和本身的主目錄。ubuntu

要想實現用戶帳號的管理:vim

  • 用戶帳號的添加、刪除、修改以及用戶密碼的管理。
  • 用戶組的管理。

注意三個文件:centos

  • /etc/passwd 存儲用戶的關鍵信息
  • /etc/group 存儲用戶組的關鍵信息
  • /etc/shadow 存儲用戶的密碼信息

用戶管理

命令 做用 說明
useradd -m -g 組 新建用戶名 添加新用戶 -m 自動創建用戶家目錄 -g 指定用戶所在的組,不然會創建一個和同名的組
passwd 用戶名 設置用戶密碼 若是是普通用戶,直接用 passwd 能夠修改本身的帳戶密碼
userdel -r 用戶名 刪除用戶 -r 選項會自動刪除用戶家目錄
cat /etc/passwd | grep 用戶名 確認用戶信息 新建用戶後,用戶信息會保存在 /etc/passwd 文件中

1. 添加用戶

useradd 選項 用戶名
複製代碼

經常使用選項:數組

  • -g:表示指定用戶的用戶主(主要)組,選項的值能夠是用戶組的id,也能夠是組名
  • -G:表示指定用戶的用戶附加(額外)組,選項的值能夠是用戶組的id,也能夠是組名
  • -u:uid,用戶的id(用戶的標識符),系統默認會從500以後按順序分配uid,若是不想使用系統分配的,能夠經過該選項自定義
  • -c:comment,添加註釋(選擇是否添加)
  • -s:指定用戶登入後所使用的shell 解釋器 【專門的接待員】
  • -d:指定用戶登入時的啓始目錄(家目錄位置)
  • -n:取消創建以用戶名稱爲名的羣組(瞭解)

示例:建立用戶zhangsan,不帶任何選項安全

useradd zhangsan
複製代碼

驗證是否成功:bash

  1. 驗證/etc/passwd的最後一行,查看是否有zhangsan的信息app

    Last login: Sat Jun  8 22:28:50 2019 from 49.92.240.220
    root@toby:~# useradd zhangsan
    root@toby:~# useradd zhangsan
    useradd: user 'zhangsan' already exists
    root@toby:~# tail -1 /etc/passwd
    zhangsan:x:1000:1000::/home/zhangsan:
    root@toby:~#
    複製代碼
  2. 驗證是否存在家目錄(在Centos下建立好用戶以後隨之產生一個同名家目錄);

認識passwd文件

man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-timesync:x:100:102:systemd Time Synchronization,,,:/run/systemd:/bin/false
systemd-network:x:101:103:systemd Network Management,,,:/run/systemd/netif:/bin/false
systemd-resolve:x:102:104:systemd Resolver,,,:/run/systemd/resolve:/bin/false
systemd-bus-proxy:x:103:105:systemd Bus Proxy,,,:/run/systemd:/bin/false
syslog:x:104:108::/home/syslog:/bin/false
_apt:x:105:65534::/nonexistent:/bin/false
messagebus:x:106:110::/var/run/dbus:/bin/false
uuidd:x:107:111::/run/uuidd:/bin/false
ntp:x:108:114::/home/ntp:/bin/false
複製代碼

上圖中依次順序爲

用戶名:密碼:用戶ID:用戶組ID:註釋:家目錄:解釋器shell

  • 用戶名:建立新用戶名稱,後期登陸的時候須要輸入;
  • 密碼:此密碼位置通常狀況都是「x」,表示密碼的佔位;
  • UID(用戶標識):用戶的識別符;【-u】
  • GID(用戶組標識):該用戶所屬的主組ID;【-g】
  • 註釋:解釋該用戶是作什麼用的;【-c】
  • 家目錄:用戶登陸進入系統以後默認的位置;【-d】
  • 解釋器shell:等待用戶進入系統以後,用戶輸入指令以後,該解釋器會收集用戶輸入的指令,傳遞給內核處理;【若是解釋器是/bin/bash表示用戶能夠登陸到系統,/sbin/nologin表示該用戶不能登陸到系統】【-s】

注意:

在不添加選項的時候,執行useradd以後會執行一系列的操做

  • 建立同名的家目錄;
  • 建立同名的用戶組;

示例:添加選項,建立用戶lisi,讓lisi屬於501主組,自選靚號666,而且要求不能登陸到系統,能夠寫註釋爲「user lisi」。

root@toby:/home# useradd -g 1000 -u 666 -s /sbin/nologin -c "user lisi" lisi
root@toby:/home# tail -1 /etc/passwd
lisi:x:666:1000:user lisi:/home/lisi:/sbin/nologin
root@toby:/home#
複製代碼

注意:

linux123行的含義:

在linux123的組裏(組id是500)有一個組內用戶lisi(lisi的附加組就是500,附加組的名字是linux123)。
若是須要爲一個用戶指定多個附加組,只須要將多個附件組的id經過英文逗號「,」分割便可。
【主組只能有1個,附加組能夠多個,也能夠沒有附加組
【主組必須有】
【文檔的屬組指的是主組】
複製代碼

2. 修改用戶

  • usermod 能夠用來設置 用戶主組附加組登陸 Shell,命令格式以下:
  • 主組:一般在新建用戶時指定,在 etc/passwd 的第 4GID 對應的組
  • 附加組:在 etc/group 中最後一列表示該組的用戶列表,用於指定 用戶的附加權限

提示:設置了用戶的附加組以後,須要從新登陸才能生效!

usermod 選項 用戶名
# 修改用戶的主組(passwd 中的 GID)
usermod -g 組 用戶名

# 修改用戶的附加組
usermod -G 組 用戶名

# 修改用戶登陸 Shell
usermod -s /bin/bash 用戶名
複製代碼

Usermod:user modify,用戶修改

經常使用選項:

選項 含義
-g 表示指定用戶的用戶主組,選項的值能夠是用戶組的id,也能夠是組名
-G 表示指定用戶的用戶附加組,選項的值能夠是用戶組的id,也能夠是組名
-u uid,用戶的id(用戶的標識符),系統默認會從500以後按順序分配uid,若是不想使用系統分配的,能夠經過該選項自定義
-l 修改用戶名
-c<備註> 修改用戶賬號的備註文字
-d<登入目錄> 修改用戶登入時的目錄
-s 修改用戶登入後所使用的shell
示例:修改zhangsan用戶主組爲500,附加組改成501
usermod -g 500 -G 501 zhangsan
複製代碼
示例:修改zhangsan用戶用戶名,改成wangerma
usermod -l wangerma zhangsan 這裏的豎槓是 英文字母 l 
複製代碼

注意:默認使用 useradd 添加的用戶是沒有權限使用 sudoroot 身份執行命令的,可使用如下命令,將用戶添加到 sudo 附加組中

usermod -G sudo 用戶名
複製代碼

設置密碼

Linux不容許沒有密碼的用戶登陸到系統,所以前面建立的用戶目前都處於鎖定狀態,須要設置密碼以後才能登陸計算機。

passwd [用戶名]	【若是不指定用戶名則修改本身的密碼】
複製代碼

示例:設置wangerma用戶的密碼

passwd wangerma
複製代碼

注意:

這裏能夠先寫要修改的用戶, 中間插入選項和值

設置密碼以後shadow文件中的體現:可以看出lisi用戶沒有密碼的。

sshd:*:17616:0:99999:7:::
zhangsan:$6$Z7HX/.94$F78gf4VkGCSPADb/aA4lFhWwOYXyLuG.LWHjX7D.d4684d/oXIouzwoE0TvIX.JkjlgV4KLdisjvm1hf19vEJ/:18056:0:99999:7:::
lisi:!:18055:0:99999:7:::
複製代碼

在設置用戶密碼以後能夠登陸賬號,例如此處須要登陸zhangsan

which

提示

/etc/passwd 是用於保存用戶信息的文件 /usr/bin/passwd 是用於修改用戶密碼的程序

which 命令能夠查看執行命令所在位置,例如:

which ls

# 輸出
# /bin/ls

which useradd

# 輸出
# /usr/sbin/useradd
複製代碼

bin 和 sbin

  • Linux 中,絕大多數可執行文件都是保存在 /bin/sbin/usr/bin/usr/sbin
  • /binbinary)是二進制執行文件目錄,主要用於具體應用
  • /sbinsystem binary)是系統管理員專用的二進制代碼存放目錄,主要用於系統管理
  • /usr/binuser commands for applications)後期安裝的一些軟件
  • /usr/sbinsuper user commands for applications)超級用戶的一些管理程序

提示:

cd 這個終端命令是內置在系統內核中的,沒有獨立的文件,所以用 which 沒法找到 cd 命令的位置

切換用戶

序號 命令 做用 說明
01 su - 用戶名 切換用戶,而且切換目錄 - 能夠切換到用戶家目錄,不然保持位置不變
02 exit 退出當前登陸帳戶
  • su 不接用戶名,能夠切換到 root,可是不推薦使用,由於不安全
  • exit 快捷鍵爲 control+d 示意圖以下:

su [用戶名](switch user)
複製代碼

若是用戶名不指定則表示切換到root用戶

root@toby:~# su zhangsan
zhangsan@toby:/root$
zhangsan@toby:/root$ su
Password:
root@toby:~#
複製代碼

切換用戶須要注意的事項:

  1. 從root往普通用戶切換不須要密碼,可是反之則須要root密碼;
  2. 切換用戶以後先後的工做路徑是不變的;
  3. 普通用戶沒有辦法訪問root用戶家目錄,可是反之則能夠;

刪除用戶

用戶刪除

userdel 選項 用戶名
複製代碼

經常使用選項:

  • -r:表示刪除用戶的同時,刪除其家目錄;

示例:刪除zhangsan用戶

root@toby:~# userdel -r zhangsan
userdel: user zhangsan is currently used by process 22089
root@toby:~# ps -ef | grep 22089
zhangsan 22089 22088  0 20:51 pts/0    00:00:00 bash
root     22092 22089  0 20:51 pts/0    00:00:00 su
root     22115 22093  0 20:57 pts/0    00:00:00 grep --color=auto 22089
root@toby:~# su zhangsan
# 這裏使用control+d 會自動退出
zhangsan@toby:/root$ exit
複製代碼

解決辦法:

簡單粗暴,kill對應用戶的所有進程

提示:

全部跟用戶操做的命令(除passwd外,只能修改本身的密碼,即不指定用戶名)只有root超級管理員有權限執行。

備註:

也能夠在登陸須要刪除的用戶以後,按下快捷鍵ctrl+d進行對當前用戶的註銷,隨後退回到上一個用戶(root)此時就能夠對須要刪除的用戶進行刪除操做。

用戶組的管理

每一個用戶都有一個用戶組,系統能夠對一個用戶組中的全部用戶進行集中管理。不一樣Linux 系統對用戶組的規定有所不一樣,如Linux下的用戶屬於與它同名的用戶組,這個用戶組在建立用戶時同時建立。

用戶組的管理涉及用戶組的添加、刪除和修改。組的增長、刪除和修改實際上就是對 /etc/group 文件的更新。

root@toby:~# cat /etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
uucp:x:10:
man:x:12:
proxy:x:13:
kmem:x:15:
dialout:x:20:
fax:x:21:
voice:x:22:
cdrom:x:24:
floppy:x:25:
tape:x:26:
sudo:x:27:
audio:x:29:
dip:x:30:
www-data:x:33:
backup:x:34:
operator:x:37:
list:x:38:
irc:x:39:
src:x:40:
gnats:x:41:
shadow:x:42:
utmp:x:43:
video:x:44:
sasl:x:45:
plugdev:x:46:
staff:x:50:
games:x:60:
users:x:100:
nogroup:x:65534:
systemd-journal:x:101:
systemd-timesync:x:102:
systemd-network:x:103:
systemd-resolve:x:104:
systemd-bus-proxy:x:105:
input:x:106:
crontab:x:107:
syslog:x:108:
netdev:x:109:
messagebus:x:110:
uuidd:x:111:
mlocate:x:112:
ssh:x:113:
ntp:x:114:
lpadmin:x:115:
stapdev:x:116:
stapusr:x:117:
stapsys:x:118:
root@toby:~#
複製代碼

上面內容的文件結構:

用戶組名:密碼:用戶組ID:組內用戶名

密碼:X表示佔位符,雖然用戶組能夠設置密碼,可是絕大部分的狀況下不設置密碼; 組內用戶名:表示附加組是該組的用戶名稱;

1. 用戶組添加

groupadd 選項 用戶組名
複製代碼

經常使用選項:

  • -g:相似用戶添加里的「-u」,-g表示選擇本身設置一個自定義的用戶組ID數字,若是本身不指定,則默認從500以後遞增;

示例:使用groupadd指令建立一個新的用戶組,命名爲admins

#groupadd admins
root@toby:~# cat /etc/group
...
admins:x:1001:
root@toby:~#
複製代碼

2. 用戶組編輯

groupmod 選項 用戶組名
複製代碼

經常使用選項:

  • -g:相似用戶修改裏的「-u」,-g表示選擇本身設置一個自定義的用戶組ID數字
  • -n:相似於用戶修改「-l」,表示設置新的用戶組的名稱

案例:修改admins用戶組,將組ID改爲520,將名稱改成admin123

root@toby:~# groupmod -g 520 -n admingroup admins
root@toby:~# cat /etc/group
...
admingroup:x:520:
root@toby:~#
複製代碼

3. 用戶組刪除

groupdel 用戶組名
複製代碼

案例:刪除admingroup組

groupdel admingroup
複製代碼

注意:

當若是須要刪除一個組,可是這個組是某個用戶的主組時,則不容許刪除(附加組是能夠的);若是確實須要刪除,則先從組內移出全部用戶。

提示:

針對用戶和用戶組的管理指令,除了passwd指令以外,其餘指令通常狀況下只有root用戶能夠執行。

權限管理

1. 權限介紹

在Linux中分別有讀、寫、執行權限:

  • 讀權限

    • 對於文件夾來講,讀權限影響用戶是否可以列出目錄結構
    • 對於文件來講,讀權限影響用戶是否能夠查看文件內容
  • 寫權限

    • 對文件夾來講,寫權限影響用戶是否能夠在文件夾下「建立/刪除/複製到/移動到」文檔.
    • 對於文件來講,寫權限影響用戶是否能夠編輯文件內容
  • 執行權限:通常都是對於文件來講,特別腳本文件。

    • 對於文件來講,執行權限影響文件是否能夠運行。
    • 對於文件夾來講,執行權限影響對應的用戶是否能夠在文件夾內執行指令。

2. 身份介紹

  • Root用戶(超級用戶)

    • 在Linux中,還有一個神同樣存在的用戶,這就是root用戶,由於在全部用戶中它擁有最大的權限 ,因此管理着普通用戶。所以之後在設置文檔的權限的時候沒必要考慮root用戶。
  • Owner身份(文檔全部者,默認爲文檔的建立者)

    • 因爲Linux是多用戶、多任務的操做系統,所以可能經常有多人同時在某臺主機上工做,但每一個人都可在主機上設置文件的權限,讓其成爲我的的「私密文件」,即我的全部者。由於設置了適當的文件權限,除本人(文件全部者)以外的用戶沒法查看文件內容。
  • Group身份(與文件全部者同組的用戶)

    • 與文件全部者同組最有用的功能就體如今多個團隊在同一臺主機上開發資源的時候。例如主機上有A、B兩個團體(用戶組),A中有a1,a2,a3三個成員,B中有b1,b2兩個成員,這兩個團體要共同完成一份報告F。因爲設置了適當的權限,A、B團體中的成員都能互相修改對方的數據,可是團體C的成員則不能修改F的內容,甚至連查看的權限都沒有。同時,團體的成員也能設置本身的私密文件,讓團隊的其它成員也讀取不了文件數據。在Linux中,每一個帳戶支持多個用戶組。如用戶a一、b1便可屬於A用戶組,也能屬於B用戶組【主組和附加組】。
  • Others身份(其餘人,相對於全部者與同組用戶)

    • 這個是個相對概念。打個比方,大明、二明、小明一家三兄弟住在一間房,房產證上的登記者是大明(owner全部者),那麼,大明一家就是一個用戶組,這個組有大明、二明、小明三個成員;另外有我的叫張三,和他們三沒有關係,那麼這個張三就是其餘人(others)了。 同時,大明、二明、小明有各自的房間,三者雖然能自由進出各自的房間,可是小明不能讓大明看到本身的情書、日記等,這就是文件全部者(用戶)的意義。

3. Linux的權限查看

要設置權限,就須要知道文件的一些基本屬性和權限的分配規則。在Linux中,ls命令經常使用來查看文檔的屬性,用於顯示文件的文件名和相關屬性。

#ls -l 路徑 【ls -l 等價於 ll】
複製代碼
root@toby:~# ll /
total 92
drwxr-xr-x 22 root root  4096 Jun  3 16:38 ./
drwxr-xr-x 22 root root  4096 Jun  3 16:38 ../
drwxr-xr-x  2 root root  4096 Apr  8  2018 bin/
drwxr-xr-x  3 root root  4096 Apr  8  2018 boot/
drwxr-xr-x 19 root root  3740 Jun  3 16:38 dev/
drwxr-xr-x 88 root root  4096 Jun  9 21:23 etc/
drwxr-xr-x  2 root root  4096 Apr 13  2016 home/
lrwxrwxrwx  1 root root    33 Mar 26  2018 initrd.img -> boot/initrd.img-4.4.0-117-generic
lrwxrwxrwx  1 root root    33 Mar 26  2018 initrd.img.old -> boot/initrd.img-4.4.0-116-generic
drwxr-xr-x 20 root root  4096 Mar 26  2018 lib/
drwxr-xr-x  2 root root  4096 Mar 26  2018 lib64/
drwx------  2 root root 16384 Mar 26  2018 lost+found/
drwxr-xr-x  4 root root  4096 Mar 26  2018 media/
drwxr-xr-x  2 root root  4096 Aug  1  2017 mnt/
drwxr-xr-x  2 root root  4096 Aug  1  2017 opt/
dr-xr-xr-x 96 root root     0 Jun  3 16:38 proc/
drwx------  7 root root  4096 Jun  8 23:08 root/
drwxr-xr-x 19 root root   640 Jun  9 21:06 run/
drwxr-xr-x  2 root root 12288 Apr  8  2018 sbin/
drwxr-xr-x  2 root root  4096 Aug  1  2017 srv/
dr-xr-xr-x 13 root root     0 Jun  3 16:50 sys/
drwxrwxrwt  7 root root  4096 Jun  9 22:17 tmp/
drwxr-xr-x 10 root root  4096 Mar 26  2018 usr/
drwxr-xr-x 11 root root  4096 Mar 26  2018 var/
lrwxrwxrwx  1 root root    30 Mar 26  2018 vmlinuz -> boot/vmlinuz-4.4.0-117-generic
lrwxrwxrwx  1 root root    30 Mar 26  2018 vmlinuz.old -> boot/vmlinuz-4.4.0-116-generic
root@toby:~#
複製代碼

上圖標紅的部分就是Linux的文檔權限屬性信息。

Linux中存在用戶(owner)、用戶組(group)和其餘人(others)概念,各自有不一樣的權限,對於一個文檔來講,其權限具體分配以下:

十位字符表示含義:

  • 第1位:表示文檔類型,取值常見的有「d表示文件夾」、「-表示文件」、「l表示軟鏈接」、「s表示套接字」、「c表示字符設備」、「b表示塊狀設備」等等;
  • 第2-4位:表示文檔全部者的權限狀況,第2位表示讀權限的狀況,取值有r、-;第3位表示寫權限的狀況,w表示可寫,-表示不可寫,第4位表示執行權限的狀況,取值有x、-。
  • 第5-7位:表示與全部者同在一個組的用戶的權限狀況,第5位表示讀權限的狀況,取值有r、-;第6位表示寫權限的狀況,w表示可寫,-表示不可寫,第7位表示執行權限的狀況,取值有x、-。
  • 第8-10位:表示除了上面的前2部分的用戶以外的其餘用戶的權限狀況,第8位表示讀權限的狀況,取值有r、-;第9位表示寫權限的狀況,w表示可寫,-表示不可寫,第10位表示執行權限的狀況,取值有x、-

注意:

除了權限位上的rwx以及-以外,還有一些特殊的權限代碼「s」、「t」,這些不在本次考慮範圍內。(黏貼位,特殊權限位)

權限分配中,均是rwx的三個參數組合,且位置順序不會變化。沒有對應權限就用 代替。

4. 權限設置

chmod [選項] 權限模式 文檔路徑
複製代碼

經常使用選項:

  • -R:遞歸設置權限 (當文檔類型爲文件夾的時候)

權限模式:

  • 就是該文檔須要設置的權限信息

文檔:

  • 能夠是文件,也能夠是文件夾,能夠是相對路徑也能夠是絕對路徑。

注意點:

若是想要給文檔設置權限,操做者要麼是root用戶,要麼就是文檔的全部者。

4.1 字母形式設置

給誰設置:

  • u:表示全部者身份owner(user)
  • g:表示給全部者同組用戶設置(group)
  • o:表示others,給其餘用戶設置權限
  • a:表示all,給全部人(包含ugo部分)設置權限 若是在設置權限的時候不指定給誰設置,則默認給全部用戶設置

什麼權限-權限字符:

  • r:讀
  • w:寫
  • x:表示執行
  • -:表示沒有權限

如何設置-權限分配方式:

  • +:表示給具體的用戶新增權限(相對當前)
  • -:表示刪除用戶的權限(相對當前)
  • =:表示將權限設置成具體的值(注重結果)【賦值】

設置多個身份的權限時候,每一個身份之間須要經過英文逗號分開。

例如:
須要給/root/anaconda-ks.cfg文件(-rw-------.)設置權限,要求全部者擁有所有的權限,同組用戶擁有讀和寫權限,其餘用戶只讀權限。

答案:
	#chmod u+x,g+rw,o+r /root/anaconda-ks.cfg
	或者:
	#chmod u=rwx,g=rw,o=r /root/anaconda-ks.cfg
複製代碼

提示:

當文檔擁有執行權限(任意部分),則其顏色在終端中是綠色。

#chmod ug=rwx 形式,若是有兩部分權限同樣則能夠合在一塊兒寫的
等價於:
	#chmod u=rwx,g=rwx
複製代碼
例如:若是anaconda-ks.cfg文件什麼權限都沒有,可使用root用戶設置全部的人都有執行權限,則能夠寫成
什麼權限都沒有應該是:----------
目標的效果:---x--x--x
#chmod a=x anaconda-ks.cfg
#chmod a+x anaconda-ks.cfg
#chmod u+x,g+x,o+x anaconda-ks.cfg
#chmod ugo=x anaconda-ks.cfg
#chmod ugo+x anaconda-ks.cfg
#chmod +x anaconda-ks.cfg
複製代碼
案例:
設置文件「~/php/php.txt」權限,要求全部者所有權限,同組用戶擁有讀權限、寫權限,其餘人擁有讀權限
#chmod u=rwx,g=rw,o=r ~/php/php.txt

更改要求:
全部者所有權限,同組用戶擁有讀權限、寫權限,其餘人擁有讀權限、寫權限
#chmod o+w ~/php/php.txt
複製代碼
練習:
1. 設置文件夾/tmp/php的權限(若是文件夾不存在,自行建立),要求權限爲遞歸權限,而且全部者有所有權限,同組用戶有讀執行權限,其餘用戶只讀權限;
#mkdir /tmp/php
#chmod -R u=rwx,g=rx,o=r /tmp/php
2. 設置文件/tmp/php/class.sh權限,文件若是不存在則自行建立,要求權限爲全部者所有權限,同組用戶讀和執行權限,其餘用戶沒有權限;
#touch /tmp/php/class.sh
#chmod u=rwx,g=rx,o=--- /tmp/php/class.sh
3. 使用普通用戶在/tmp/php目錄下建立test目錄,設置目錄權限爲全部者擁有所有權限,同組用戶只讀,其餘用戶只讀;(建立不了test用戶)
複製代碼

4.2 數字的形式

常常會在一些技術性的網頁上看到相似於#chmod 777 a.txt 這樣的一個權限,這種形式稱之爲數字形式權限(777)。

權限 表明字母 數字值
r 4
w 2
執行 x 1

沒有任何權限-0

注意:

組合權限數字的時候遵循,最短路徑要求,而且最多隻能出現一次。

例如:
須要給anaconda-ks.cfg設置權限,權限要求全部者擁有所有權限,同組用戶擁有讀執行權限,其餘用戶只讀。

分析:
	全部者(第1位):所有權限 = 讀 + 寫 + 執行 = 4 + 2 + 1 = 7
	同組用戶(第2位):讀執行 = 讀 + 執行 = 4 + 1 = 5
	其餘用戶(第3位):讀 = 4

組合: 754

最終得出的結果是754
#chmod 754 anaconda-ks.cfg
複製代碼
例題: 
用超級管理員設置文檔的權限命令是#chmod -R 731 aaa,請問這個命令有沒有什麼不合理的地方?
全部者 = 7 = 4 + 2 + 1 = 讀 + 寫 + 執行
同組用戶 = 3 = 2 + 1 = 寫 + 執行
其餘用戶 = 1 = 執行
問題在權限731中3表示寫+執行權限,可是寫又沒必要鬚鬚要能打開以後才能夠寫,所以必須須要具有讀權限,所以權限不合理。之後建議各位在設置權限的時候不要設置這種「奇葩權限」。
複製代碼

注意:

在寫權限的時候千萬不要設置相似於上面的這種奇葩權限。若是一個權限數字中但凡出現2與3的數字,則該權限有不合理的狀況。

4.3 注意事項

是否能夠刪除文件屬於文件夾的權限

擴展:
在Linux系統中,建立文檔的權限有一個默認值,以當前的系統爲例,其建立文件夾以後的默認權限是755,建立文件以後的權限是644。

之因此會這樣是受到了系統中umask(掩碼)的值的影響,其是用於指定文檔建立好以後的權限,umask默認爲022。

計算方式:
    對於文件:文件的權限 = 666 – umask掩碼
	對於文件夾:文件夾的權限 = 777 - umask掩碼
複製代碼

爲何文件是666不是777呢? 由於文件包含了可執行文件. linux系統處於安全的考慮. 默認建立的文件是不給執行的權限x的.

5. 屬主與屬組

  • 屬主:所屬的用戶(文件的主人),文檔全部者
  • 屬組:所屬的用戶組(同組用戶的組名稱)

這兩項信息在文檔建立的時候會使用建立者的信息(用戶名、用戶所屬的主組名稱)。

之因此須要設置這個:若是有時候去刪除某個用戶,則該用戶對應的文檔的屬主和屬組信息就須要去修改(相似離職以前的工做交接)。

5.1 chown

更改文檔的所屬用戶(change owner)

chown  [-R]  新的username 文檔路徑
複製代碼

注意:

修改全部者的人必須是root或者全部者本身,其餘人無權修改全部者。

5.二、chgrp

更改文檔的所屬用戶組(change group)

chgrp  [-R]  groupname  文檔的路徑
複製代碼
案例:將剛纔oo目錄的全部用戶組名改成admin
#chgrp -R admin /oo
複製代碼
思考? 如何經過一個命令實現既能夠更改所屬的用戶,也能夠修改所屬的用戶組呢?

答:能夠實現的,經過chown命令
	語法:#chown [-R] username:groupname 文檔路徑
複製代碼

6. sudo

問題? reboot、shutdown、init、halt,在普通用戶身份上都是操做不了,可是有些特殊的狀況下又須要有執行權限。又不可能讓root用戶把本身的密碼告訴普通用戶,這個問題該怎麼解決?

該問題是能夠被解決的,可使用sudo(switch user do)命令來進行權限設置。Sudo可讓管理員(root)事先定義某些特殊命令誰能夠執行。
複製代碼

默認sudo中是沒有除root以外用戶的規則,要想使用則先配置sudo。

Sudo配置文件:/etc/sudoers 該文件默認只讀,不容許修改,所以不能直接修改。

  1. 配置sudo文件請使用visudo,打開以後其使用方法和vim一致
  2. 配置普通用戶的權限

上圖的98行說明:

  • Root表示用戶名,若是是用戶組,則能夠寫成「%組名」
  • ALL:表示容許登陸的主機(地址白名單)
  • (ALL):表示以誰的身份執行,ALL表示root身份
  • ALL:表示當前用戶能夠執行的命令,多個命令可使用「,」分割
案例:使用admin這個用戶,賦予其添加用戶權限。
注意:在寫sudo規則的時候不建議寫直接形式的命令,而是寫命令的完整路徑。
路徑可使用which(whereis亦可)命令來查看 
語法:#which 指令名稱
Whereis會找出一些非可執行文件,建議使用which
複製代碼
root@toby:~# which useradd
/usr/sbin/useradd
root@toby:~# whereis useradd
useradd: /usr/sbin/useradd /usr/share/man/man8/useradd.8.gz
root@toby:~#
複製代碼

因此whereis指令返回的內容比較多, 咱們使用which指令便可

若是須要更多的命令, 後面的用,分隔便可

在添加好對應的規則以後就能夠切換用戶,切換到普通用戶admin,再去執行:

此時要想使用剛纔的規則,則以如下命令進行:

sudo 須要執行的指令(就是放權的指令名稱)
複製代碼

此時輸入的密碼是當前執行sudo指令的用戶的密碼,而非root密碼。

在輸入sudo指令以後須要輸入當前的用戶密碼進行確認的操做(不是root用戶密碼),輸入以後在接下來5分鐘內再次執行sudo指令不須要密碼。

補充:

在普通用戶下怎麼查看本身具備哪些特殊權限呢?

sudo  -l	表示list
複製代碼

最後:sudo不是任何Linux分支都有的命令,常見centos與ubuntu都存在sudo命令。

相關文章
相關標籤/搜索