Centos 用户管理

一.创建用户

在 root账户 或 sudo 权限下

1. 创建用户

bash 复制代码
useradd xiaoyangzi

2.为该用户设置密码或修改密码

bash 复制代码
passwd xiaoyangzi

3. 将用户加入wheel用户组

在 CentOS 中,属于 wheel 组的用户默认可以使用 sudo 权限。

查看所属用户组:

bash 复制代码
groups xiaoyangzi

将 xiaoyangzi 加入到wheel用户组

bash 复制代码
**usermod -aG wheel xiaoyangzi**

从 wheel用户组删除 xiaoyangzi

bash 复制代码
gpasswd -d xiaoyangzi wheel

4.验证 sudo 权限

切换到该用户:

bash 复制代码
su - xiaoyangzi

执行:

bash 复制代码
sudo whoami

如果返回的是 root,说明配置成功。

5.创建密钥对和密码

切换到该用户下

bash 复制代码
su xiaoyangzi

在该用户下创建密钥对

bash 复制代码
ssh-keygen -t ecdsa

如图所示:

第一个冒号直接回车即可, 如果想给该秘钥设置密码, 则在箭头指向处输入密码即可

然后将 /home/xiaoyangzi/.ssh 下的 id_ecdsa.pub 放入 authorized_keys 文件中

bash 复制代码
cat >> authorized_keys < id_ecdsa.pub

如果没有 authorized_keys 文件
则将 id_ecdsa.pub 重命名为 authorized_keys

bash 复制代码
mv id_ecdsa.pub authorized_keys

此时可以用密钥对和秘钥密码进行登录了, 注意, sudo su 切换到root用户时, 需要用登录密码, 而不是秘钥密码

  • 如果不禁止用户密码登录, 则用户可以使用密码也可以使用秘钥登录

二.禁止用户密码登录

bash 复制代码
vim /etc/ssh/sshd_config

确保一下两项是打开的, PubkeyAuthentication yes 被注释也没问题, 它本身默认值为 yes

conf 复制代码
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

然后将 PasswordAuthentication 为 no

重启 ssh 服务:

bash 复制代码
systemctl restart sshd.service

三.查找某用户下的所有文件

1 查看该用户下的所有文件

bash 复制代码
find / -user xiaoyangzi

或指定目录

bash 复制代码
find /dir -user xiaoyangzi

2 查看指定的文件类型

bash 复制代码
sudo find / -user xiaoyangzi -name "*.txt"

3 查看文件拥有者

bash 复制代码
ls -l /home/xiaoyangzi | grep xiaoyangzi

四.删除用户

1 删除用户

bash 复制代码
userdel xiaoyangzi

2 删除用户及其主目录

bash 复制代码
userdel -r xiaoyangzi

3 检查是否成功删除用户

bash 复制代码
id xiaoyangzi

五.给文件赋予用户权限

1.将文件拥有者改为 root

bash 复制代码
sudo chown root:root 文件/文件夹名

或者

600 表示只有拥有者(root)有读写权限,其他人没有任何权限

bash 复制代码
sudo chmod 600 文件/文件夹名

2.将文件赋予普通拥有者

bash 复制代码
sudo chown xiaoyangzi:xiaoyangzi 文件/文件夹名

3.给指定用户读权限

bash 复制代码
sudo setfacl -m u:xiaoyangzi:r 文件名

4.给指定用户读写权限

bash 复制代码
sudo setfacl -m u:xiaoyangzi:rw 文件

5.给指定用户执行权限

bash 复制代码
sudo setfacl -m u:xiaoyangzi:x 文件

6.对已有文件夹和子目录递归设置读写权限

X为进入目录的权限(进入/执行)

bash 复制代码
sudo setfacl -R -m u:xiaoyangzi:rwX 文件夹名

该命令对于将来创建的文件也拥有权限

bash 复制代码
sudo setfacl -d -m u:xiaoyangzi:rwX 文件夹名

ACL 是 Access Control List,访问控制列表
-d = default ACL;用于将来在该目录中新建的文件/目录自动继承 ACL。

7.查看文件/文件夹权限

bash 复制代码
getfacl 文件/文件名

8.删除某个用户的文件/文件夹权限

bash 复制代码
setfacl -x u:xiaoyangzi 文件/文件夹名

六.让用户以root权限执行某命令

visudo 是系统级命令权限管理(sudo),某用户可以以 root 权限执行某命令

setfacl 是文件系统级别(ACL), setfacl 就算给 /usr/sbin/nginx 文件的可执行权限,也没有用, 因为不是 root,无法向 root 的进程发信号,也无法写日志

以 nginx 为例, 由于 nginx 为 root 创建, 所以 xiaoyangzi 没有执行权限

1. 打开 sudoers 文件

bash 复制代码
sudo visudo

2. 添加以下内容到文件末尾

bash 复制代码
xiaoyangzi ALL=NOPASSWD: /usr/sbin/nginx

或者

bash 复制代码
xiaoyangzi ALL=(ALL) NOPASSWD: /usr/sbin/nginx

加个(ALL), 显示写法, 默认为 root 更清晰、兼容性好、容易维护。

也可以指定特点的命令, 如:

bash 复制代码
xiaoyangzi ALL=NOPASSWD: /usr/sbin/nginx -s reload
相关推荐
乘云数字DATABUFF4 天前
5分钟部署开源APM Databuff:OpenTelemetry全链路追踪入门实战
运维·后端
荣--6 天前
一键部署不是为了省时间 —— 它是把"买来的 PaaS"变成"自己的平台"的拐点
运维·zabbix·工程化·一键部署·平台化·边界设计
江华森6 天前
动手实战学 Docker — 从零到集群编排完全指南
运维
Avan_菜菜7 天前
FRP 内网穿透完整实战:从 HTTP 映射到 HTTPS 自签代理
运维·nginx·https
SelectDB8 天前
Litefuse 开源并推出单进程轻量模式,25 秒就能跑起来的 Agent 可观测与评估平台
运维·后端·自动化运维
XIAOHEZIcode9 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户03284722207010 天前
如何搭建本地yum源(上)
运维
大树8813 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠13 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质13 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务