【Linux系列教程】用户和用户组的管理

一、用户的介绍

  • 多用户多任务的操作系统
    • 用户、用户组
    • 用户组
      • 便于统一设置权限

1.用户的相关文件

    • /etc/passwd
      • 用户信息
        • 格式
        • 用户名:X:uid:gid:说明信息:家目录:shell
          • shell 翻译的作用
            • /bin/bash 默认
            • /sbin/nologin 不允许登录系统
    • /etc/shadow
      • 用户密码信息
      • $6$6iQ2r92GW8UiDSBy$B23qIJIqmASBwZf/FcrlfijEn
        • $6: SHA算法,红帽5.x版本为$1 MD5算法
        • salt 盐,随机数
    • /etc/group
      • 用户组

2.用户类型

    • 管理员用户
      • root, 0
    • 普通用户
      • 1000以后
    • 系统用户
      • 1—-999
      • 保证某应用、软件可正常安装部署、运行
      • 不允许登录系统 /sbin/nologin

3.用户组

    • 基本组
      • 一个用户只能加入一个基本组
    • 附加组/从属组
      • 一个用户加入多个附加组

二、用户的操作

1.创建用户

# useradd [选项] 用户名
[root@localhost ~]# useradd zzj 	#创建一个名为zzj的用户

-u 指定用户的UID

[root@localhost ~]# useradd -u 2000 user01
[root@localhost ~]# id user01	#查看用户ID
uid=2000(user01) gid=2000(user01) 组=2000(user01)

-G 指定用户附加组

[root@localhost ~]# groupadd jishu	#创建jishu组
[root@localhost ~]# useradd -G jishu jerry	#创建jerry用户并且加入到jishu这个组里
[root@localhost ~]# id jerry
uid=2001(jerry) gid=2002(jerry) 组=2002(jerry),2001(jishu)
[root@localhost ~]# grep "jishu" /etc/group
jishu:x:2001:jerry

-g指定用户主组

[root@localhost ~]# groupadd jishu
[root@localhost ~]# useradd -g jishu tom
[root@localhost ~]# id tom
uid=2003(tom) gid=2001(jishu) 组2001(jishu)
[root@localhost ~]# grep "jishu" /etc/group
jishu:x:2001:jerry,tom

-s 指定shell -M 不创建家目录

创建系统账户会用到

[root@localhost ~]# useradd -u 111 -s /sbin/nologin -M www 

[root@localhost ~]# grep "www" /etc/passwd
www:x:111:2003::/home/www:/sbin/nologin

2.设置用户密码

  • 只有root用户可修改其他用户密码
  • 普通用户只能修改自己的密码
# passwd [选项] [用户名]
[root@localhost ~]# passwd zzj 
更改用户 zzj 的密码 。
新的 密码:	#注意!!!Linux系统在输入密码的时候不会显示出来
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

-l 锁定用户

被锁定的用户无法登陆

[root@localhost ~]# passwd -l zzj
锁定用户 zzj 的密码 。
passwd: 操作成功

-u 解锁用户

[root@localhost ~]# passwd -u zzj
解锁用户 zzj 的密码。
passwd: 操作成功

3.切换用户

# su - 用户名
[root@localhost ~]# su - zzj
上一次登录:二 7月 12 11:06:42 CST 2022pts/1 上
[zzj@localhost ~]$ 
[zzj@localhost ~]$ exit
登出

4.删除用户

# useradel 用户名
[root@localhost ~]# userdel -r zzj
[root@localhost ~]# grep "zzj" /etc/passwd
[root@localhost ~]# ls /home/
AA  martin
[root@localhost ~]# ls /var/spool/mail/
AA  martin  rpc

5.用户组

a.创建用户组

# groupadd 用户组名

b.删除用户组

# groupdel 用户组名

6.查看用户信息

a.查看用户ID

[root@localhost ~]# id zzj
uid=1002(zzj) gid=1002(zzj) 组=1002(zzj)

b.查看当前登录账户

[root@localhost ~]# whoami 
root
[root@localhost ~]# su - zzj
[zzj@localhost ~]$ whoami
zzj

c.查看都有哪些用户正在登录

[root@localhost ~]# who
root     :0           2022-07-12 09:05 (:0)
root     pts/0        2022-07-12 11:28 (:0)

7.修改用户信息

# usermod [选项] 用户名 

-u 修改uid

[root@localhost ~]# usermod -u 6666 zzj

-s 修改shell

root@localhost ~]# grep "www" /etc/passwd
www:x:111:2003::/home/www:/sbin/nologin

[root@localhost ~]# usermod -s /bin/bash www

[root@localhost ~]# grep "www" /etc/passwd
www:x:111:2003::/home/www:/bin/bash

-G 修改组

[root@localhost ~]# id jerry
uid=2001(jerry) gid=2002(jerry) 组=2002(jerry),2001(jishu)
[root@localhost ~]# 
[root@localhost ~]# groupadd caiwu
[root@localhost ~]# usermod -G caiwu jerry
[root@localhost ~]# 
[root@localhost ~]# id jerry
uid=2001(jerry) gid=2002(jerry) 组=2002(jerry),2004(caiwu)

-aG 同时添加到其他组

[root@localhost ~]# usermod -aG jishu jerry  
[root@localhost ~]# 
[root@localhost ~]# id jerry
uid=2001(jerry) gid=2002(jerry) 组=2002(jerry),2001(jishu),2004(caiwu)

三、踢出用户组

# gpasswd -d 用户 用户组
[root@localhost ~]# gpasswd -d jerry caiwu
[root@localhost ~]# id jerry
uid=2001(jerry) gid=2002(jerry) 组=2002(jerry),2001(jishu)

四、用户的相关配置文件

  • 默认会在用户家目录下创建几个隐藏文件
[root@localhost ~]# ls -a /home/student/
.   .bash_history  .bash_profile  .cache   .mozilla
..  .bash_logout   .bashrc

1、用户配置文件

  • 创建用户时,系统会自动从/etc/skel目录复制配置文件到用户的家目录
[root@localhost ~]# ls -a /etc/skel/
.  ..  .bash_logout  .bash_profile  .bashrc  .mozilla

[root@localhost ~]# ls -a /home/userB/
.  ..  .bash_logout  .bash_profile  .bashrc  .mozilla

2 .bashrc

  • 在用户打开终端时,自动执行该文件中的操作
  • 典型应用于定义命令别名
    • ~/.bashrc 针对当前用户生效
    • /etc/bashrc 针对所有用户生效

3 .bash_profile

  • 在用户登录系统时, 会自动执行该文件中的操作
  • 典型应用于定义环境变量
    • ~/.bash_profile 针对当前用户生效
    • /etc/profile 针对所有用户生效
[root@localhost ~]# vim /root/.bash_profile

export PS1='\[\e[31;1m\]\u\[\e[0m\]\[\e[32;1m\]\[\e[0m\]:\[\e[35;1m\]\w\[\e[0m\]\n\$'

4 .bash_history

  • 对应用户的历史命令

a.查看历史命令

[root@localhost ~]# history

b.删除历史命令

[root@localhost ~]# history -c

5 .bash_logout

  • 用户登出时提示