具体步骤和命令:

  1. # 1. 创建新用户abc
  2. adduser abc
  3. vi /etc/passwd # 可以查看到已经默认:aldyuneiv:x:1003:1003:,,,:/home/aldyuneiv:/bin/bash
  4. vi /etc/group # 默认:aldyuneiv:x:1003:
  5. # 2. 将用户的主目录设置为/abc
  6. # 注意:adduser命令通常会自动创建家目录,这里需要手动设置
  7. usermod -d /abc abc
  8. # 3. 更新用户密码数据库
  9. passwd -e abc
  10. # 4. 设置用户家目录权限
  11. chmod 700 /abc
  12. # 5. 设置用户家目录的拥有者和组
  13. chown abc:abc /abc
  14. # 6. (可选)编辑SSH配置文件,限制用户abc仅能通过SSH访问
  15. vi /etc/ssh/sshd_config
  16. # 在配置文件中添加以下内容,如果已存在则修改相应的行,
  17. 以下这些不配置,这样就可以登录默认到它的目录,不限制其他shell操作
  18. # Match user abc
  19. # ChrootDirectory /abc
  20. # AllowTcpForwarding no
  21. # X11Forwarding no
  22. # ForceCommand /bin/false
  23. # 保存并关闭文件
  24. # 7. 重启SSH服务以应用更改
  25. systemctl restart ssh
  26. 其它说明:
  27. X11Forwarding: 这个选项控制是否允许X11连接(通常是GUI应用程序的图形界面)通过SSH转发。如果设置为yes,那么SSH用户可以运行图形界面应用程序,它们的显示会转发到客户端机器。对于被锁定在特定目录的用户,通常我们会将其设置为no以增加安全性。
  28. AllowTcpForwarding: 这个选项控制是否允许TCP端口转发。如果设置为yes,用户可以将客户端的端口转发到服务器上的端口,或者在不同服务器之间转发端口。对于被限制权限的用户,通常也会设置为no以避免潜在的安全风险。
  29. ForceCommand: 这个选项用于强制执行指定的命令而不是用户通常的shell。如果设置为/bin/false,那么用户的SSH会话将不会启动任何shell或命令,这在某些情况下用于完全拒绝shell访问。相反,如果你将其设置为/bin/bash,那么用户登录时会直接启动bash shell。
  30. 注意事项:
  31. 使用 ForceCommand /bin/bash 会覆盖用户的默认 shell,可能会引发意外行为,尤其是在 chroot 环境中。因此,通常建议使用 internal-sftp 来限制用户仅进行文件传输,或者使用 /bin/false 完全禁止 SSH 登录。
  32. 当使用 ForceCommand internal-sftp 时,可以结合 ChrootDirectory 将用户锁定在特定目录,进一步增强安全性。

让新增的abc账户拥有docker操作权限

将用户添加到docker组
首先,查看是否有名为docker的组存在:

  1. grep docker /etc/group

如果存在,将用户abc添加到这个组:

  1. sudo usermod -aG docker abc

然后重启shell终端
如果没有权限,执行docker ps则报错:

  1. 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