国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Linux > 正文

Linux newgrp命令用法詳解:切換用戶的有效組

2024-08-27 23:56:55
字體:
供稿:網(wǎng)友
我們知道,每個用戶可以屬于一個初始組(用戶是這個組的初始用戶),也可以屬于多個附加組(用戶是這個組的附加用戶)。既然用戶可以屬于這么多用戶組,那么用戶在創(chuàng)建文件后,默認生效的組身份是哪個呢?

當然是初始用戶組的組身份生效,因為初始組是用戶一旦登陸就獲得的組身份。也就是說,用戶的有效組默認是初始組,因此所創(chuàng)建文件的屬組是用戶的初始組。那么,既然用戶屬于多個用戶組,能不能改變用戶的初始組呢?使用命令 newgrp 就可以。

newgrp 命令可以從用戶的附加組中選擇一個群組,作為用戶新的初始組。此命令的基本格式如下:

[root@localhost ~]# newgrp 組名


下面,我們通過一個實例,講解此命令的具體用法和功能:
  1. 首先,建立 3 個用戶組 group1、group2 和 group3,命令如下:

    [root@localhost ~]# groupadd group1
    [root@localhost ~]# groupadd group2
    [root@localhost ~]# groupadd group3

  2. 創(chuàng)建一個用戶 user1,同時指定 user1 的初始組為 group1,附加組為 group2 和 group3,執(zhí)行命令如下:

    [root@localhost ~]# useradd -g group1 -G group2,group3 user1
    #由于指定了初始組,因此不會在創(chuàng)建 user1 默認群組
    [root@localhost ~]# more /etc/group | grep user1
    group2:x:501:user1
    group3:x:502:user1

  3. 對用戶 user1 設(shè)置密碼,執(zhí)行命令如下:

    [root@localhost ~]# passwd user1
    Changing password for user user1.
    New password:
    Retype new password:
    passwd: all authentication tokens updated successfully.

  4. 切換至 user1 用戶,通過 newgrp 切換用戶組進行下列操作,讀者可從中體會出 newgrp 命令的作用。

    #切換至 user1 用戶
    [root@localhost ~]# su - user1
    [root@localhost ~]# whoami
    user1
    #使用 newgrp 命令一邊切換 user1 的初始組,一邊創(chuàng)建文件
    [root@localhost ~]# mkdir user1_doc
    [root@localhost ~]# newgrp group2
    [root@localhost ~]# mkdir user2_doc
    [root@localhost ~]# newgrp group3
    [root@localhost ~]# mkdir user3_doc
    #查看各文件的詳細信息
    [root@localhost ~]# ll
    total 12
    drwxr-xr-x 2 user1 group1 4096 Oct 24 01:18 user1_doc
    drwxr-xr-x 2 user1 group2 4096 Oct 24 01:18 user2_doc
    drwxr-xr-x 2 user1 group3 4096 Oct 24 01:19 user3_doc

可以看到,通過使用 newgrp 命令切換用戶的初始組,所創(chuàng)建的文件各自屬于不同的群組,這就是 newgrp 所發(fā)揮的作用,即通過切換附加組成為新的初始組,從而讓用戶獲得使用各個附加組的權(quán)限。

newgrp命令的底層實現(xiàn)

其實,newgrp 命令每一次切換用戶的初始組,該用戶都會以另外一個 shell(新進程,也可以說是子進程)登陸,只不過在新 shell 上登陸的該用戶,其初始組改變了而已。

以上實例中,通過添加 shell 內(nèi)置命令 "echo $$" 就可以發(fā)現(xiàn),每次使用 newgrp 命令,都會切換到一個新的進程。

在本節(jié)實例中,使用 newgrp 命令切換用戶初始組的整個過程,如圖 1 所示:

圖 1 newgrp 切換初始組程序運行過程圖
 可以看到,每一次使用 newgrp 切換用戶的初始組,用戶都會切換到一個新的子 shell 中,如圖 1 中,user1 用戶的初始組從最初的 group1,切換成了 group2,再切換成 group3。

當然,如果你想回到原本的環(huán)境,需要通過 exit 命令不斷回退到當前進程的父進程,最終才能回到初始組為 group1 時的 user1 運行的 shell 中。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 万年县| 阿尔山市| 邵武市| 定结县| 镇安县| 旌德县| 广水市| 左权县| 张掖市| 启东市| 册亨县| 汾西县| 固镇县| 潢川县| 桐柏县| 潍坊市| 阿鲁科尔沁旗| 英超| 自贡市| 天台县| 玛曲县| 上高县| 西林县| 惠安县| 汉沽区| 牙克石市| 周至县| 扎鲁特旗| 桐柏县| 新干县| 丁青县| 沙湾县| 金昌市| 府谷县| 达孜县| 应城市| 华坪县| 耿马| 阿拉善右旗| 甘洛县| 辽宁省|