linux存储群组名称的文件是,群组管理(分组,群组密码,身份切换,常见问题)- 系统管理 -Deepin深度系统用户手册...
群組介紹
Linux中為了使用戶共享文件或者其他資源方便,引入了群組的功能:
Linux中每一個用戶屬于一個群組(group),而每一個群組(group)都有一個group標示符,即GID. 所有群組和對應的gid都存放在根目錄的/etc/group中
Linux系統在創建每一個用戶時就為每一個用戶創建了了一個同名的群組,并將這個用戶加入到該群組中,也就是說至少每個用戶都有一個同名的群組,當然也可以加入到其他群組中。加入到其他群組是為了獲取適當的權限來訪問特定的資源。
如果一個文件屬于一個群組,則這個群組的所有用戶都能存取這個文件。
/etc/group
群組信息保存在/etc/group中,控制用戶如何分組。它的格式如下:
groupname:password:gid:members
/etc/group文件信息存儲結構,包括4個字段用:隔開依次為:第一個字段的是組名:是群組的名稱,由字母或數字構成。與/etc/passwd中的登錄名一樣,組名不應重復
第二個字段的是口令:字段存放的是群組加密后的口令字。一般Linux系統的群組都沒有口令,即這個字段一般為空,或者是x
第三個字段的是組標識號:即GID
第四個字段的是組內用戶列表:每個用戶之間用,號分割;本字段可以為空;如果字段為空表示群組為GID的用戶名
下面是組文件的部分內容:
more /etc/group
root:x:0:
daemon:x:1:
...
第一個字段root和daemon,表示有root和daemon兩個群
第二個字段x,表示root群組和daemon群組的群組密碼,已經加密
第三個字段0和1,表示root群組的GID為0,daemon群組GID為1
第四個字段空,表示有root和daemon兩個群組
/etc/gshadow
Linux群組密碼存放在/etc/gshadow文件中,只有在特權用戶才能訪問。在linux中一般很少用到群組密碼。
/etc/gshadow文件信息存儲結構,包括4個字段用:隔開依次為:
第一個字段就是這個群的名字
第二個字段的x表示這個群組在登錄這個群組的密碼
第三個字段是群組的gid
第四個字段是這個群組中還有哪些成員
舉例說明:顯示本機群組,終端執行(只截取兩段):
more /etc/group
root:x:0:
adm:x:4:cxbii
第一個字段root和adm,表示有root和adm兩個群
第二個字段x,表示root群組和adm群組的群組密碼,已經加密
第三個字段0和4,表示root群組的GID為0,adm群組GID為4
第四個字段為空和cxbii,表示root群組的沒有成員, adm群組有cxbii一個用戶
群組管理
添加群組
groupadd命令可以添加群組
語法:groupadd [-g gid [-o]] [-r] [-f] group
參數:
-g gid group’s ID 值 .除非使用
-o 參數不然該值必須是唯一, 不可相同.數值不可為負。預設為最小不得小于500而逐次增加。 0~999 傳統上是保留給系統帳號使用。
-r 此 參數是用來建立系統帳號。的 UID 會比定義在系統檔上/etc/login.defs. 的 UID_MIN 來的小.注意 useradd 此法所建立的帳號不會建立使用者目錄,也不會在乎紀錄在 /etc/login.defs. 的定義值 . 如果你想要有使用者目錄須額外指定。
-m 參數來建立系統帳號。 這是 RED HAT 額外增設的選項。它會自動幫你選定一個小于999 的 gif 不需要 再加上
-g 參數。這是RED HAT 額外增設的選項。
-f 新增一個已經存在的群組帳號,系統會出現錯誤訊息然后結束groupadd .如果是這樣的情況,不會新增這個群組(如果 是這個情況下,系統不會再新增一次)也可同時加上
-g 選項當你加上一個gid,此時 gid 就不用是唯一值,可不加 -o 參數,建好群組后會顯結果
舉例使用: sudo groupadd cjh ##建立cjh群組 sudo groupadd cjh #3建立cjh群組,并且在/etc/passwd文件中產生一個組ID(GID)是344的項目。
刪除群組
groupdel命令可以刪除群組
sudo groupdel group cjh
##刪除cjh群組
設置群組密碼
gpasswd命令可以設置群組密碼:
sudo gpasswd group_name
取消組密碼
使用gpasswd命令可以取消群組密碼:
sudo gpasswd -r group_name
:取消密組碼后,只有成員才可以通過newgrp命令切換入該組。
修改組成員
gpasswd命令可以修改向指定群組的用戶:
語法:gpasswd[-a user][-d user][-A user,...][-M user,...][-r][-R]groupname
參數:
-a:添加用戶到組
-d:從組刪除用戶
-A:指定管理員
-M:指定組成員和
-A的用途差不多
-r:刪除密碼
-R:限制用戶登入組,只有組中的成員才可以用newgrp加入該組
增加群組用戶
sudo gpasswd -a cxbii root
##把cxbii加入rooot群組
刪除組成員
sudo gpasswd -d cxbii root
##把cxbii移出rooot群組
身份切換
擁有可以毀滅自身這樣強大權限的用戶只有root用戶一位,但是由于root用戶權限過大,直接使用root用戶登陸系統操作是很危險的事情,但是部分事情只有root權限能做,那么就涉及到了身份切換.與身份切換相關的有兩個命令:su和sudo.
:除非您知道您在做什么,否則請不要輕易嘗試以下命令,以下命令不一定保證您操作的安全性,也不能在您發生危險動作時進行及時阻止,可能導致不可挽回的損失!
su
su:(Switch user 切換用戶),可讓一個普通用戶切換為超級用戶或其他用戶,并可臨時擁有所切換用戶的權限,切換時需輸入欲切換用戶的密碼;也可以讓超級用戶切換為普通用戶,臨時以低權限身份處理事務,切換時無需輸入欲切換用戶的密碼。
使用方式:
su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]]
說明:變更為其他使用者的身份,除 root 外,需要鍵入該使用者的密碼
參數:
-f 或 --fast 不必讀啟動檔(如 csh.cshrc 等),僅用于 csh 或 tcsh
-m -p 或 --preserve-environment 執行 su 時不改變環境變數
-c command 或 --command=command 變更為帳號為 USER 的使用者并執行指令(command)后再變回原來使用者
-s shell 或 --shell=shell 指定要執行的 shell (bash csh tcsh 等),預設值為 /etc/passwd 內的該使用者(USER) shell
-help 顯示說明文件
-
-version 顯示版本資訊
-
-l 或 --login 這個參數加了之后,就好像是重新 login 為該使用者一樣,大部份環境變數(HOME SHELL USER等等)都是以該使用者(USER)為主,并且工作目錄也會改變,如果沒有指定 USER ,內定是 root
USER 欲變更的使用者帳號
ARG 傳入新的 shell 參數
范例:
su [用戶名]
1.在root用戶下, 輸入 su 普通用戶. 則切換至普通用戶, 從root切換到變通用戶不需要密碼
2.在普通用戶下, 輸入 su [用戶名] su -c ls root #變更帳號為 root 并在執行 ls 指令后退出變回原使用者。 su root -f #變更帳號為 root 并傳入 -f 參數給新執行的 shell。 su - clsung #變更帳號為 clsung 并改變工作目錄至 clsung 的家目錄(home dir)。
su命令和su -命令最大的本質區別就是:前者只是切換了root身份,但Shell環境仍然是普通用戶的Shell;而后者連用戶和Shell環境一起切換成root身份了。
優缺點
優點:靈活的解決了身份切換問題.
缺點:su切換到特定用戶需要特定用戶的密碼,例如切換到root下,如果10個用戶需要切換到root,那么這10個用戶都需要知道root的密碼,那么將會增加root密碼泄露的可能,并且這10個用戶中有一個用戶出現失誤,將可能對系統造成不可挽回的災難!
sudo
sudo是linux下常用的允許普通用戶使用超級用戶或者其它用戶權限的工具。 sudo 對于控制和審計root用戶的訪問權限是極其有益的。它使得系統管理員可以將root用戶的系統管理任務分配給其他人,而無需給予他們root口令。管理員也可以根據每個用戶實際所需的root訪問權限來定制系統訪問權限,從而達到權限最小化的目標
命令格式如下:
sudo -K | -L | -V | -h | -k | -l | -vsudo [-HPSb] [-a auth_type] [-c
class|-] [-p prompt] [-u username|#uid] {-e file [...] | -i | -s | command}
下面我們再來看一下sudo其它常用的一些參數:
選項 含義 作用
sudo -h Help 列出使用方法,退出。
sudo -V Version 顯示版本信息,并退出。
sudo -l List 列出當前用戶可以執行的命令。只有在sudoers里的用戶才能使用該選項。
sudo -u username|#uid User 以指定用戶的身份執行命令。后面的用戶是除root以外的,可以是用戶名,也可以是#uid。
sudo -k Kill 清除“入場卷”上的時間,下次再使用sudo時要再輸入密碼。
sudo -K Sure kill 與-k類似,但是它還要撕毀“入場卷”,也就是刪除時間戳文件。
sudo -b command Background 在后臺執行指定的命令。
sudo -p prompt command Prompt 可以更改詢問密碼的提示語,其中%u會代換為使用者帳號名稱,%h會顯示主機名稱。非常人性化的設計。
sudo -e file Edit 不是執行命令,而是修改文件,相當于命令sudoedit。
還有一些不常用的參數,在手冊頁sudo(8)中可以找到。
優缺點
優點:解決了身份切換的問題,同時避免root賬戶密碼的泄露.
缺點:提權具有5分鐘時效,即上一個命令完成后,5分鐘內沒有執行其他需要root權限的任務,需要重新提權.
/etc/sudoers
sudo的配置文件默認存放在/etc/sudoers下,sudo都提供了一個編輯該文件的命令:visudo來對該文件進行修改。
強烈推薦使用該命令修改sudoers,因為它會幫你校驗文件配置是否正確,如果不正確,在保存退出時就會提示你哪段配置出錯的。
首先寫sudoers的缺省配置:
# sudoers file.
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the sudoers man page for the details on how to write a sudoers file.
#
# Host alias specificATIon
# User alias specificATIon
# Cmnd alias specification
# Defaults specification
# User privilege specification
root ALL=(ALL) ALL
# Uncomment to allow people in group wheel to run all commands
#?%wheel ALL=(ALL) ALL
# Same thing without a password
#?%wheel ALL=(ALL) NOPASSWD: ALL
# Samples
#?%users ALL=/sbin/mount /cdrom,/sbin/umount /cdrom
#?%users localhost=/sbin/shutdown -h now
最簡單的配置,讓普通用戶support具有root的所有權限 執行visudo之后,可以看見缺省只有一條配置: root ALL=(ALL) ALL 那么你就在下邊再加一條配置: support ALL=(ALL) ALL 這樣,普通用戶support就能夠執行root權限的所有命令 以support用戶登錄之后,執行: sudo su - 然后輸入support用戶自己的密碼,就可以切換成root用戶了
常見問題
忘記了登錄密碼,導致不能登錄系統
解決方法如下:
1.正常安裝到硬盤的,開機時按住Shift鍵,直到出現引導菜單。如果是wubi安裝的,那么在Windows啟動菜單處,選擇深度操作系統的菜單項,按下Shift不放,再按Enter鍵松開,直到啟動菜單出現之后,再松開Shift鍵。
2.然后確保光標在深度操作系統啟動的一行上(正常情況是第一項),然后按下“e”鍵。
3.在出現的畫面當中,按幾下鍵盤的下方向鍵,使光標移動到“linux /boot/....”的一行.
4.按鍵盤的End鍵使得光標移動到最后(低分辨率的話則有可能是下一行,其實是同一行因為太長被截斷了),先打一個空格,然后執行:
rw init=/bin/bash
5.按Ctrl-X組合鍵啟動系統,直到出現提示符。
然后執行:
passwd
例如,如果你的用戶名是sam,那么請執行passwd sam并回車。(例子圖片的用戶名為cxbii,所以執行的是 passwd cxbii) 然后連續執行兩次新密碼回車,這次可要記住了!
6.按Ctrl-Alt-Del重啟,然后用新密碼登錄吧。
: 以上方法適合于所有使用Grub2的Linux系統,如果出于安全考慮,需要禁用到單用戶模式,點擊此處查看如何禁用單用戶模式。
終端使用sudo提權出錯
xx用戶不在 sudoers 文件中。此事將被報告。
出現這個問題是sudo的配置文件出錯,修改sudo的配置文件即可解決
使用su 切換到root,然后終端執行:
sudo gedit /etc/sudoers
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL:ALL) ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL:ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL) ALL
xx ALL=(ALL) ALL (將此處的XX修改為出現改問題的用戶名!)
保存文件退出即可解決
為什么用戶權限不默認root?
由于root的權限過大,作為日常賬戶使用過于危險,因此系統賬戶默認不是root,并且登錄管理器默認屏蔽root直接登錄。 如果需要臨時使用root權限,我們可以使用sudo命令,臨時獲取root權限。 終端輸入密碼沒有回顯。
Linux系統是一個非常重視密碼安全的系統,因此用戶在終端輸入密碼時,終端將不會回顯,即產生占位符(****),所以你只需要盲打密碼后回車即可。
總結
以上是生活随笔為你收集整理的linux存储群组名称的文件是,群组管理(分组,群组密码,身份切换,常见问题)- 系统管理 -Deepin深度系统用户手册...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 人人网——礼品商城
- 下一篇: Linux中的管道和过滤器