教程

群组管理(分组,群组密码,身份切换,常见问题)- 系统管理 -Deepin深度系统用户手册

方砖大叔
08月21日 09:10
此文约为5890字,阅读需要13分钟
目录:

1 群组介绍

2 /etc/group

3 /etc/gshadow

4 添加群组

5 删除群组

6 修改组成员

7 su

8 sudo

9 /etc/sudoers

10 忘记了登录密码,导致不能登录系统

11 终端使用sudo提权出错

12 为什么用户权限不默认root?

群组管理(分组,群组密码,身份切换,常见问题)- 系统管理 -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

群组管理(分组,群组密码,身份切换,常见问题)- 系统管理 -Deepin深度系统用户手册:取消密组码后,只有成员才可以通过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.

群组管理(分组,群组密码,身份切换,常见问题)- 系统管理 -Deepin深度系统用户手册:除非您知道您在做什么,否则请不要轻易尝试以下命令,以下命令不一定保证您操作的安全性,也不能在您发生危险动作时进行及时阻止,可能导致不可挽回的损失!

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重启,然后用新密码登录吧。

群组管理(分组,群组密码,身份切换,常见问题)- 系统管理 -Deepin深度系统用户手册: 以上方法适合于所有使用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系统是一个非常重视密码安全的系统,因此用户在终端输入密码时,终端将不会回显,即产生占位符(****),所以你只需要盲打密码后回车即可。

Deepin深度系统用户手册
安装&卸载
如何在桌面新建文件夹/文档
原生安装教程
Deepin深度系统体验安装教程 - 安装&卸载 
Deepin深度系统系统卸载教程
Deepin深度系统安装器
基本操作 新建文件夹/文档、排列方式、设置显示器、热区、壁纸
任务栏图标、切换显示模式、设置任务栏位置、大小、显示隐藏、回收站 
账户管理(创建,更改账户头像,密码,删除账户)
显示设置(单屏设置,多屏设置,自定义设置)
默认程序设置(选中、添加、删除默认程序设置) 
个性化设置(主题、字体设置)
硬件资源设备管理 蓝牙设置(蓝牙开关、蓝牙名称、蓝牙设备)
网络设置(有线,无限,移动,宽带,vpn,代理网络设置)
声音设置(设置扬声器、耳机、音效、高级设置)
日期和时间(设置日期时间、时区、自动同步) 
电源管理(设置显示器休眠、设置锁屏时间)
设备管理(鼠标、键盘、触控板、语言)
系统管理(系统信息、协议、系统更新)
窗口管理器(打开,添加,切换,命名,桌面窗口等)
桌面操作 新手入门(概述、打开,关闭)文件
文件(夹)功能(新建,重命名,复制,压缩,删除等)
磁盘以及选项管理(显示、卸载、弹出磁盘)
常用操作(搜索文件、管理标签、书签、共享、网上邻居、创建链接等)
应用商店(运行,关闭,以及主界面)
应用管理(搜索,下载,安装,更新,升级,卸载)
看图管理(介绍,运行,关闭)
图片操作(复制,打印,删除,旋转,设置为壁纸)
图片管理(时间线、相册管理)
系统管理 启动管理(系统启动流程)
引导系统(系统引导器)
Linux内核(引导系统)
Linux内核错误(引导系统)
Linux初始化(初始化)
开机动画 (初始化)
电源管理(待机,休眠,关机,重启)
电源管理(能耗、节能、亮度,CPU频率,内核等)
用户管理 用户管理(用户类型,添加,修改,删除用户)
群组管理(分组,群组密码,身份切换,常见问题)
文件管理 文件与目录(命名,路径,目录,图形管理,命令管理)
文件与目录权限(文件、目录权限)
管理文件权限(图形、命令、改变文件权限、umask介绍等)
文件系统(本地,网络文件系统)
磁盘管理 挂载(挂载点,FHS,挂载文件系统(图形管理,命令管理))
挂载点管理 - 文件管理
磁盘管理(分区,格式化,维护,写入,配额)
软件管理 源代码与程序 、进程分类、属性、父进程和子进程
配置文件目录,备份、删除、清理残余等
开机启动配置文件管理
快捷方式原理 - Desktop Entry 文件
软件源(文件,修改,同步软件源)
源代码包(修改,获取,编译安装,删除)
包管理命令(dpkg,apt,apt-cache,apt-file,aptitude,dselcet)
系统服务
deepin深度系统常见服务
服务(分类,窗口类型,工作形态的类型,命名,启动方式)
服务管理(chkconfig,service) 
登录管理器(类型,设置,切换登录管理器,登录出错)桌面组件
Shell(命令Shell,图形Shell)桌面组件
常见问题
为什么要自定义多个分区?
为什么不默认开机挂载Win分区
不能挂载特定的win分区?
Linux系统盘分区太小,不够用,问是不是要重装系统?
为什么不把软件全部转换成deb包?
如何删除APT缓存?
如何删除软件配置?
添加PPA?
无法解析或打开软件包的列表或是状态文件
出现Unable to correct problems, you have held broken packages的解决办法
dpkg 被中断,您必须手工运行 sudo dpkg --configure -a解决此问题
下列签名无法进行验证: NO_PUBKEY 06EA41DE4F6C1E86
出现They have been ignored, or old ones used instead的解决办法
E: 无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它?
无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用) 
如何删除卸载软件包?
为什么不能同时安装一个以上的软件
无法下载bzip2, Hash 校验和不符
在deepin系统中如何设置GTK主题和窗口主题?
在deepin系统中如何安装与设置图标主题? 
在deepin系统中如何安装与设置光标(鼠标)主题?
在deepin系统中如何设置开机音乐? 
在deepin系统中如何安装系统字体?
在deepin系统中如何设置系统语言? 
发表评论
评论列表
共0条
点击加载更多