文章目录
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