具体步骤和命令:
# 1. 创建新用户abcadduser abcvi /etc/passwd # 可以查看到已经默认:aldyuneiv:x:1003:1003:,,,:/home/aldyuneiv:/bin/bashvi /etc/group # 默认:aldyuneiv:x:1003:# 2. 将用户的主目录设置为/abc# 注意:adduser命令通常会自动创建家目录,这里需要手动设置usermod -d /abc abc# 3. 更新用户密码数据库passwd -e abc# 4. 设置用户家目录权限chmod 700 /abc# 5. 设置用户家目录的拥有者和组chown abc:abc /abc# 6. (可选)编辑SSH配置文件,限制用户abc仅能通过SSH访问vi /etc/ssh/sshd_config# 在配置文件中添加以下内容,如果已存在则修改相应的行,以下这些不配置,这样就可以登录默认到它的目录,不限制其他shell操作# Match user abc# ChrootDirectory /abc# AllowTcpForwarding no# X11Forwarding no# ForceCommand /bin/false# 保存并关闭文件# 7. 重启SSH服务以应用更改systemctl restart ssh其它说明:X11Forwarding: 这个选项控制是否允许X11连接(通常是GUI应用程序的图形界面)通过SSH转发。如果设置为yes,那么SSH用户可以运行图形界面应用程序,它们的显示会转发到客户端机器。对于被锁定在特定目录的用户,通常我们会将其设置为no以增加安全性。AllowTcpForwarding: 这个选项控制是否允许TCP端口转发。如果设置为yes,用户可以将客户端的端口转发到服务器上的端口,或者在不同服务器之间转发端口。对于被限制权限的用户,通常也会设置为no以避免潜在的安全风险。ForceCommand: 这个选项用于强制执行指定的命令而不是用户通常的shell。如果设置为/bin/false,那么用户的SSH会话将不会启动任何shell或命令,这在某些情况下用于完全拒绝shell访问。相反,如果你将其设置为/bin/bash,那么用户登录时会直接启动bash shell。注意事项:使用 ForceCommand /bin/bash 会覆盖用户的默认 shell,可能会引发意外行为,尤其是在 chroot 环境中。因此,通常建议使用 internal-sftp 来限制用户仅进行文件传输,或者使用 /bin/false 完全禁止 SSH 登录。当使用 ForceCommand internal-sftp 时,可以结合 ChrootDirectory 将用户锁定在特定目录,进一步增强安全性。
让新增的abc账户拥有docker操作权限
将用户添加到docker组
首先,查看是否有名为docker的组存在:
grep docker /etc/group
如果存在,将用户abc添加到这个组:
sudo usermod -aG docker abc
然后重启shell终端
如果没有权限,执行docker ps则报错:
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.46/containers/json": dial unix /var/run/docker.sock: connect: permission denied
