【Linux】用户管理

文章目录

  • [1. Intro](#1. Intro)
    • [1.1 保存用户信息的文件](#1.1 保存用户信息的文件)
    • [1.2 用户组](#1.2 用户组)
  • [2. 单个用户管理](#2. 单个用户管理)
    • [2.1 查看用户](#2.1 查看用户)
    • [2.2 创建用户](#2.2 创建用户)
    • [2.3 删除用户](#2.3 删除用户)
    • [1.4 修改用户](#1.4 修改用户)
    • [1.5 切换用户](#1.5 切换用户)
    • [1.6 用户密码修改](#1.6 用户密码修改)
  • [2. 用户组管理](#2. 用户组管理)
    • [2.1 用户组管理](#2.1 用户组管理)
  • [3. sudo权限管理](#3. sudo权限管理)
    • [3.1 安装sudo](#3.1 安装sudo)
  • 参考

1. Intro

1.1 保存用户信息的文件

shell 复制代码
# /etc/passwd:用户基本信息,一行一个账户
username:password:UID:GID:GECOS:home_directory:shell

# /etc/shadow:用户密码和加密密码信息,root才能访问
username:encrypted_password:last_change:min_days:max_days:warning_days:inactive_days:expiration_date:reserved

# /etc/group:用户组信息,用户组信息,一行一个用户组
group_name:password:GID:users

# /etc/gshadow:用户组的加密密码和组管理信息,只有 root 用户可以访问
group_name:encrypted_password:admin_list:member_list

1.2 用户组

用户组:用户的集合。一个用户可以属于多个用户组,一个用户组可包含多个用户。从一个用户所属的多个组中指定一个用户组作为主用户组,其他组为其附加用户组。

主用户组:创建用户时所指定的用户组,如没有指定,则系统默认创建同用户名的用户组(gid和uid通常相同),并将其作为主用户组。文件的权限分为三部分:owner、group、other,创建文件的用户是owner,该用户的主用户组是该文件的group。对文件而言,除了owner和group内的用户,其他用户都是other。

附加用户组:用户所属的除了主用户主之外的用户组。user1属于用户组grp1,文件的group为grp2,user1想以grp1权限访问文件,则只需要把grp2加到自己的附加用户组列表即可。

2. 单个用户管理

2.1 查看用户

shell 复制代码
# 查看当前用户
whoami
id
lslogins -u
echo $USER

# 查看系统所有用户
cut -d: -f1 /etc/passwd  # -d指定分隔符,-f指定提取第几个字段(-f1表示提取分割后的第一个字段)
getent passwd | cut -d: -f1
lslogins | awk '{print $2}'

# 查看系统所有当前登录用户
who | awk '{print $1}'
w | awk 'NR>2 {print $1}'  # NR是awk内置变量表示行号(NR>2:当前行号大于2)
users

2.2 创建用户

用户被创建后,在系统文件/etc/passwd, /etc/shadow, /etc/group,/etc/gshadow中新增与该用户相关的记录,会在主目录中新增文件(.bashrc,.bash_profile,.profile)。

shell 复制代码
<< C
useradd [op] username

-c comment 指定一段注释性描述。
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
-m 创建用户主目录,系统不会自动创建
-g 用户组 指定用户所属的用户组。
-G 用户组,用户组 指定用户所属的附加组。
-s Shell文件 指定用户的登录Shell。
-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
C

# case1:创建用户sam
useradd --d /home/sam -m sam

# case2:创建用户gem,它同时属于adm组和root组,因而它有这两个组的权限
useradd -s /bin/sh -g group --G adm,root gem

2.3 删除用户

shell 复制代码
<< C
userdel [op] username

-r: -r:删除用户主目录
C
# case1:删除用户sam
userdel -r sam

1.4 修改用户

shell 复制代码
<<C
usermod [op] username

op和useradd中的相同
C

# case1: 用户sam登录shell改为/bin/ksh,主目录改为/home/z,用户组改为developer
usermod -s /bin/ksh -d /home/z --g developer sam

1.5 切换用户

shell 复制代码
# 切换到root,需要输入root密码
su -  # -:模拟一个完全登录的会话,即会加载目标用户的环境变量等配置信息
su - root

# 切换到普通用户,需要输入sam密码
su - sam

# 使用sudo来切换用户,只需要输入当前用户密码,而不需要输入目标用户密码,要求当前用户要有sudo权限
sudo -i  # 切换到root,-i使用交互式shell
sudo -i -u sam # 切换到sam,-u指定用户名

1.6 用户密码修改

创建用户后没有设置口令,账户处于锁定状态无法登录,需要给用户设置口令解除锁定状态后才可以登录使用。

shell 复制代码
<<C
passwd [op] username

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

# case1: 当前登录用户为sam,修改sam的密码
passwd 
Old password:****** 
New password:******* 
Re-enter new password:*******

# case2: root修改其他用户密码
passwd sam

# case3:锁定用户sam,让系统不允许sam登录
passwd -l sam

# case4: 移除sam的密码,让用户登录sam时无需密码
passwd -d sam

2. 用户组管理

2.1 用户组管理

bash 复制代码
# 查看所有用户组和gid
getent group | cut -d: -f1,3
cat /etc/group | cut -d: -f1,3

groups  # 查看当前用户所属的用户组
groups username  # 查看指定用户所属的用户组
id  # 查看当前用户UID、GID 以及所属的附加用户组
id username  # 查看指定用户UID、GID 以及所属的附加用户组

groupadd -g 1001 group0  # 添加用户组
# -g 101: 指定gid=101
# group0: group名
groupdel group0  # 删除用户组

groupmod -n group1 group0  # 将用户组group0改名为group1
groupmod -g 1002 group0  # 更改用户组的gid

gpasswd -a user0 group0  # 将用户user0添加到用户组group0
gpasswd -d user0 group0  # 将用户user0从用户组group0中删除

usermod -aG group0 user0  # 将用户user0添加到gruop0附加用户组

newgrp root  # 变更用户的主用户组为root组,前提是root组是当前用户的主用户组或者附加用户组

3. sudo权限管理

sudo可以许授权用户以超级用户(root)或其他用户的身份执行命令。sudo权限由文件/etc/sudoers管理,使用visudo命令将以安全方式打开和编辑该文件。

3.1 安装sudo

centos:7的docker容器中没有安装sudo,需要先安装sudo

参考

ref:https://www.runoob.com/linux/linux-user-manage.html

相关推荐
Ribou7 分钟前
Ubuntu 24.04.2安装k8s 1.33.4 配置cilium
linux·ubuntu·kubernetes
tan180°1 小时前
Boost搜索引擎 网络库与前端(4)
linux·网络·c++·搜索引擎
Mr. Cao code2 小时前
Docker:颠覆传统虚拟化的轻量级革命
linux·运维·ubuntu·docker·容器
抓饼先生2 小时前
Linux control group笔记
linux·笔记·bash
挺6的还2 小时前
25.线程概念和控制(二)
linux
您的通讯录好友3 小时前
conda环境导出
linux·windows·conda
代码AC不AC4 小时前
【Linux】vim工具篇
linux·vim·工具详解
码农hbk4 小时前
Linux signal 图文详解(三)信号处理
linux·信号处理
bug攻城狮4 小时前
Skopeo 工具介绍与 CentOS 7 安装指南
linux·运维·centos
宇宙第一小趴菜4 小时前
08 修改自己的Centos的软件源
linux·运维·centos