用户和群组相关的命令和文件

1. 用户和群组相关的文件

/etc/passwd目录:此文件是存放用户信息的配置文件,其主要内容有:

  1. 第一部分:用户名,即登录所使用的账号
  2. 第二部分:x(本来用于存放用户登录密码),现在的密码都存放在/etc/shadow文件中
  3. 第三部分:UID,用户ID号码,新建用户时,UID的值都在500以后,最大值为65535之间
  4. 第四部分:GID,表示用户的主要组id
  5. 第五部分:用户的全称,描述信息
  6. 第六部分:用户的属主目录
  7. 第七部分:shell脚本,一般为/bin/bash

注: 以上七部分如下图所示 :
在这里插入图片描述
/etc/shadow文件用于存放用户的密码
/etc/group:用于存放群组信息的配置文件
/etc/gshadow:用户组密码信息存放位置
注: 用户管理在Linux中使用频率并不高,因为Linux虽然是多用户操作系统,但是很少有非常多的用户操作系统

2. 用户的增删改查

2.1 创建用户(useradd)
  1. 语法:useradd [-options] 用户名user add 用户名 [-options]

  2. 说明:会在/etc/passwd文件里面产生该用户的相关信息,通过查看help,可以发现useradd一般需要管理员账号才可以使用。

  3. 参数:
    1. -g:指定用户所属的群组(primary group),-g后加的是GID
    2. -G:指定用户的attached group
    3. -u:指定用户的UID,数值和GID同样,都是500以后且未被使用的UID
    4. -M:此参数表示在创建用户时不创建其属主目录
    5. -d:指定用户的家目录
    6. -s:指定用户登录的shell,默认为/bin/bash

2.2 删除用户(userdel)
  1. 语法:userdel [-options] 用户名
  2. 参数:-r,表示在删除用户时将此用户相关的信息也一并删除,如用户的属主目录等。

注: 删除用户信息时会将与这个用户名相同的群组关联删除;在删除时,建议将-r参数加上,以便删除用户的所有信息。
附(异常处理): 在useradd添加用户时,会默认创建该用户的家目录和邮箱,但是在userdel删除该用户时却默认不会删除该用户的邮箱和家目录,所以在删除该用户之后再次创建该用户(登录名相同)时就会出现异常。之所以这么做,是因为用户的邮箱中可能会保存了很多信息,如果误删后果比较严重。

2.3 查看用户id(id)
  1. 语法:id 用户名
  2. 功能:查看用户的id,id命令可以查看一个用户的uid和gid还有该用户属于的所有组,除了gid之外的所有组都是用户的附加组。
  3. 示例如下:
    加粗样式

附: 也可用grep username /etc/passwd命令直接在配置文件中查找指用户名的相关信息

2.4 查看用户的群组信息(groups)
  1. 语法:groups 用户名
  2. 功能:查看用户的群组信息
2.5 切换用户(su)
  1. 语法:su [-option] [用户名]
  2. 参数:-,表示切换用户时同时切换到目标用户的属主目录

注: 如果不加用户名,默认切换到root用户

2.6 设置密码(passwd)
2.6.1 命令相关:
  1. 格式:passwd [-option] 用户名
    输入之后,下面就会提示用户输入相应的新密码即可。
  2. 选项:
    1. -d:删除用户密码信息。
    2. -l:锁住密码,会在shadow中的密码信息前面加两个叹号。在账号被锁定后,除了root用户外,其他用户均不能切换和使用该账号。
    3. -n:设置密码最小有效期。
    4. -x:设置最大有效期。
    5. -w:到期前警告天数。
    6. -i:宽限日期。
    7. -e:将指定用户的密码设置为过期,使用该命令后,上次修改密码的时间变为了0,表示用户下次登录必须修改密码,在windows中,这个值是默认的。
    8. -u:解锁密码,对于使用-l选项锁定的密码可以通过passwd -u username解除锁定。
    9. --stdin:使passwd读取标准输入,只能root使用,例如:echo 123 | passwd --stdin username
2.6.2 用户密码相关的配置文件解析

用户密码信息存放在/etc/shadow文件中,该文件每一行的格式为username:password:上次修改密码的时间:密码最小有效期:密码最大有效期:密码到期前提前多少天警告的时间信息:用户密码到期后宽限日期:账号失效日期:保留:,格列的具体解释如下:

  1. username:用户名
  2. password:密码的密文信息,加密算法在/etc/login.defs文件中指定。
  3. 上次修改密码的时间:保存的是1970年1月1日到你修改密码哪天的天数,即你修改密码的真正时间就是1970年1月1日加上文件中该列记录的时间。
  4. 密码最小有效期:每次修改密码间隔的最小时间,为0表示不受限,随时可以修改,为1表示在本次修改密码后最少一天后才能再次修改密码。
  5. 最大有效期:默认为9999天,表示这个时间内必须修改密码,否则一旦过期密码就不能用了,例如如果为3,就表示在3天内必须修改,否则一旦超过三天该密码就用不了了。
  6. 发出警告:假如等于n,表示在密码到期前的第n天发出警告,提示用修改。
  7. 宽限日期:密码过期后在宽限的天数内,仍然可以使用。
  8. 账号的失效日期(有效期):,如果过了有效期,需要用root用户来进行设置。
2.7 管理用户密码信息(chage)
  1. 语法:chage [-options] username

  2. 功能:修改用户密码信息,相比于passwd能更灵活的修改密码信息

  3. 选项:

    1. -d:上次修改密码时间,一般来讲,上次修改密码时间要么不改,要么直接设置为0,让用户下次登录必须修改密码
    2. -m:密码最小有效期
    3. -M:密码最大有效期
    4. -W:密码到期前警告日期
    5. -I:宽限日期
    6. -E:账号直接失效日期
  4. 实例:chage -d 1300 -m 2 -M 20 -W 10 -I 4 -E 2021-1-1 username

2.8 修改用户的ID信息(usermod)
  1. 语法:usermod [-options] 用户名
  2. 参数:
    1. -u:修改用户的UID
    2. -g:修改用户的GID
    3. -G:将相应用户追加到指定群组
    4. -d:指定用户的家目录
    5. -s:指定用户登录的shell,默认为/bin/bash

注: 该命令一般用的不多,因为用户一旦创建好后这些信息基本就不会再变了。
附:/etc/login.defs文件中,redhat系统创建用户时会自动创建家目录,而系统会参照/etc/login.defs文件,该文件会指定一些规则(创建用户时),比如CREATE_HOME就表示是否在创建用户时创建家目录。

3. 群组的增删改查

3.1 用户群组的分类

用户群组主要分为以下三类:

  1. primary group:主要组,记录在/etc/passwd文件中每行的第四列就属于用户的主要组id,一个用户的private groupprimary group有可能是同一个组。
  2. private group:私有组,由于任何用户都必须依赖于一个用户组,那么在创建该用户时如果没有指定用户组,Linux系统就会为该用户自动创建一个与之用户名相同的组,称为该用户的private group,私有组只有一个和该私有组同名的用户,其意义就是让用户有了一个用户组,如果创建该用户时指定了该用户的所属组,那么就不会创建该用户的私有组。
  3. attached group:附加组,一个用户只可以属于一个primary group,但是可以同时属于多个attached group。并且可以将私有组作为其他用户的附加组,但是不建议这样做。
3.2 创建群组(groupadd)
  1. 语法:groupadd [-options] 群组名
  2. 参数:-g,此参数用来指定群组的GID,并且GID必须是500以后且未被使用的整数

附: 用户组的相关信息保存在/etc/group中,格式为group_name:group_password:group_id:"组成员",其中group_password保存在/etc/gshadow文件中,group文件里用x代替,示例如下:
在这里插入图片描述

3.3 删除群组(groupdel)
  1. 语法:groupdel 群组名
    注: 只能删除空的群组名
3.4 修改组的id(groupmod)
  1. 语法:groupmod -g group_id group_name
  2. 说明:修改组的id,因为操作系统就是通过id来区分组的。
3.5 为用户添加附加组(usermod&gpasswd)
>方法一:
  1. 语法:usermod -G attached_group_name username
  2. 解析:
    1.-G:只能指定一个附加组,且会清除原有的附加组
    2. -aG:可以指定多个付加组,其中a参数表示append追加的意思
>方法二:
  1. 语法:gpasswd -a username attached_group_name
  2. 解析:
    1. -a:表将attached_group_name追加为username的附加组
    2. -d:表示删除附加组
3.6 用户组密码相关

用户组密码存放在/etc/gshadow中,格式为group_name:!::username1,username2,...,username3,该文件的第二列记录的组密码信息,默认的组和默认的用户一样,没有密码。

  1. 设置组密码命令:gpasswd 组名
  2. 说明:对于任何一个用户来说,其创建的文件默认属于该用户,属于该用户的primay group
  3. newgrp group_name命令:切换当前shell的组名,即让当前用户临时切换到其他组,这样创建的文件就是其他组的了,可以使用eixt命令退出切换后的shell。在使用该命令切换组时,如果组有密码,那就需要输入密码才能切换成功,而这也是组密码存在的意义或者说作用。即让不属于该组的用户也可以切换到该组,只要输入正确的组密码即可切换成功。
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值