系统上的每个进程(正在运行的程序)都以特定用户的身份运行。每个文件都由特定的用户拥有。对文件和目录的访问受用户限制。与正在运行的进程关联的用户确定该进程可访问的文件和目录
bash[root@localhost ~]# id root
uid=0(root) gid=0(root) 组=0(root)
能看到 uid(用户ID), gid(初始组ID), groups 是用户所在组,这里既可以看到初始组,如果有附加组,则也能看到附加组.
用户基本信息文件存在于
/etc/passwd
中,由:
分割为 7 段字符
bash用户名 : 密码 : UID : GID : 描述性信息 : 主目录 : 默认 Shell
用户名,就是一串代表用户身份的字符串。用户名仅是为了方便用户记忆,Linux 系统是通过 UID 来识别用户身份,分配用户权限的。/etc/passwd
文件中就定义了用户名和 UID 之间的对应关系。
x
表示此用户设有密码,但不是真正的密码,真正的密码保存在 /etc/shadow
文件中。为了防止密码的泄露,现 Linux 系统把真正的加密密码串放置在 etc/shadow
文件中,此文件只有 root
用户可以浏览和操作,这样就最大限度地保证了密码的安全。需要注意的是,虽然 x
并不表示真正的密码,但也不能删除,如果删除了 x
,那么系统会认为这个用户没有密码,从而导致只输入用户名而不用输入密码就可以登陆。
UID ,也就是用户ID。每个用户都有唯一的一个 UID,Linux 系统通过 UID 来识别不同的用户。实际上,UID就是一个 0~2^32
之间的数,不同范围的数字表示不同的用户身份。
在 CentOS7 的 Linux 系统中 UID:0
为超管的 uid;
1~999
为系统自行创建的 uid,保留给系统使用;
1000~2^32
为普通用户的 uid。
全称 Group ID
,简称 组ID
,表示用户初始组的 组ID 号。
初始组,指用户登陆时就拥有这个用户组的相关权限。每个用户的初始组只能有一个,通常就是将和此用户的用户名相同的组名作为该用户的初始组。比如说,我们手工添加用户 user001
,在建立用户 user001
的同时,就会建立 user001
组作为 user001
用户的初始组。
附加组,指用户可以加入多个其他的用户组,并拥有这些组的权限。每个用户只能有一个初始组,除初始组外,用户再加入其他的用户组,这些用户组就是这个用户的附加组。附加组可以有多个,而且用户可以有这些附加组的权限。
这个字段没有重要的意义,只用来添加解释。
用户登录后有操作权限的访问目录,称为用户的主目录。
Shell 就是 Linux 的命令解释器,是用户和 Linux 内核之间沟通的桥梁。Linux 系统默认使用的命令解释器 bash(/bin/bash)
,如果我把 lamp
用户的 Shell 命令解释器修改为 /sbin/nologin
,那么,这个用户就不能登录了。
/etc/shadow
, 用于存储 Linux 系统中用户的密码信息
bash用户名 : 加密密码 : 最后一次修改时间 : 最小修改时间间隔 : 密码有效期 : 密码需要变更前的警告天数 : 账号失效时间 : 保留字段
/etc/group
是用户组配置文件
bash组名 : 密码 : GID : 该用户组中的用户列表
useradd
命令用于建立用户账号。如果没有-D
选项的情况下调用,useradd
命令将使用命令行上指定的值加上系统中的默认值创建一个新的用户账户。
GECOS
字段/etc/login.defs
默认值lastlog
和 faillog
数据库设置密码,远程ssh连接是需要密码的,所以想让某个用户登录系统,必须设置密码
bashpasswd test1
[root@localhost ~]# passwd test1
更改用户 test1 的密码 。
新的 密码:123456
无效的密码: 密码是一个回文
重新输入新的 密码:123456
passwd:所有的身份验证令牌已经成功更新。
bash[test1@localhost ~]$ passwd
# 给当前登录用户修改密码,root用户修改密码不需要输入旧密码,普通用户需要输入旧密码
更改用户 test1 的密码 。
为 test1 更改 STRESS 密码。
(当前)UNIX 密码:
新的 密码:
无效的密码: 密码少于 8 个字符
新的 密码:
无效的密码: 密码少于 8 个字符
新的 密码:
无效的密码: 密码未通过字典检查 - 过于简单化/系统化
passwd: 已经超出服务重试的最多次数
一般 Linux 的密码是有复杂度要求的,比如下面这种密码就可以通过:大小写组合、数字、特殊字符组合起来超过8位。
bashLyuRrx@qq.COM LyuRrx@XSWL
这样不需要输入两次密码确认。echo
是打印的意思,有结果输出给 passwd
命令来修改 test1
用户的密码。
bashecho 123456|passwd --stdin test1
这种一般同时改多个 Linux 服务器系统的密码时比较方便。
删除用户
被删除的用户还在登录状态,是不能删除的。被删除的用户,退出登录之后,可以正常删除.
bash[root@localhost ~]# userdel test1
userdel: user test1 is currently used by process 2356
[root@localhost ~]# userdel test1
Linux 删除用户之后,/home/
目录下对应的用户文件夹还在,如果还想加回来这个用户,那么会提示家目录存
在,不会从样板目录 (skel)
中复制任何文件了,通过 ls -a /etc/skel
,可以看到 skel
目录下的内容了。
还提示邮箱文件已经存在,ls /var/spool/mail
下面。
windows 删除用户之后,C:\Users
目录下的用户文件夹也还在。
注意:删除之后的用户,再次创建出来,密码是需要重新设置的。
bashuserdel -r test1
删除用户,并删除用户相关目录。
修改用户信息,修改属性
modify
它有很多选项(参数),-L
是锁定用户,通过命令 -h(或者--help,一个-后面一般跟一个字母即可,两个-后面一般跟完整单词)
,可以查看命令的各种选项的意思,比如 usermod -h
。
bash[root@localhost ~]# usermod -L test1 # 被锁定的用户,下次就登录不上系统了。
[root@localhost ~]# usermod -U test1 # 解锁用户
[root@localhost ~]# lchage -l test1 # 查看用户详细信息
帐号被锁。
至少: 0
至多: 99999
警告: 7
不活跃: 从不
最后一次改变: 2021年07月20日
密码过期: 从不
密码不活跃: 从不
帐号过期: 从不
bash[root@localhost ~]# usermod -s /sbin/nologin test2
[root@localhost ~]# grep -w 'test2' /etc/passwd
test2:x:1001:1001::/home/test2:/sbin/nologin
查看用户详细信息
bash[root@localhost ~]# lchage -l test1
帐号没被锁。
至少: 0
至多: 99999
警告: 7
不活跃: 从不
最后一次改变: 2021年07月20日
密码过期: 从不
密码不活跃: 从不
帐号过期: 从不
所有的用户信息存储在 /etc/passwd
文件中,每创建一个用户该文件就会多一行记录。
查看当前登录了几个用户,或者打开了几个终端
登录主机的两种方式:
windows 默认只能同时一个用户登录,登录另外一个用户,前一个用户就会自动下线。
linux 支持多个用户在多个地方同时登录一个系统,每个用户都有一个终端来控制操作系统。终端的意思就是连接窗口。
bashw
12:15:42 up 21 min, 2 users, load average: 0.00, 0.01, 0.03
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 12:15 6.00s 0.00s 0.00s -bash
root pts/0 192.168.61.1 11:55 6.00s 0.02s 0.01s w
tty1
表示本地登录的、pts/0
表示远程登录的。
/etc/group
是 Linux 系统中记录用户组的信息的文件。
用法:
bashgroupadd [选项] 组
选项:
/etc/login.defs
中的默认值新建组
bash[root@localhost ~]# groupadd test
[root@localhost ~]# tail -1 /etc/group
test:x:1000:
groupadd -g
指定组 ID
bash[root@localhost ~]# groupadd -g 500 test
[root@localhost ~]# tail -1 /etc/group
test:x:500:
删除组,如果组内有用户,会报错,需要先删除主组属于这个组的所有用户(userdel -r 用户名),或者将用户移到其他的组之后在删除组。
bashgroupdel 组名
修改组名,将 test1
组名修改为 test2
bashgroupdel -n test1 test2
修改用户所属的主组
将 test2
用户的主组改为 test1
,然后就可以删除 test2
组了
bash[root@localhost ~]# usermod -g test1 test2
[root@localhost ~]# groupdel test1
将用户添加到多个其他组中,将 test2
用户也添加到 test1
组中
bash[root@localhost ~]# usermod -G test1 test2
本文作者:@Rrx
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!