root用户组的作用是什么?

root用户组的作用是什么?

可能的重复:
属于第 0 组意味着什么?

我想避免使用 SSH root 登录来备份我的远程服务器。因此,我在服务器上设置了一个非 root 用户帐户,并将其置于 root 组下,认为它将拥有与 root 用户相同的权限。但我很快意识到它无法读取未分组为根的文件以及没有组根的读取权限的文件。我现在的问题是:组根有什么特殊用途吗?备份远程服务器(root 或非 root)的常见做法是什么?

答案1

“root”组不具有特殊用途,而是具有通用用途 - 每个文件都必须由用户和组拥有,并且“root”是 root 用户拥有的默认组不属于其他类别的文​​件,例如wheel(半老式)或bin。 (这并不纯粹是事实,而是大量由经验支持的个人观点。)对于备份,正如jordanm所说,您很可能需要使用root用户权限。

答案2

这是一篇已经涵盖的文章您问题的第 0 组部分

常见做法

嗯,我不确定这是否是最好的解决方案,但这就是我所做的,我欢迎评论/改进/建议。

我最近为客户的 drupal 网站设置了远程备份,我的集中备份服务器正在访问远程服务器并进行拉取。我遵循了这个原则。

  • 创建了一个我想用作管理员的用户(在远程),该用户被允许通过 ssh 登录,但不能使用密码,只能通过公钥/私钥登录。 (您确实需要保证其安全并在您的管理位置进行备份)。
  • 在远程禁用 root 通过 ssh 登录。
  • 允许我的管理员用户通过 sudo 成为 root。

请注意,使用此功能的用户是我,并且我不坐在备份服务器上。所以我用它来设置下面的备份。

现在我可以远程管理,root 无法仅登录我的特殊管理员用户并且只能通过密钥证书登录。

  • 在远程和本地创建了一个备份用户(将执行备份的用户),这不是同一个用户名,我给她起的名字有点不寻常(在远程),所以即使获得了密钥,他们也需要也可以猜测远程用户名。用户没有特权,无法访问远程目录(或在没有密码的情况下转储数据库)。

  • 我允许远程上的该用户在 /etc/sudoers myobscurebackupuser ALL=NOPASSWD: /usr/bin/rsync 中运行一个命令

  • 在我的中央备份服务器上,在用户(再次没有特权)下,我存储公钥/私钥和我想要运行的备份脚本。只有此用户才能访问脚本/密钥以进行读取(与 root 完全不同)。

  • 我的备份是两步

  • 步骤 1 'ssh -i /path/to/key/file obscureuser@remote mysqldump [options] | gzip' | gunzip > local_dbdump.sql _注意 前半部分在远程执行(最高可达 gzip),后半部分在本地运行。

  • 步骤2 rsync远程目录结构

密码和数据库转储不存储在远程,它们通过 ssh 连接传递。 db_dump 直接通过管道传输到 gzip,然后通过 stdout 将其发送回。我通过gunzip将其通过管道传输并将stdout直接输出到本地数据库转储文件中。

答案3

当我通常必须以 root 身份工作时,我会执行如下 ssh 命令:

# ssh [email protected] "hostname ; sudo -S some_backup_script.sh"

它允许记录 sudo 活动,并能够使用 sudo 权限来严格限制登录的“sudo”用户可以执行的操作。将此类任务自动化,并为特定的系统用户实现这些特定的功能,这是一种很好的做法。即备份用户可以使用 tar 和 gzip,并写入 /tmp 目录,但拒绝访问 cat、vim 等(本质上是允许其打印敏感数据的命令。)

相关内容