Linux-02-用户User和用户组Group操作

1. 用户操作User

以root用户登录 useradd --help 就可以查看useradd所有指令,其实大多数命令都是可以这样查看

常见命令如下

1.1 添加用户 useradd 用户名adduser 用户名

常见选项(更多使用 useradd --help查看)

-c comment 指定一段注释性描述

-d 目录 指定用户主目录,如果目录不存在,则可以同时使用 -m 选项,可以创建主目录

-g 用户组 指定用户所属的用户组

-G 用户组 指定用户所属的附加组

-s Shell文件 指定用户登录的shell

-u 用户号 指定用户的用户号,如果同时有 -o 选项,则可以重复使用其他用户的标识号

useradd -d /usr/wql -mwql 此命令创建一个wql用户,其中 -d和-m是用来为wql生成有个主目录/usr/wql,
usr一般默认为主目录的父目录

注意在创建用户的时候,如果不指定用户组,系统会自动创建一个用户组,用户组名字和用户名字是相同的,这个组是用户的主组,同时也会在/home目录下自动创建用户的主目录
在这里插入图片描述
查看得知会自动创建用户主目录,那么问题来了,不是要添加-d -m参数会创建主目录吗?
在这里插入图片描述
那是因为在系统设置中,默认将自动创建主目录参数设置为true,如果在创建用户的适合用户不存在,如果将/etc/login.defs中的CREATE_HOME被设置为no,那么只输入useradd将不能创建用户主目录

[root@Centos-root473791 home]# cat /etc/login.defs
#...省略..
#
# If useradd should create home directories for users by default
# On RH systems, we do. This option is overridden with the -m flag on
# useradd command line.
#
CREATE_HOME     yes

1.2 删除用户 userdel -r 用户名

注意,删除用户的时候记得加-r 如果不加这样删除用户不能够完全删除,因为它的一个家目录和一个邮箱目录还是在的

1.3 修改用户 usermod 选项参数 用户名

[root@Centos-root473791 home]# usermod --help
Usage: usermod [options] LOGIN

Options:
  -c, --comment COMMENT         new value of the GECOS field
  -d, --home HOME_DIR           new home directory for the user account
  -e, --expiredate EXPIRE_DATE  set account expiration date to EXPIRE_DATE
  -f, --inactive INACTIVE       set password inactive after expiration
                                to INACTIVE
  -g, --gid GROUP               force use GROUP as new primary group
  -G, --groups GROUPS           new list of supplementary GROUPS
  -a, --append                  append the user to the supplemental GROUPS
                                mentioned by the -G option without removing
                                him/her from other groups
  -h, --help                    display this help message and exit
  -l, --login NEW_LOGIN         new value of the login name
  -L, --lock                    lock the user account
  -m, --move-home               move contents of the home directory to the
                                new location (use only with -d)
  -o, --non-unique              allow using duplicate (non-unique) UID
  -p, --password PASSWORD       use encrypted password for the new password
  -s, --shell SHELL             new login shell for the user account
  -u, --uid UID                 new UID for the user account
  -U, --unlock                  unlock the user account
  -Z, --selinux-user            new SELinux user mapping for the user account

[root@Centos-root473791 home]# 

1.3.1 -c 参数,作用是填写用户的备注信息

在这里插入图片描述
添加备注信息之后,可以在 cat /etc/passwd里面看到备注信息
在这里插入图片描述

1.3.2 -m -d 连用可重新指定用户的家目录并自动将旧数据转移到新目录

在这里插入图片描述

1.3.3 -e 设置账户的到期时间,格式为 YYYY-MM-DD

[root@Centos-root473791 home]# usermod  -e 2021-04-03  wql3

1.3.4 -g 变更所属用户组 -G 变更附属组

1.3.5 -u 修改用户的Id

1.3.6 -L 锁定用户,禁止其登录系统

1.3.7 -U 解锁用户,允许其登录系统

什么是主组?什么是附属组?
用一个通俗的解释,你刚出生时只属于一个组,就是你的家,而且这个组一般是不会变的,这个家就是你的初始组(主组),生你的时候家必须存在,所以用-g指定的那个组,也就必须存在;随着你的长大,你又加入了很多组,比如小学,初中,高中,大学,等等,但是这些组不会覆盖你的初始组,你还是属于你的家,这就是附加组。

1.4 查看当前用户 whoami 或者 id

[root@Centos-root473791 home]# whoami
root
[root@Centos-root473791 home]# id
uid=0(root) gid=0(root)=0(root)
[root@Centos-root473791 home]# 

1.5 查看所有用户 cat /etc/passwd

如果想查找某个用户 cat /etc/passwd | grep 用户名

[root@Centos-root473791 home]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
OProfile:/home/oprofile:/sbin/nologin
mysql:x:498:498:MySQL server:/var/lib/mysql:/bin/bash
rabbitmq:x:497:497:RabbitMQ messaging server:/var/lib/rabbitmq:/sbin/nologin
wang:x:500:500::/home/wang:/bin/bash

通常在Linux系统中,用户的关键信息被存放在系统的/etc/passwd文件中,系统的每一个合法用户账号对应于该文件中的一行记录。这行记录定义了每个用户账号的属性。

每行采用了相同的格式:

name:password:uid:gid:comment:home:shell

举个列子:就拿第一行来说,对应关系如下图所示

root     :   x :       0:      0:       root:    /root: /bin/bash
用户登录名 :密码 :  用户Id:   组Id:   备注信息:用户主目录:命令解释程序
  • 注册/登录名(login_name):用于区分不同的用户。在同一系统中注册名是惟一的。在很多系统上,该字段被限制在8个字符(字母或数字)的长度之内;并且要注意,通常在Linux系统中对字母大小写是敏感的。这与MSDOS/Windows是不一样的。

  • 口令(passwd):系统用口令来验证用户的合法性。超级用户root或某些高级用户可以使用系统命令passwd来更改系统中所有用户的口令,普通用户也可以在登录系统后使用passwd命令来更改自己的口令。
    现在的Unix/Linux系统中,口令不再直接保存在passwd文件中,通常将passwd文件中的口令字段使用一个“x”来代替,将/etc /shadow作为真正的口令文件,用于保存包括个人口令在内的数据。当然shadow文件是不能被普通用户读取的,只有超级用户才有权读取。
    此外,需要注意的是,如果passwd字段中的第一个字符是“*”的话,那么,就表示该账号被查封了,系统不允许持有该账号的用户登录。用户口令。此域中的口令是加密的。当用户登录系统时,系统对输入的口令采取相同的算法,与此域中的内容进行比较。如果此域为空,表明该用户登录时不需要口令。

  • 用户标识号(UID):UID是一个数值,是Linux系统中惟一的用户标识,用于区别不同的用户。在系统内部管理进程和文件保护时使用 UID字段。在Linux系统中,注册名和UID都可以用于标识用户,只不过对于系统来说UID更为重要;而对于用户来说注册名使用起来更方便。在某些特定目的下,系统中可以存在多个拥有不同注册名、但UID相同的用户,事实上,这些使用不同注册名的用户实际上是同一个用户。

  • 组标识号(GID):这是当前用户的缺省工作组标识。具有相似属性的多个用户可以被分配到同一个组内,每个组都有自己的组名,且以自己的组标识号相区分。像UID一样,用户的组标识号也存放在passwd文件中。在现代的Unix/Linux中,每个用户可以同时属于多个组。除了在 passwd文件中指定其归属的基本组之外,还在/etc/group文件中指明一个组所包含用户。

  • 备注信息:包含有关用户的一些信息,如用户的真实姓名、办公室地址、联系电话等。在Linux系统中,mail和finger等程序利用这些信息来标识系统的用户。

  • 用户主目录(home_directory):该字段定义了个人用户的主目录,当用户登录后,他的Shell将把该目录作为用户的工作目录。在Unix/Linux系统中,超级用户root的工作目录为/root;而其它个人用户在/home目录下均有自己独立的工作环境,系统在该目录下为每个用户配置了自己的主目录。个人用户的文件都放置在各自的
    主目录下。

  • 命令解释程序(Shell):Shell是当用户登录系统时运行的程序名称,通常是一个Shell程序的全路径名,
    如/bin/bash。
    在这里插入图片描述

2. 用户组操作Group

2.1 查看所有组 cat /etc/group

如果想查找某个用户组 cat /etc/passwd | grep 用户组

[root@Centos-root473791 home]# cat /etc/group
root:x:0:
bin:x:1:bin,daemon
daemon:x:2:bin,daemon
sys:x:3:bin,adm
adm:x:4:adm,daemon

拿其中一条解释

  bin:    x    :  1 :  bin,daemon
用户组:用户组口令:GID: 用户组所包含的用户

2.2 查看当前用户组 groups

2.3 新增用户组 groupadd 用户组名

注意在创建用户的时候,系统会自动创建一个用户组,用户组名字和用户名字是相同的,这个组是用户的主组

2.3.1 给新用户分配组

一个用户可以有多个组

useradd -g testgroup testuser

添加一个新用户testuser同时把它添加到已经存在的testgroup组中,注意,组必须是已经存在的

注意:-g 所属组 -d 家目录 -s 所用的shell

2.3.2 给已经存在的用户增加工作组

usermod -G groupname username 这个会把用户从其他组中去除

gpasswd -a username groupname 这个是给用户增加用户组,原来的组也还是存在的

2.4 删除用户组 groupdel 用户组名

注意:这里你只能删除groupadd生成的组,还有一类组是生成用户的时候自动生成的,

就比如 useradd hky;添加一个hky用户同时生成了一个hky组,而这个hky组是这个hky用户的主组,那么在你使用groupdel hky的时候会报错:groupdel: cannot remove the primary group of user 'hky',在这个时候你需要先将hky用户的主组改变一下,使用 usermod -g groupname username;这里username用户的主组就改成了groupname。就可以继续删除了

2.4.1 从组中删除用户 gpssswd -d 用户名 用户组名

例如: 从testgroup组中将testuser用户删除

可以直接编辑/etc/group 找到 testgroup那一行,然后直接将testuser删除;

也可以使用命令:gpasswd -d testuser testgroup

2.5 修改用户组 groupmod 参数

[root@Centos-root473791 home]# groupmod --help
Usage: groupmod [options] GROUP

Options:
  -g, --gid GID                 change the group ID to GID
  -h, --help                    display this help message and exit
  -n, --new-name NEW_GROUP      change the name to NEW_GROUP
  -o, --non-unique              allow to use a duplicate (non-unique) GID
  -p, --password PASSWORD       change the password to this (encrypted)
                                PASSWORD

比如 将group旧名字改成新名字 :groupmod -n newGroup oldGroup

3. 其他

3.1 用户密码管理

超级用户可以修改自己和其他用户的密码,而普通用户只能修改自己的密码

如果为超级用户如root用户,修改他人密码为 passwd 用户名;然后就可以输入密码了。

同时passwd还可以用一些选项 : passwd 选项 用户名

选项:-l 锁定口令,即禁用账号,-u 口令解锁,-d 使账号无口令,-f 强迫用户下次登录时修改口令。

如果命令就只输入 passwd ,那么就是修改当前用户的密码

3.2 用户切换用户组 newgrp groupname

如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限。用户可以在登录后,使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户组。

命令:newgrp groupname

这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组。类似于用户账号的管理,用户组的管理也可以通过集成的系统管理工具来完成。

3.3 常用创建用户命令

# 创建一个用户组,组id设置为500 组名叫esb
groupadd -g 500 esb
# 创建一个用户 指定目录为/home/esb 加入esb用户组,用户id设置为502 指定用户目录为esb
useradd -d /home/esb  -g esb -u 502 -m  esb
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alan0517

感谢您的鼓励与支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值