我正在运行 Fedora 17 KDE x64 和 Qt 4.8.1。
与 Ubuntu 相比,Fedora 不授予第一个创建的用户 sudo 权限,也不会将第一个创建的用户添加到/etc/sudoers
文件中。因此,在 Fedora 17 KDE 上安装程序(尚未测试 Gnome 等)时,它需要root
(不是sudo
)权限。所以,我们有三个级别的权限(按照权限级别降序排列):
1) 根 2) 须藤 3) 用户
在 Fedora 17 KDE 中,如果您有权访问root
用户帐户,您可以通过编辑文件并添加以下行来授予sudo
您想要的任何其他用户权限:/etc/sudoers
user ALL = (ALL) ALL
… 下线:
root ALL = (ALL) ALL
替换user
为您希望授予 sudo 访问权限的帐户的名称。
但并非每个用户都可以访问root
用户的帐户。这就是root
用户可以将超级用户 ( sudo
) 权限授予某些用户帐户的原因。
我想要检查运行应用程序的当前用户是否注册为超级用户。如果是这样,我将使该/usr/bin/kdesu
工具使用/usr/bin/sudo
要求输入sudo
密码的工具。
如果用户不是超级用户,我会/usr/bin/kdesu
保持默认行为 - 它使用/usr/bin/su
需要root
密码的工具。
目前,我正在使用getenv('USER')
(Windows 上的“USERNAME”,但我只需要 Linux 上的此功能)来获取当前用户。可以通过遍历QProcess::systemEnvironment()
列出 HOSTNAME 和 USER 变量的位置来获取当前用户的名称。
解析/etc/sudoers
文件不是一个选项,因为打开文件需要sudo
或root
特权。