日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux newgrp命令用法详解:切换用户的有效组

發布時間:2024/4/18 linux 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux newgrp命令用法详解:切换用户的有效组 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我們知道,每個用戶可以屬于一個初始組(用戶是這個組的初始用戶),也可以屬于多個附加組(用戶是這個組的附加用戶)。既然用戶可以屬于這么多用戶組,那么用戶在創建文件后,默認生效的組身份是哪個呢?

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

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

[root@localhost ~]# newgrp 組名


下面,我們通過一個實例,講解此命令的具體用法和功能:

  • 首先,建立 3 個用戶組 group1、group2 和 group3,命令如下:

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

  • 創建一個用戶 user1,同時指定 user1 的初始組為 group1,附加組為 group2 和 group3,執行命令如下:

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

  • 對用戶 user1 設置密碼,執行命令如下:

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

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

    #切換至 user1 用戶
    [root@localhost ~]# su - user1
    [root@localhost ~]# whoami
    user1
    #使用 newgrp 命令一邊切換 user1 的初始組,一邊創建文件
    [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 命令切換用戶的初始組,所創建的文件各自屬于不同的群組,這就是 newgrp 所發揮的作用,即通過切換附加組成為新的初始組,從而讓用戶獲得使用各個附加組的權限。

    newgrp命令的底層實現

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

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

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



    圖 1 newgrp 切換初始組程序運行過程圖
    ?

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

    當然,如果你想回到原本的環境,需要通過 exit 命令不斷回退到當前進程的父進程,最終才能回到初始組為 group1 時的 user1 運行的 shell 中。

    總結

    以上是生活随笔為你收集整理的Linux newgrp命令用法详解:切换用户的有效组的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。