问题标签 [setuid]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
1698 浏览

linux - 我如何以“正确的方式”将低编号端口声明为非 root

我有一个脚本,我想作为守护进程运行,监听低编号端口(< 1024)

脚本在 python 中,但 perl 中的答案也是可以接受的。

该脚本正在使用启动脚本中的start-stop-daemon进行守护,这可能会使答案复杂化

我真正(认为)不想要的是输入 ps -few 并看到该进程在其行上以“root”运行。

我该怎么做?

(从我对系统调用的了解不足的角度来看,我可以看到 3 条途径,

  1. 以 root 身份运行脚本(没有 --user/--group/--chuid 到 start-stop-daemon),并在它声明端口后让它降级它的用户
  2. 在脚本上设置 root (chmod u+s),并以运行用户身份运行脚本,(通过 --user/--group/--chuid 到 start-stop-daemon,启动脚本仍然必须调用为root),在脚本中,获取 root 权限,声明端口,然后恢复为普通用户
  3. 我不知道的其他事情

)

0 投票
1 回答
1033 浏览

php - 在 PHP setuid 脚本中获取调用用户 ID

我在 Linux 上有一个 PHP 脚本,其中设置了粘性位,因此它作为文件所有者执行。出于授权目的,如何获取调用进程的用户 ID?

上下文:我在服务器上有两个应用程序,并且希望一个应用程序从另一个请求一些信息。出于这个原因,另一个提供了一个带有 setuid 的脚本,但我想确保它只能由那个调用。

0 投票
1 回答
2205 浏览

linux - 使用 cgi-perl 脚本的无密码 SSH

这是我第一次尝试 cgi-perl 脚本。我在我的(root 用户)本地机器和远程机器之间设置了 SSH 密钥。我正在尝试在远程机器上运行命令并在本地计算机托管的网页上显示输出。该脚本从命令行运行良好,但是从网页调用时会引发 SSH 密钥错误,因为运行该脚本的用户是 apache 而不是 root。有没有办法解决这个问题?

0 投票
1 回答
131 浏览

unit-testing - 特权操作的自动化测试

您如何对需要与持续集成环境中存在的不同权限级别的代码进行单元/集成测试?

在我的非 root、CCRB驱动的构建环境中,我有一些实用程序函数假定在我的自动构建环境中不具备的权限:root 权限或特殊帐户和组。(例如,一个功能将UID/GID和补充组更改为指定帐户,更改根目录和当前工作目录,以及与任何控制终端分离。)

当然,我们可以手动运行测试,但是我们可能会忘记运行它们。

其他人是如何解决这个问题的?

0 投票
2 回答
1803 浏览

python - 更改为另一个用户时设置环境

我有一个 bash 备份脚本以 root (cron) 身份运行,它将某些任务委托给不同用户拥有的其他特定 bash 脚本。(简单的例子,原则是,有些事情必须以root身份完成,不同的任务被委派给具有适当环境的用户(oracle,amazon,...)

该脚本本身作为用户 oracle 执行一些任务:

当我尝试在 python 中模仿这种行为时,我想出了以下内容(从 cron 作为 root 开始)

在 bash 中使用 su - 时,会调用一个真正的新 shell,并设置该用户的所有环境变量。如何为我的 python 脚本改进这一点?有我可以遵循的标准食谱吗?我正在考虑环境变量,umask,...

如果这可能很重要,环境是 Solaris。

0 投票
1 回答
1229 浏览

setuid - sgid 位安全性

我在一个共享的 Web 开发环境中工作。我的团队经常在服务器上创建新文件和文件夹,但之后他们总是需要更改组权限。

对于新文件的默认权限,我在 bashrc 中设置了 umask 002。但是对于新目录的默认权限:

$ sudo chmod g+s /var/www

/var/www 中的新目录现在显示为:

drwxrwsr-x 2 用户 www-data 4096 2010-10-14 08:49 测试

现在,此设置可以正常工作,即默认情况下新文件和目录是组可写的。在此设置中使用 sgid 是否存在任何安全问题?格外谨慎,因为我不完全了解 setuid 风险。

0 投票
1 回答
291 浏览

security - windows下删除进程权限

出于安全原因,我正在寻找一种放弃进程权限的方法。我想以具有特权的用户身份开始,以受限用户身份结束。

例如,我希望我的 Web 服务器在受限用户下运行,因为我仍然想在端口 80 上监听。

我怎么能在 Windows 下做这样的事情。类似于 Unix 的东西:

我怎样才能在 Windows 下做类似的事情?

编辑:当然我知道 Windows 没有 fork 或 chroot,但我正在寻找放弃各种权利,尤其是用户 - 最佳实践。

0 投票
1 回答
1403 浏览

c - setuid 包装器的注意事项

我编写的 Python 扩展需要 root 访问权限才能执行单个硬件初始化调用。我宁愿不为我的扩展程序中的这个调用以 root 身份运行整个脚本,所以我想编写一个包装器来执行此初始化,然后再降低到用户权限并运行实际脚本。

我打算通过运行这个包装器sudo,例如

我正在考虑类似(更新以修复几个错误):

所以我有三个问题:

  1. 这看起来很正常吗?我通常不需要弄乱 *uid() 调用,所以我不熟悉常见的陷阱。这个execvp电话看起来也有点奇怪,但据我所知,它在正确的地方有参数)。
  2. execvp手册页说“应用程序不应直接访问环境数组” - 这是否使getenv调用成为一个坏主意?
  3. 有没有比 更好的电话execvp,所以我可以做sudo devwrap somescript.py(注意没有“python”)
0 投票
2 回答
1137 浏览

bit - setuid 位结果

我有一个要设置 uid 位的 shell 脚本。我将所有者设置为 root 并设置 uid 位。我在 shell 中添加了“whoami”以检查它是否正常工作,但是当我执行脚本时,whoami 返回的是用户名,而不是 root。那么这是错误的,对吧?如果 uid 设置正确,我应该获得 root 权限,对吗?

0 投票
1 回答
636 浏览

permissions - setuid 和 sudo 的效果一样吗?

设置 uid 是否与 sudo 具有相同的效果?如果 setuid 的可执行文件用 popen 打开 whoami 会发生什么?我得到“根”吗?