在zsh中导出USERNAME = root会产生权限错误

时间:2017-06-07 16:24:15

标签: shell zsh

当我跑步时

export USERNAME=root
zsh中的

它给了我以下错误。

zsh: failed to change group ID: operation not permitted

知道为什么吗?

PS:我最初没有手动运行,但是当vim-dispatch插件在vim中运行命令时抛出此错误时,我遇到了这个问题。之后我可以通过在任何zsh shell中运行它来重现这一点。

1 个答案:

答案 0 :(得分:1)

parameter USERNAME对应于shell进程的真实用户ID。修改它还会更改实际用户ID,从而有效地更改正在运行的shell进程的权限。如果原始用户具有足够的权限,这当然是唯一可能的。在大多数情况下,这可能意味着只允许 root 分配给USERNAME,而不允许任何其他帐户。

例如,考虑一下这个shell会话:

root@host# echo $USERNAME $UID $EUID $GID $EGID
root 0 0 0 0
root@host# USERNAME=adaephon
adaephon@host% echo $USERNAME $UID $EUID $GID $EGID
adaephon 1000 1000 1000 1000
adaephon@host% USERNAME=root
zsh: failed to change group ID: operation not permitted
adaephon@host% echo $USERNAME $UID $EUID $GID $EGID
adaephon 1000 1000 1000 1000   

root 开始,我可以轻松地将权限下放到普通用户帐户。但我无法切换回 root ,因为 adaephon 缺少必要的权限。