【问题标题】:Is it possible for a Crystal lang process to change it's user (euid/uid)?Crystal lang 进程是否可以更改其用户(euid/uid)?
【发布时间】:2017-11-29 16:30:04
【问题描述】:

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

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

【问题讨论】:

    标签: process crystal-lang


    【解决方案1】:

    是的,通过使用与 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

    【讨论】:

      猜你喜欢
      • 2020-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-10
      • 1970-01-01
      • 1970-01-01
      • 2017-01-29
      相关资源
      最近更新 更多