linux中多用户以及权限的理解

linux中多用户以及权限的理解,第1张

linux *** 作系统是多用户管理系统,管理起来非常麻烦,所以用组的概念来管理用户就变的简单多了, 一个用户可以属于多个组,一个组可以有多个用户,用户和组是多对多的关系。

linux的多用户多分组管理系统都是针对 文件 来说的, 每个文件都有所属的用户和所属的分组。

linux系统是根据用户UID来识别用户的,并不是根据用户名。linux用户分为以下3种

每行数据为一个用户,可以看到红色部分为root超级用户,蓝色部分为系统用户,绿色部分为普通用户。

我们可以看到该文件属于root用户和root组。然后root用户权限是rw-,root组内成员的权限是r--,而其他用户的权限是r--。由于其他用户的权限都是r--,所以任何用户都是可以读的。

在/etc/group文件中存储着系统的所有组,查看文件内容,如下图

大致分为4段

我们可以看到图中mail分组的第4段有值为postfix,也就是postfix用户应该有俩个分组,一个初始组和一个附属组,我们执行以下命令验证

用户密码文件shadow和组密码文件gshadow的权限都是000,所有其他用户是不能查看的,只有root用户才可以查看,root用户也是不能修改该文件的。

使用 whoami 命令查看。

postfix用户有俩个所属组postfix和mail。由此可见, uid是指用户id(用户名称),gid是指初始组id(初始组名称),groups是指包括初始组在内的所有组id(所有组名称)

我们知道了/etc/group文件的第四段为 组内成员 ,所有我们可以通过 grep 来匹配相关组。比如查询mail组内的所有成员,命令如下, 可以看到mail组内有mail,postfix和tom3个用户。

上面是一种方法,我们也可以直接使用命令来查看。

添加用户只能root用户来添加,普通用户没有权限,添加用户有俩种方式

在centos系统下,这俩种方式没有区别, 都会在/home下自动创建与用户名同名的用户目录,且都是需要使用 passwd userName 命令来设置用户密码的,只有设置完密码后才可以正常登录。

在unbantu系统下,这俩种方式是有区别的,使用 useradd userName命令 不会在/home下自动创建与用户名同名的用户目录,且不会自动选择shell版本,后续也是需要使用 passwd username来设置密码的 。 而使用 adduser userName 命令的话 是会在/home目录下自动创建与用户名同名的用户目录,也会自动选择shell版本,且会自动提示输入用户密码,对用户比较友好,后续不需要在使用passwd来设置密码。

删除用户,并不会删除用户相关的文件

删除用户且一起删除家目录

格式如下:

参数如下:

-g 指定组(只有root可以使用)

-a 指定用户加入组

-d 从组中删除该用户

-p 从组中清楚所有成员

-l 显示组成员列表

linux中每个文件都是有权限的。 每个文件都有自己的所属用户和所属组,且拥有所属用户权限,所属组权限和其他权限3种。

权限一般分为读,写,执行3种,通过这样的机制来限制哪些用户或用户组可以对特定文件进行相应的 *** 作。

目录有x权限才可以cd进入该目录。目录有r权限才能在该目录中使用ll或者ls查看目录。一个目录中的文件能否被删除或者创建取决于该目录是否有w权限。

执行ll命令后显示如下,我们解读一下

从左到右发现一共有7段

然后执行如下命令

test文件的权限改为

常用的参数为 -R ,常用于修改目录权限,该参数表示为该目录以及目录下的所有子文件都修改为相同的权限。

然后执行如下命令

再次查看test文件

常用的参数为 -R ,常用于修改目录,该参数表示为该目录以及目录下的所有子文件都修改为相同的用户及用户组。

想切换到root用户,直接使用su命令即可

想要设置文件权限,首先要确认必须使用这个文件的创建者(所有者)的账号。\x0d\x0a1,如果这个两个用户是输入不同用户组的,比如是用户名为root(等同于windows的管理员账户),使用命令\x0d\x0a[xuwangcheng14@root]# id root[xuwangcheng14@root]# uid=0(root) gid=0(root) groups=0(root)root为root用户组。假如root为文件的创建者,另外两个用户分别为jees和miss,jees组别为root组,miss组别为http组,\x0d\x0a这样来说jees对于root是同组的,用字母g(group)表示;\x0d\x0amiss对于root是其他组的,用户字母o(other)表示\x0d\x0aroot自身则用u(user)表示。\x0d\x0a这样就好办了,使用chmod命令可以对 不同组别的用户对于文件添加或者减少权限:\x0d\x0ax: execute(执行权限)r: read(读权限)w: write(写权限)\x0d\x0a[xuwangcheng14@root]# chmod 754 ./mydir -R改变一个文件的权限: chmod mode file|dir \x0d\x0a改变所有子目录的权限: chmod mode dir -R (注意后面加了个-R参数 )参数就是权限模式 mode = 777 or 752 ,666,,, mode 的三个数字,分别表示user,group,others所具有的权限。 1 = x 执行 2 = w 写 4 = r 读,比如user具有所有权限,1+2+4=7, 又比如group 具有读 和执行权限 1+4 =5。\x0d\x0a这样就能改变两个不同用户对同一目录下的文件的权限。\x0d\x0a\x0d\x0a2,如果这两个用户是属于同一组(相对于文件所有者的组\x0d\x0ajess为http组,miss为users组,\x0d\x0a可以通过改变文件属主来使两个用户为不同的用户组:\x0d\x0a[xuwangcheng14@root]# chown -R jess.http ./mydir[xuwangcheng14@root]# chmod 754 ./mydir -R第一个命令改变了mydir目录下所有文件的所有者为http组的jess,\x0d\x0a第二条命令和上面的是一样的。

Linux中每个用户都要属于一个或多个组,有了用户组,就可以将用户添加到组中,这样就方便管理员对用户的集中管理。 Linux系统中用户组分为root组、系统组、普通用户组三类。当一个用户属于多个组时,这些组中只能有一个作为该用户的主属组,其他组就被称为此用户的次属组。 组基本信息在文件/etc/group中;组密码信息在文件/etc/gshadow中。通过命令:cat /etc/group、cat /etc/gshadow可查看文件内容。

各用户组中,以 ":" 作为字段之间的分隔符,分为 4 个字段,每个字段对应的含义为:

组名:密码:GID:该用户组中的用户列表

而在gshadow文件中,每行代表一个组用户的密码信息,各行信息用 ":" 作为分隔符,分为 4 个字段,每个字段的含义如下:

组名:加密密码:组管理员:组附加用户列表

root用户可以直接修改/etc/group文件达到管理组的目的,也可以使用以下命令:groupadd、groupdel、groupmod -n、gpasswd -a、gpasswd -d、newgrp。

下面使用案例分别讲解这些命令:

添加用户组的命令是 groupadd,命令格式如下:

groupadd  [ -g gid  [ -o ] ]  [ -r ]  [ -f ]  group

参数说明:

        -g:指定新建工作组的 id;

        -r:创建系统工作组,系统工作组的组ID小于 500;

        -K:覆盖配置文件 "/ect/login.defs";

        -o:允许添加组 ID 号不唯一的工作组。

        -f,--force: 如果指定的组已经存在,此选项将失明了仅以成功状态退出。当与 -g 一起使用,并且指定的GID_MIN已经存在时,选择另一个唯一的GID(即-g关闭)。

示例:创建一个新的组,并添加组 ID。

[root@VM-4-4-centos ~]# groupadd  -g  888  newgroup

此时在/etc/group文件中产生了一个id为888的项目:

删除用户组时,可用groupdel(group delete)指令来完成。倘若该组中仍包括某些用户,则必须先删除这些用户后,方能删除组。 注意:删除的组不能为主属组! 命令格式:

groupdel  [组名]         

示例:删除用户组 newgroup

[root@VM-4-4-centos ~]# groupdel  newgroup

此时再查看/etc/group文件时可以看到用户组newgroup已经不存在,删除成功!

要更改用户组识别码或名称可使用 groupmod 来完成。命令格式:

groupmod  [ -g  <群组识别码>  <-o >] [ -n  <新群组名称 >] [原群组名称]

参数说明 :

        -g <群组识别码> 设置欲使用的群组识别码。

        -o  重复使用群组识别码。

        -n <新群组名称> 设置欲使用的群组名称。

示例:创建用户组newgroup并修改其名称为modifiedgroup

[root@VM-4-4-centos ~]# groupadd  newgroup

[root@VM-4-4-centos ~]# groupmod  -n  modifiedgroup  newgroup

查看/etc/group文件,只存在名称为modifiedgroup的用户组,修改成功!

gpasswd 是 Linux 下工作组文件 /etc/group 和 /etc/gshadow 管理工具,用于将一个用户添加到组或者从组中删除。命令格式:

gpasswd  [可选项]  组名

可选项参数 :

        -a:添加用户到组;

        -d:从组删除用户;

        -A:指定管理员;

        -M:指定组成员和-A的用途差不多;

        -r:删除密码;

        -R:限制用户登入组,只有组中的成员才可以用newgrp加入该组。

示例1:将用户yangwei添加到组modifiedgroup中

[root@VM-4-4-centos ~]# gpasswd  -a  yangwei  modifiedgroup

此时查看/etc/group文件发现组 modifiedgroup中出现用户yangwei

示例2:将用户yangwei从组modifiedgroup中给删除

[root@VM-4-4-centos ~]# gpasswd  -d  yangwei  modifiedgroup

再次查看/etc/group文件发现用户yangwei已经不存在。

当需要在不同的群组下工作的时候我们需要进行切换群组 *** 作,这个 *** 作由newgrp指令来完成。命令格式如下:

newgrp [群组名称]

注意!当前用户必须都是两个群组的成员,否则切换群组时需要输入切换组的组密码,这时候当前用户作为临时成员在切换组下工作,所创建的文件全都属于切换组。

示例1:用户yangwei不属于群组modifiedgroup,请将当前工作组切换为modifiedgroup。

示例2:将用户yangwei添加到组modifiedgroup中,并切换工作组为modifiedgroup。

总结:Linux用户组管理需要掌握最基本的几个命令及其选项参数: groupadd 、groupdel 、groupmod 、gpasswd 、newgrp !


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/yw/8735510.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-20
下一篇2023-04-20

发表评论

登录后才能评论

评论列表(0条)

    保存