06-Linux用户和组管理

关于用户和组的知识

  • 家目录

用户都有家目录:root用户家目录为/root。其他用户的家目录在/home/,如user1的家目录为/home/user1
当我们创建用户时,系统就会自动创建该用户的家目录。
家目录用~表示。cd ~表示移动到家目录中。

  • 用户

用户的信息被保存在/etc/passwd。该文件保存了用户名、用户id、用户所在的组id和shell等信息。
用户都拥有id号。用uid表示。

组的概念:将用户分组。这样就可以将用户按组来管理。
组都有id号。用gid表示。
组分为主组和副组。用户所在的主组只能有一个,副组可以有多个。
默认情况下,创建用户时,自动创建该用户的主组。用户id和主组id相同。

关于用户的命令

last        #查看服务器的用户登录信息(tty表示物理机登录,pts表示远程登录)
whoami      #查看当前登录用户(我是谁)
who         #查看当前登录用户(现在有谁登录这台服务器)
id          #查看当前用户id信息(uid和gid)

管理员用户

管理员用户是一个特殊用户,他拥有很大的权限(仅此于root)。

  • 添加一个管理员用户
[root@localhost ~]$ vim /etc/sudoers
	user1	ALL(ALL)	ALL         #添加管理员user1

#这样就可以拥有很大的权限,比如:
[user1@localhost ~]$ sudo systemctl restart firewalld    #重启服务(在命令前加sudo)

关于用户和组的管理文件

/etc/passwd
cat /etc/passwd

输出:

......
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
user1:x:1000:1000::/home/user1:/bin/bash

这个文件分为多个字段,字段之间用冒号:隔开。
字段分别是 用户名:x表示密码:uid:gid:用户的描述信息:家目录:用户默认的shell
其中第二个字段表示密码,用x占位,真正的密码保存在/etc/shadow文件中。
如果用户默认的shell为/sbin/nologin,表示用户无法登陆。

  • uid

root的UID为0
系统用户UID为1~999
普通用户UID为1000+

/etc/shadow

这个文件保存着用户的密码(散列值)。

  • 查看/etc/shadow
cat /etc/shadow

输出:

root:$6$9tYeXsFoaHYvM.X4$c6g4oDV9A/l7OYerkrYmr1hNJXNccboRWUqnn4sjCvWnsPWNOO1S21OHqR1gTiGaUZhr9OxCYqv4aWugZGe9L1::0:99999:7:::
......

解释:

格式
    $id$salt$encrypted
解释
    id为1,md5加密
    id为5,SHA256加密
    id为6,SHA512加密
    salt为盐值,是对密码进行hash的一个干扰值

注意:
这个文件非常重要,不能让他人得到。
密码最好最好定期更换,且设置复杂密码。
否则容易被他人破解:https://blog.csdn.net/netrookiex/article/details/96431981

用户管理命令

su-切换用户
su user1    #切换到user1(不改变当前所在目录)
su - user1  #切换到user1(改变当前所在目录->user1的家目录)
su			#切换到超级用户root
exit        #退出当前用户
增加用户

创建用户时,系统会自动创建出家目录、邮箱目录(/var/spool/mail/<用户名>)

比如:

useradd user1       #增加用户user1
passwd user1        #修改用户user1的密码

参数:

-d	#指定家目录
-g	#指定基本组(主组)
-G	#指定扩展组(副组)
-u	#指定用户UID
-s	#指定Shell解释器
-e	#指定账户到期时间(YYYY-MM-DD)
-c	#用户描述

比如:

useradd -d /user3 user3     #创建用户user3,并指定家目录为/user3,而不是/home/user3
useradd -s /sbin/nologin user4     #创建用户user4,但是这个用户无法登陆

  • 增加组的命令类似:
groupadd userGroup	#添加组userGroup

修改用户信息
usermod	    #用法、参数与useradd几乎一样
    -L	#锁定用户(禁止登陆)
    -U	#解除锁定(允许登陆)
    -md	#修改家目录,并转移旧数据至新家目录
修改用户密码
passwd user1    #修改user1的密码
    -l	#锁定用户(禁止登陆)
    -u	#解除锁定(允许登陆)
    -d	#使用户可使用空密码(需要系统允许)
    -e	#下次登陆时修改密码
    -S	#显示用户密码配置信息
    --stdin		#从标准输入中读入密码

举例:

echo "123" | passwd --stdin user6       #user6的密码变成了123,而不是用户输入
删除
userdel user6       #删除用户user6
    -r	#同时删除用户相关目录

上一篇:PostgreSQL管理数据库安全


下一篇:使用Python连接Mongodb,对数据库进行操作