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
相关推荐
aiden:)10 小时前
App UI 自动化环境搭建指南
运维·python·ui·appium·自动化
耐达讯通信技术10 小时前
耐达讯自动化RS485与Profinet双向奔赴,伺服驱动器连接“稳稳拿捏”
运维·人工智能·物联网·网络协议·自动化·信息与通信
一张假钞10 小时前
Windows 11主机Ubuntu 24.04虚机共享目录权限问题
linux·运维·ubuntu
耐达讯通信技术10 小时前
嘎嘎厉害!耐达讯自动化RS485转Profinet网关就是食品温控的“天选之子”
运维·服务器·网络·人工智能·网络协议·自动化·信息与通信
taxunjishu11 小时前
CC-Link IE FB 转 DeviceNet 实现欧姆龙 PLC 与松下机器人在 SMT 生产线锡膏印刷环节的精准定位控制
运维·人工智能·物联网·自动化·区块链
小妖66612 小时前
mac 安装 nginx
运维·nginx·macos
小白考证进阶中17 小时前
终于赶在考试券过期前把Oracle OCP证书考下来了!
运维·数据库·oracle·dba·开闭原则·数据库管理员
keep__go18 小时前
postgresql9.2.4 跨版本升级14.6
linux·运维·数据库·postgresql
Doris_LMS18 小时前
Git的强软硬回退(三)
运维·服务器·数据库·git·idea
(Charon)18 小时前
基于 epoll 的高并发服务器原理与实现(对比 select 和 poll)
运维·服务器