问题:

问题:

笔记: 请随意编辑问题——我很难表达它!

问题:

如何模拟普通用户——同时仍然保留管理员/根权限来代表该目标用户执行任何命令?

机制如下:

  1. 允许完整的 root/admin 访问来执行任何命令;
  2. 允许您指定一些“目标群体”;
  3. 允许您指定一些“目标用户”;
  4. 并确保所有命令、脚本等都代表该用户/组执行 - 将“目标用户”和“目标组”设置为所有者...

这些示例显示了如何为每个命令指定pkexec和/或——这正是我试图避免做的事情:sudo

pkexec:

失败:要求管理员在前面加上sudopkexec

  1. sudo pkexec -u TestUser mkdir /home/TestUser/NewFolder

    • 成功:创建文件夹并分配正确的权限
  2. sudo pkexec -u btsync mkdir /opt/btsync

    • 失败:不适用于没有主文件夹的服务帐户:Error changing to home directory /home/btsync: No such file or directory

sudo:

失败:需要管理员加上前缀sudo

1sudo pkexec -u btsync mkdir /opt/btsync

  • 失败:创建文件夹-但指定根所有者。
  • 失败:之后需要修复权限,有时会增加 x3 输入的命令。

以 BTSync 为例,所需功能如下:

  • root@localhost > enterElevatedShell -u btsync
  • btsync@localhost > nano /etc/asound.conf
  • 许多命令是手动输入的。
  • btsync@localhost > exit
  • root@localhost >

或者:

  • root@localhost > stopauthorizationModules
  • root@localhost > sudo -i btsync
  • btsync@localhost > nano /etc/asound.conf
  • 许多命令是手动输入的。
  • btsync@localhost > exit
  • root@localhost >

或者:

  • root@localhost > sudo --setUmask=0222 --setTargetUser=btsync
  • root@localhost > sudo -E mkdir /opt/btsync

常见场景:

笔记:这是在手动的系統管理。

具有 Root 访问权限:

  1. 创建 /home/[用户名]/子文件夹 | w/[用户名] 作为所有者
  2. 创建 /opt/[serviceAccount]Service | w/[serviceAccount] 作为所有者
  3. 创建/修改 /etc/service/[someconfig] | w /[serviceAccount] 为所有者

一般来说,我会执行很多很多命令,而回到翻转权限位是繁琐、不一致的,并且由于管理员健忘或打字错误而导致安全漏洞。

答案1

要创建目录并立即设置所有者:

sudo install -d -o owner -g group -m 755 /path/to/dir

/home如果父目录不能由“所有者”写入,就像 的情况一样,则需要使用安装来完成此操作。

要创建文件,只需使用 sudo

sudo -u owner touch /path/to/file

或者 vi 或者其他什么。

如果您有想要复制并设置所有者的文件,可以再次使用 install。它的工作原理类似于 cp,但有额外的选项

sudo install -o owner -g group -m 640 file /path/to/file

如果您需要创建大量文件、用户和目录等,并且担心一致性,也许您需要查看配置管理系统,如 puppet、chef、ansible 或类似的。设置起来需要多花点功夫,但它的优点是可以重复使用。

相关内容