我正在编写一个setuid root程序。该程序需要打开一个文件进行编写,然后编写一些内容。它仅需要euid 0来打开文件,然后它就可以删除权限。
要删除权限,我可以选择当前的uid。但我正在考虑转向无人:nogroup。
现在,我想知道:我可以假设每个系统上没有人是65534(并且nogroup也是65534)吗?它是由某种标准(可能是POSIX)定义的吗?
答案 0 :(得分:2)
你做不到。 nobody
has had at least a few different IDs across distros and time:
历史上,用户“nobody”被分配了几个UID -2 操作系统,尽管其他值如2 ^(15)-1 = 32,767 也在使用,例如OpenBSD。用于16位之间的兼容性 和32位UID,许多Linux发行版现在将其设置为2 ^(16)-2 = 65,534; Linux内核默认在a时返回此值 32位UID不适合16位系统的返回值 调用。另一种约定是指定范围的最后一个UID 静态分配给系统使用(0-99)到nobody:99。
答案 1 :(得分:0)
也许您可以使用/*
* @ORM\ManyToMany(targetEntity="Sitetheory\CoreBundle\Entity\Bar", inversedBy="foos", cascade={"persist"})
* @ORM\JoinTable(name="foo_bar")
*/
protected $bars;
的值。
我不确定它是否与“ nobody”的UID相同。但这应该可以满足您的需求。