zoukankan      html  css  js  c++  java
  • 浅谈用户、组之管理指令

      今天呢,我们来聊一聊关于用户和组的管理指令。

    一、用户和组的概念

      对于我们的计算机而言,它是不记录名字的,只记录数字,所以,就给每一个用户排了编号,这个编号我们就称之为用户ID。大家都知道,linux系统下,拥有最高权限的用户就是root(超级管理员)了,所以root(超级管理员)的ID就是0,排在了最前面,以彰显它的地位。在我们的linux centos7系统中,系统用户(进程)的ID号是1-999,普通用户的ID号是从1000开始的,在我们创建用户时,系统会自动分配一个ID号,当然我们也可以自己指定,至于如何指定,在下文中小编会给大家介绍的。

      关于组,组就是把若干个用户放在其中,这样一来,就更加方便我们对成员的管理,比如:把公司里一个部门的成员放在一个组里,直接把权限设置到组,这样,这个部门的人都可以访问到他们需要访问的文件,会比一个一个设置快捷方便很多。

    二、用户和组的主要配置文件

    用户和组的配置文件有很多,主要的文件就是下面的这四个:

    1/etc/passwd该文件中存储的是用户及其属性信息,包括名称、UID、主组ID等等。

    2/etc/group顾名思义,这个文件中存储的就是组及其属性信息啦。

    3/etc/shadow该文件存储的是用户密码及其相关属性。

    4/etc/gshadow该文件存储的是组密码及其相关属性。

    每个文件的具体内容和用法稍后我们也会提到。

    三、四大主要文件的格式

    1/etc/passwd

      在linux系统中,想要了解一个文件最简单的方法就是用man啦。

      

      上图就是man出来的结果,红色方块圈出来的就是格式信息啦~我们用cat查看一下/etc/passwd的具体信息,下图就是root具体信息的截图。

      

      图中可以看出,每一部分内容是由":"分隔开来的,每一部分的意思就是上一张图中用红色方块框起来的部分,分别如下:

      登录用户名:密码:UIDGID:用户全名或注解:用户家目录:默认的登陆shell

    2/etc/group

      同理,我们用man查看一下:

      

      同样的,我们来看一下具体的显示:

      

      分别如下:组名:密码:GID号:组成员列表

    在这里,需要说明的是:组成员列表显示的是将该组作为辅助组的成员列表。(很重要很重要很重要!!!)那么问题来了,如果我们将组成员列表中的某用户主组更改为这个组,还会显示吗?我们就用gentoo这个用户来试一下:

                  

      从图中,我们可以看出,当成员先把改组当做辅助组,再转成主要组时,显示内容是不变的~

    3/etc/shadow

      我们来man一下该指令:

      

      接下来我们看一下root用户的具体信息:

      

      每一块的具体说明,在上一张图中已经标示过了。

      在这里,我们要介绍一个命令——chage

      Chage -l username显示帐户的密码信息

        -d 指定密码的上次修改时间(yyyy-mm-dd)

         -d 0 则强制用户下次登录时必须修改密码

         -E 指定账户的过期时间

         -I 密码过期之后多少天帐户过期

         -m 设置最小存活时间

            -M 设置最大存活时间

         -W 设置密码过期前的提醒时间

      chage username交互式修改用户的密码策略

      可能有人会问,什么是交互式修改用户的密码呢?下面我们就来演示一下:

      

      当我们输入chage weichen指令后,就会依次弹出图中信息,我们挨个填一下就好。这样是不是很方便呢~修改过后我们来查询一下weichen的信息:

      

      图中我们可以看出,已经按照我们设定的修改过啦~

    4/etc/gshadow

      Gshadow一共显示四部分信息,同样以root为例:

      

      分别为:组名:组密码位:管理员:组成员

      一样的,该处显示的组成员也是将该组作为辅助组的成员列表。

      上图中我们可以看出,组密码位和管理员都是空的,那么如何设置呢?

      设置组密码: gpasswd groupname

      关于管理员,我们要说的命令会详细一些:

      任命管理员 gpasswd -A xiaoqiao,luren admin

      撤消所有管理员 gpasswd -A "" admin

      gpasswd -a libai admin往组中增加用户

      gpasswd -d libai admin将用户从组中删除

      gpasswd -r admin删除组密码

      gpasswd -R admin限制非辅助组用户可以通过newgrp admin获取主组权限。当前密码被删除替换为!

      gpasswd -M redhat,libai admin设置辅助组的成员列表。

      重点来了!管理员只能由root来任命或者撤销,可以同时有多名一起,中间用","隔开。身为管理员,当然有不一样的权力啦:管理员可以修改组密码,同时也可以将用户从该组(辅助组)当中添加或者删除!

    四、用户和组的管理命令

      千呼万唤使出来,我们终于说到了最重要的部分。

    1、用户管理命令:

    1)用户创建之useradd

      useradd

      -u uid username 创建用户时指定uid(如不指定则Centos:500-60000, Centos7: 1000-60000)

      -o -u uid username 创建用户时指定uid(可以与已存在用户的uid相同)

      -g groupname username 创建用户时指定主组为某个已存在的组。(将不会再创建与用户同名的组)

      -c ... username 创建用户时指定描述信息。相当于chfn ... username

      -d path username 指定用户的家目录(确保指定的家目录所在的上级目录要存在,且家目录本身不能存在)

      -s /sbin/nologin username指定用户的默认shell

      -G group1[,group2] username指定用户的辅助组

      -N username 设置用户的主要组为默认组(users,uid=100)

      -r username 创建系统用户

      -p 密码  创建用户时设置密码

    2)用户属性修改之usermod

      usermod

      -u newuid username         修改用户的UID

      -o -u newuid username 修改用户的uid(可以与已存在用户的uid相同)                        

      -aG 加组名,可以追加辅助组而不用覆盖之前的组

      -G "" username usermod -G primarygroup username 清空用户所有的辅助组

      -g groupname username 修改用户的主组

      -s /sbin/nologin username修改用户的默认shell

      -c ... username 修改用户时指定描述信息。相当于chfn ... username

      -d /.../path username 修改用户的家目录(不会创建,只修改/etc/passwd当中的家目录信息)

      -m -d /.../path username修改用户的家目录信息,并将家目录移动到目的目录并改名。

      -l newname oldname 修改用户名

      -L 给用户/etc/shadow中的密码位加!使用户被锁定

      -U !拿掉。

      -e yyyy-mm-dd 设置一个帐户过期时间

      -f days 指定密码过期之后多少天帐户过期

    3)删除用户之userdel

      Userdel的用法很简单,后面加上用户名即可。需要说明的一点是,如果你想在删除用户的时候,连同他的家目录和邮件等信息一同删除,则需要加上-r,如图所示:

      

      这样过就可以把用户李白的所有信息都删除了。

    4)查看用户信息之ID

    id username 查看每一用户的信息

    id –u 查看当前登录用户的UID

    id –un 查看当前登录用户的用户名

    id –g 查看当前登录用户的GID

    id –gn 查看当前登录用户的主组名字

    5)切换用户之su

    su (switch user)

    su username 非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录

    su - username 登录式切换,会读取目标用户的配置文件,切换至家目录,完全切换

    -c 'command' 以用户的身份执行命令而不登录

    2、组管理命令

    1)创建组之groupadd

    groupadd -g gid groupname 创建指定gid的组

     -r groupname 创建系统组

    2)修改组属性之groupmod

    groupmod

    -n newgrpname oldgrpname 修改组名

    -g newgid groupname 修改gid

    3)删除组之groupdel

    groupdel groupname 删除组

    4)更改及查看组成员之groupmems

    groupmems -g admin -a libai (仅能一次加一个用户到组中)

    groupmems -g admin -d libai 将指定成员从组中删除

    groupmems -g admin -l 列出指定组的成员列表(辅助组)

    groupmems -g admin -p 清空指定组的所有成员(辅助组)。

      

      

      

      

      以上,就是我对用户和组管理的小结,如有不足之处,还请大家多多指教诺~

    作者:珂儿吖

    出处:http://www.cnblogs.com/keerya/

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    大家写文都不容易,希望尊重劳动成果哟~

  • 相关阅读:
    SGU 205. Quantization Problem
    BZOJ1009: [HNOI2008]GT考试
    SGU 204. Little Jumper
    Spring Aspect 获取请求参数
    springboot 是用拦截器Interceptor获取请求的控制器和请求的方法名
    spring boot Filter过滤器的简单使用
    Java 使用Query动态拼接SQl
    java 传入list集合 返回树形菜单,for循环遍历
    spring data jpa 的简单使用
    vue项目引入element
  • 原文地址:https://www.cnblogs.com/keerya/p/7222285.html
Copyright © 2011-2022 走看看