我可以假设没有人是65534吗?

时间:2016-01-16 20:35:36

标签: posix user-permissions uid

我正在编写一个setuid root程序。该程序需要打开一个文件进行编写,然后编写一些内容。它仅需要euid 0来打开文件,然后它就可以删除权限。

要删除权限,我可以选择当前的uid。但我正在考虑转向无人:nogroup。

现在,我想知道:我可以假设每个系统上没有人是65534(并且nogroup也是65534)吗?它是由某种标准(可能是POSIX)定义的吗?

2 个答案:

答案 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相同。但这应该可以满足您的需求。