一.创建用户
在 root账户 或 sudo 权限下
1. 创建用户
useradd xiaoyangzi
2.为该用户设置密码或修改密码
passwd xiaoyangzi
3. 将用户加入wheel用户组
在 CentOS 中,属于 wheel 组的用户默认可以使用 sudo 权限。
查看所属用户组:
groups xiaoyangzi
将 xiaoyangzi 加入到wheel用户组
**usermod -aG wheel xiaoyangzi**
从 wheel用户组删除 xiaoyangzi
gpasswd -d xiaoyangzi wheel
4.验证 sudo 权限
切换到该用户:
su - xiaoyangzi
执行:
sudo whoami
如果返回的是 root,说明配置成功。
5.创建密钥对和密码
切换到该用户下
su xiaoyangzi
在该用户下创建密钥对
ssh-keygen -t ecdsa
如图所示:
第一个冒号直接回车即可, 如果想给该秘钥设置密码, 则在箭头指向处输入密码即可
然后将 /home/xiaoyangzi/.ssh 下的 id_ecdsa.pub 放入 authorized_keys 文件中
cat >> authorized_keys < id_ecdsa.pub
如果没有 authorized_keys 文件
则将 id_ecdsa.pub 重命名为 authorized_keys
mv id_ecdsa.pub authorized_keys
此时可以用密钥对和秘钥密码进行登录了, 注意, sudo su 切换到root用户时, 需要用登录密码, 而不是秘钥密码
- 如果不禁止用户密码登录, 则用户可以使用密码也可以使用秘钥登录
二.禁止用户密码登录
vim /etc/ssh/sshd_config
确保一下两项是打开的, PubkeyAuthentication yes 被注释也没问题, 它本身默认值为 yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
然后将 PasswordAuthentication 为 no
重启 ssh 服务:
systemctl restart sshd.service
三.查找某用户下的所有文件
1 查看该用户下的所有文件
find / -user xiaoyangzi
或指定目录
find /dir -user xiaoyangzi
2 查看指定的文件类型
sudo find / -user xiaoyangzi -name "*.txt"
3 查看文件拥有者
ls -l /home/xiaoyangzi | grep xiaoyangzi
四.删除用户
1 删除用户
userdel xiaoyangzi
2 删除用户及其主目录
userdel -r xiaoyangzi
3 检查是否成功删除用户
id xiaoyangzi
五.给文件赋予用户权限
1.将文件拥有者改为 root
sudo chown root:root 文件/文件夹名
或者
600 表示只有拥有者(root)有读写权限,其他人没有任何权限
sudo chmod 600 文件/文件夹名
2.将文件赋予普通拥有者
sudo chown xiaoyangzi:xiaoyangzi 文件/文件夹名
3.给指定用户读权限
sudo setfacl -m u:xiaoyangzi:r 文件名
4.给指定用户读写权限
sudo setfacl -m u:xiaoyangzi:rw 文件
5.给指定用户执行权限
sudo setfacl -m u:xiaoyangzi:x 文件
6.对已有文件夹和子目录递归设置读写权限
X为进入目录的权限(进入/执行)
sudo setfacl -R -m u:xiaoyangzi:rwX 文件夹名
或
该命令对于将来创建的文件也拥有权限
sudo setfacl -d -m u:xiaoyangzi:rwX 文件夹名
ACL 是 Access Control List,访问控制列表
-d = default ACL;用于将来在该目录中新建的文件/目录自动继承 ACL。
7.查看文件/文件夹权限
getfacl 文件/文件名
8.删除某个用户的文件/文件夹权限
setfacl -x u:xiaoyangzi 文件/文件夹名
六.让用户以root权限执行某命令
visudo 是系统级命令权限管理(sudo),某用户可以以 root 权限执行某命令
setfacl 是文件系统级别(ACL), setfacl 就算给 /usr/sbin/nginx 文件的可执行权限,也没有用, 因为不是 root,无法向 root 的进程发信号,也无法写日志
以 nginx 为例, 由于 nginx 为 root 创建, 所以 xiaoyangzi 没有执行权限
1. 打开 sudoers 文件
sudo visudo
2. 添加以下内容到文件末尾
xiaoyangzi ALL=NOPASSWD: /usr/sbin/nginx
或者
xiaoyangzi ALL=(ALL) NOPASSWD: /usr/sbin/nginx
加个(ALL), 显示写法, 默认为 root 更清晰、兼容性好、容易维护。
也可以指定特点的命令, 如:
xiaoyangzi ALL=NOPASSWD: /usr/sbin/nginx -s reload