我有一个应用程序,可以在用户被分享到共享用户帐户时运行,也可以不运行。我想要可靠地确定谁是真正的用户对于某种“荣誉系统”ACL。我认为通过跟踪父/组/会话进程id,pstree
命令可以实现某种方式,但我不确定如何做到最好,或者是否有更好的替代方法。我最初试过getlogin()
。如果使用./myapp
,则该方法有效,但会失败,并显示'cat input | 。/ myapp`(因为“控制终端”是共享帐户拥有的管道)。通过sudo识别当前用户的最可靠方法
我宁可不相信环境变量,因为我不希望我的“荣誉系统”完全受到unset
的阻碍,当时信息在别处仍然可用。
我还想避免强制在密码数据库中查找,因为这是远程RPC(NIS或LDAP),我很确定wtmp
已经包含我需要的信息。