linux存储群组名称的文件是,群组管理(分组,群组密码,身份切换,常见问题)- 系统管理 -Deepin深度系统用户手册...

71cad3f2fffeb3ab404438f4c3a8bbb0.png

群组介绍

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

f6f9cced4ba11ee626b099833047e708.png:取消密组码后,只有成员才可以通过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.

125bccb79136b71a26dc211deb268c9b.png:除非您知道您在做什么,否则请不要轻易尝试以下命令,以下命令不一定保证您操作的安全性,也不能在您发生危险动作时进行及时阻止,可能导致不可挽回的损失!

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

f6f9cced4ba11ee626b099833047e708.png: 以上方法适合于所有使用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系统是一个非常重视密码安全的系统,因此用户在终端输入密码时,终端将不会回显,即产生占位符(****),所以你只需要盲打密码后回车即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值