Crystal lang 进程是否可以更改其用户(euid/uid)?

2024-04-29

如果 Crystal 语言进程以 root 身份运行,是否可以将其 euid/uid 更改为其他内容?例如:

 old_euid, old_ui = Process.euid, Process.uid
 Process.euid = someone_else
 Process.uid  = someone_else

是的,通过使用 libc 的绑定:

lib LibC
  fun setuid(uid_t : Int)
  fun getuid : Int
end

LibC.getuid                         #=> 0
Process.run("whoami", output: true) #=> root

LibC.setuid(uid)
LibC.getuid                         #=> my uid
Process.run("whoami", output: true) #=> my user name

当然,该程序需要以 root 身份运行(即sudo crystal source.cr)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Crystal lang 进程是否可以更改其用户(euid/uid)? 的相关文章

  • 为什么说内核位于进程地址空间中?

    这可能是一个愚蠢的问题 但它突然出现在我的脑海中 所有有关进程地址空间和虚拟内存布局的文本都提到进程地址空间 为内核保留的空间 例如在 32 位系统上 进程地址空间为 4GB 其中 1GB 为 Linux 中的内核保留 在其他操作系统上可能
  • 从提升的子进程获取错误和标准输出

    我创建了一个进程处理程序 它启动两种类型的进程 使用管理员用户名和密码提升的权限 另一种无需输入任何用户名和密码即可正常运行 我正在努力弄清楚如何从提升的进程中获取输出 启动进程的应用程序不需要管理员凭据即可运行 管理员凭据输入到单独的加密
  • Erlang 进程和消息传递架构

    我手头的任务是读取大文件的行 处理它们 并返回有序结果 我的算法是 从评估工作负载的主进程开始 写在文件的第一行 生成工作进程 每个工作进程将使用 pread 3 读取文件的一部分 处理这部分 并将结果发送给 master master接收
  • Linux C++:从 main() 返回是否会导致多线程应用程序终止?

    这个问题看起来可能是重复的 但我找不到 如果我错过了之前的问题 抱歉 在 Java 中 我有大部分经验 如果你的 main 分叉一个线程并立即返回 进程将继续运行 直到进程中的所有 非守护进程 线程都停止 在 C 中 情况似乎并非如此 一旦
  • 无法杀死的控制台窗口

    我正在 Visual C 2008 下使用 GLUT 开发基于 OpenGL 的 2d 模拟 有时当我遇到断言 或未处理的异常并闯入调试器时 GLUT 显示窗口关闭 但控制台窗口保持打开状态 它们只是不能杀了 它们不会出现在任务管理器 进程
  • Windows 中的 Perl Kill(0, $pid) 总是返回 1

    我正在尝试制作一个 Perl 脚本来运行 Windows 中的一组其他程序 我需要能够捕获进程的 stdout stderr 和退出代码 并且需要能够查看进程是否超出了分配的执行时间 现在 我的代码的相关部分如下所示 pid open3 w
  • 玩具外壳管道不正确

    我不会撒谎 这是一个家庭作业问题 然而 就我而言 积分已经消失了 现在 我只是在寻找答案 因为我想我可能疯了 该程序的目标是执行命令ps A grep inputstring wc l其方式与 shell 的操作方式类似 因此 我生成进程
  • Android 应用程序在调用 System.exit(0) 后不会关闭

    在添加 Admob 活动之前 我有一个运行良好的 Android 应用程序 我正在通过终止进程来关闭我的应用程序 调用 System exit 0 我知道这是完成应用程序的最糟糕的解决方案 我正在使用 OpenGL 状态和 libgdx f
  • Process.Start 返回 null 时查找进程 ID?

    如果我尝试通过调用打开图像文件 视频或网站Process Start filepath 直接 那么它通常会成功 但是 Process Start 的返回值有时将为 null 正如这里所讨论的 https stackoverflow com
  • java中如何销毁进程

    我写了下面的代码 要从 Java 应用程序运行 bat 文件 我使用 process exec 但蝙蝠有时可能会挂起 所以我需要为此过程设置一个超时 我启动一个新线程并在线程中新建一个进程 我在线程中设置超时 并在超时时杀死线程 但我发现超
  • 如何获取Linux中进程或端口的网络带宽使用情况

    我想获取每个进程的网络带宽使用情况 我找了很多这方面的资料 比如iftop nethogs http nethogs sourceforge net Linux进程浏览器 http sourceforge net projects proc
  • 获取后台进程的退出代码

    我有一个从我的主 bourne shell 脚本中调用的命令 CMD 该命令需要很长时间 我想修改脚本如下 作为后台进程并行运行命令 CMD CMD 在主脚本中 有一个循环每隔几秒监视生成的命令 该循环还向标准输出回显一些消息 指示脚本的进
  • 如何在 ruby​​ 中后台运行多个外部命令

    给定这个 Unix shell 脚本 test sh bin sh sleep 2 sleep 5 sleep 1 wait 时间 test sh real 0m5 008s user 0m0 040s sys 0m0 000s 如何在 U
  • 如何停止supervisord.conf文件中指定的单个程序? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想使用supervisor来管理几个进程 我已经在supervisord conf文件中进行了更改 我想稍后停止一些程序 我尝试使用 s
  • 如何触发并忘记子进程?

    我有一个长时间运行的进程 我需要它来启动另一个进程 该进程也会运行很长一段时间 我只需要开始它 然后就完全忘记它 我设法通过从 Ruby 编程 一书中获取一些代码来完成我需要的操作 但我想找到最好 正确的方法 并了解发生了什么 这是我最初得
  • CreateProcess error=2,系统找不到指定的文件

    我正在用java编写一个程序 它将执行winrar并解压一个jar文件 放在h myjar jar进入文件夹h new 我的java代码是这样的 import java io File import java io IOException
  • 如何查找或计算Linux进程的页表大小和其他内核占用?

    我怎样才能知道 Linux 进程页表有多大 以及任何其他可变大小的进程统计 如果您真的对页表感兴趣 请执行以下操作 cat proc meminfo grep PageTables PageTables 24496 kB
  • 如何使用python检查任务管理器中某个进程是否正在运行

    我在 python 中有一个函数 当任务管理器中出现某个进程 例如 proc exe 时 该函数应该开始运行 如何使用 python 监控任务管理器中运行的进程 这是我改编的东西微软 http www microsoft com techn
  • Process.Start 阻塞

    我正在调用 Process Start 但它会阻止当前线程 pInfo new ProcessStartInfo C Windows notepad exe Start process mProcess new Process mProce
  • 如何在拥有句柄时检查给定进程是否正在运行

    我在用ShellExecuteEx启动应用程序 成功开始阅读后TShellExecuteInfo hProcess获取已启动进程的句柄 我想定期检查我的应用程序启动的进程是否仍在运行 两个或多个同名进程可以同时运行 我想确保我的应用程序正在

随机推荐