1. 用戶和用戶組
了解 Linux 的權限管理首先要了解用戶和組的概念。Linux 是多用戶的操作系統,同一時間可以有多個用戶同時操作同一臺計算機。為了讓用戶和用戶之間不相互影響,必須要有一種機制來保障每一個用戶的行為不會越界對其他用戶造成不必要的影響。
所以 Linux 引入了用戶和用戶組的概念。一個用戶可以擁有多個文件和目錄, 用戶對這個文件或目錄的訪問權限擁有控制權。同時用戶可以屬于一個或者多個用戶組,用戶組中的用戶擁有同屬于這個組的對文件的訪問控制權。
Linux 會給每個用戶分配一個 uid(標識用戶) 和 gid (標識用戶組),在創建用戶的時候默認就會創建一個和用戶名同名的用戶組,我可以用id
命令來查看:
id
uid=0(root) gid=0(root) 組=0(root) 環境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
這些信息都是配置在配置文件中的,我們有必要了解這些信息在哪些配置文件中,他們主要配置在三個文件中/etc/shadow
,/etc/passwd
和/etc/group
。
用戶帳戶 定義在/etc/passwd 文件里面,用戶組定義在/etc/group 文件里面。當用戶帳戶和用戶組創建以后, 這些文件隨著文件/etc/shadow 的變動而修改,文件/etc/shadow 包含了關于用戶密碼的信息。 對于每個用戶帳號,文件/etc/passwd 定義了用戶(登錄)名、uid、gid、帳號的真實姓名、家目錄 和登錄 shell。如果你查看一下文件/etc/passwd 和文件/etc/group 的內容,你會注意到除了普通 用戶帳號之外,還有超級用戶(uid 0)帳號,和各種各樣的系統用戶。
2. 基本的用戶管理
2.1 創建一個普通用戶
添加用戶
useradd shui
設置密碼
passwd shui 按提示輸入密碼即可
這樣就會創建一個新的用戶,我們可以在/etc/group
中看到新建的默認用戶組的信息shui:x:1000:
也可以再/etc/shadow
,/etc/passwd
看到相關信息。
2.2 為用戶配置sudo權限
配置sudo權限就是將永不加入到sudoers
用戶組中,這是一個特殊的用戶組,在這個用戶組中的用戶可以通過在命令前面添加sudo
臨時獲取root
的權限。
用root編輯 vi /etc/sudoers
在文件的如下位置,為hadoop添加一行即可
root ALL=(ALL) ALL
shui ALL=(ALL) ALL
或者使用如下語句也是相同效果
echo 'shui ALL=(ALL) ALL'>> /etc/sudoers
然后,hadoop用戶就可以用sudo來執行系統級別的指令
3. 文件權限的操作
前面說過用戶具有對文件的的訪問控制權,訪問控制權具有可讀、可寫、可操作三種,我們來具體看一下
3.1 linux 文件權限的描述格式解讀
用ll
命令來看一下根目錄下的文件信息,我們復制其中的一部分:
dr-xr-xr-x. 5 root root 4096 11月 2 10:34 boot
drwxr-xr-x. 20 root root 3140 11月 2 10:36 dev
drwxr-xr-x. 74 root root 8192 11月 2 20:48 etc
drwxr-xr-x. 3 root root 18 11月 2 19:03 home
每個文件的信息大同小異,關注最前面的十個字符,他就表示文件的操作權限。
以/etc目錄的信息為例drwxr-xr-x. 74 root root 8192 11月 2 20:48 etc
第一位表示文件類型,d 表示這是一個文件夾,文件屬性還有以下內容
后面的九位分別代表用戶權限、用戶組權限和其他用戶權限
- r:表示可讀 read
- w:表示可惜 write
- x:表示可執行 excute
/etc 目錄的權限 rwxr-xr-x
就表示,root 用戶具有可讀可寫可操作的權限,文件所有者的組成員可以訪問該目錄,但是不能新建、重命名、刪除文件,其他成員可以訪問該目錄,但是不能新建、重命名、刪除文件。
4. chmod 更改權限
只有root
和文件的所有者才能更改文件的權限,更改文件的權限有兩種方式,一種是使用符號,另一種是使用八進制數字。
4.1 符號方式修改文件權限
符號即前面rwx
對應的含義,ugoa
則分別表示用戶(user)、用戶組(group)、其他人(other)和所有(all),一組示例來演示:
chmod g-rw haha.dat 表示將haha.dat對所屬組的rw權限取消
chmod o-rw haha.dat 表示將haha.dat對其他人的rw權限取消
chmod u+x haha.dat 表示將haha.dat對所屬用戶的權限增加x
4.2 八進制的方式來修改權限
一個八進制數字可以表示三個二進制數,二進制的 111 對應八進制的 7,而 111 正好可以表示 rwx 的含義,1 則代表有權限 0 則代表沒有權限。
八進制 | 二進制 | 符號 |
---|---|---|
0 | 000 | --- |
1 | 001 | —-x |
2 | 010 | -w- |
3 | 011 | -wx |
4 | 100 | r-- |
5 | 101 | r-x |
6 | 110 | rw- |
7 | 111 | rwx |
例如:
chmod 664 haha.dat
修改成 rw-rw-r--
一些人喜歡使用八進制表示法,而另一些人則非常喜歡符號表示法。符號表示法的優點是, 允許你設置文件模式的某個屬性,而不影響其他的屬性。