Linux下的用戶和用戶組,文件權限:chown和chmod


如下圖所示,root權限下新建一個用戶MasterBai, /etc/passwd文件中新加入一些信息

這個文件中,記錄了該服務器的用戶信息,如下圖紅色框起來的用戶,就是我們自己創建的用戶,而起來2-25的用戶,屬於系統用戶(在Linux中,所有的服務都必須建立在有用戶的情況下才能執行,所以這些用戶叫做Linux系統用戶)。

再來看下這些是什么意思(密碼已加密,保存在etc/shadow文件下,root權限可查看):

用戶帳號

用戶密碼

用戶ID

用戶組ID

用戶名全稱

用戶主目錄

用戶所使用的shell

MasterBai

x

1002

1010

 

/home/MasterBai

/bin/bash

這里可以看到,我們在新建一個用戶的時候,自動幫我們創建了一個相同名字的用戶組MasterBai,ID為1010

若使用-g參數,則在創建用戶的時候指定用戶組,若不需要在創建的時候指定用戶組,則使用-n參數。eg:

我們可以使用groups查看當前用戶所屬的用戶組:

既然一個用戶組下可以有多個用戶,那么反過來,我想知道某一個用戶組下的所有用戶呢?在Linux中保存用戶信息的是/etc/passwd文件,而保存用戶組信息的是/etc/group文件中,列出了所有用戶組,密碼和gid(用戶組ID)。

通過相關的gid,在用戶信息文件中查詢:比如這里查詢用戶組baihuidong,gid=1002的所有用戶:

至此我們知道,gid=1002,名叫‘baihuidong’的用戶組下,有兩個用戶:baihuidong,MasterBai2

既然一個用戶組下可以有多個用戶,那一個用戶是不是可以屬於多個用戶組呢?是可以的:

目前MasterBai這個用戶,只有一個用戶組,gid=1010,名字就叫MasterBai,我們在MasterBai用戶目錄下創建一個測試文本

可以看到它的用戶權限為MasterBai,用戶組權限為MasterBai

好,此時我們如下命令更改用戶MasterBai的gid,看一下這個文本的所有權限會發生什么變化,注意切換到root權限下:

usermod -g group_name user_name     //更改一個用戶的主用戶組(更改gid)

此時,我們發現,文件所屬的用戶組,已經變成了baihuidong了,而且用戶MasterBai的gid和groupid,都變成了1002

好,此時,MasterBai還只有一個用戶組,就是baihuidong,我們使用如下命令,給MasterBai再添加一個用戶組:

usermod -G group1,group2,group3 user_name    //給用戶增加用戶組,但是主用戶組不變。(文件的所屬用戶組也不變)

我們發現,給用戶多添加了一個用戶組之后,文件的所屬用戶組,還是baihuidong(gid=1002),而和用戶組MasterBai(gid=1010)無關。此時我們得出一個結論,一個用戶可以有多個用戶組,但只有一個gid主用戶組(groups中的對應gid),該用戶組所創建的文件所屬權,只和該用戶的gid所對應的用戶組有關。

OK,添加用戶和用戶組講完了,接下來說下,怎樣刪除用戶呢?

userdel MasterBai3                  //刪除用戶MasterBai3,在/etc/passwd中已經沒有相關信息,但是用戶的目錄文件還在。
rm -rf /home/MasterBai3               //刪除用戶MasterBai3所在/home下的目錄和文件
rm -rf /var/spool/mail/MasterBai3       //刪除用戶的系統郵箱文件,linux下添加用戶后,會在系統里自動加一個郵箱(系統郵箱),路徑是/var/spool/mail,刪除干凈的話這個文件也需要刪除掉

OK,講完一些用戶的相關基礎知識,接下來介紹一個比較常用的2個命令兄弟:chown和chmod,文件權限控制命令。相信都不陌生吧,這兩個命令,經常用在線上補丁腳本中。接下來講單獨講一下chown命令:(chmod后面再講)

這兩個命令,chown是控制哪些人有權限,chmod是控制有什么權限。哈哈哈

首先我們對Linux中的文件一些簡單介紹,在MasterBai用戶的home目錄下新建一個TestFolder,在TestFolder下新建一個Test2.txt:

d

rwxr-xr-x

2

MasterBai

baihuidong

4096

Jul

18

14:45

TestFolder

文件標識

權限

文件硬鏈接數

文件所有者

所屬用戶組

字節大小

時間

文件名

在文件標識中,d表示目錄,-表示文件(其他的類型不常見不了解)

那chown的作用,就是更改目錄或文件的所屬用戶和所屬用戶組

我現在把用戶MasterBai的主用戶組改成MasterBai(gid)

接下來我們使用chown的如下命令,讓TestFolder目錄改成用戶為MasterBai2,用戶組為baihuidong

chown user_name:group_name file_dir   //使該文件的所屬人和用戶組都改變

OK,但是我想讓TestFolder下的Test2.txt權限也一起改了呢?使用chown的如下命令,使該文件以及目錄下的所有文件和目錄的所屬人和用戶組都改變。

chown -R user_name:group_name file_dir    //更變file_dir文件或者目錄下的所有文件的所屬用戶和用戶組

如果我只想改變用戶所屬人,不想改變群組,也可以使用chown user_name file_dir 不要后面的“:group_name”來實現。

chown user_name file_dir        //更變一個目錄或者文件的所屬人

好了,chown就是這鳥用,哈哈,接下來將chmod,講chmod之前,先講下之前的文件屬性的那一大串rwxr-xr-x是什么意思:

應該不難發現,這些屬性都是由9位字母組成,Linux將其三個一組,分成三組:

這張圖應該能解釋清楚吧,好了現在開始使用chmod命令了:

比如,當前TestFolder這個目錄的權限為755,我現在要把它改成750,怎么操作呢?

切換到root權限下執行:

chmod 750 TestFolder/

使用chmod的如下命令可以使TestFolder目錄下的所有文件目錄權限都改為755:

chmod -R 755 TestFolder/

 文件加權限,減權限暫時沒有用到,以后補充。。。

最近我在有些環境下使用如下命令添加用戶的時候,在/etc/passwd文件中看到已經添加成功,但是home文件夾下沒有新添加用戶的目錄,而且命令行只有一個"$"符號,這是什么原因呢?我去查了一下useradd的參數,有些環境下,需要使用-s和-m命令,才能讓新添加的用戶有正常的命令行提示和新用戶目錄:

useradd -m -s /bin/bash MasterBai2


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM