小编Anm*_*ggi的帖子

文件说明 - org.freedesktop.login1.policy

我正在使用 Ubuntu 16.04。

有一个文件位于 /usr/share/polkit-1/actions/org.freedesktop.login1.policy似乎控制有关关机/挂起/休眠选项的权限。

在此文件中,相关选项采用以下格式:

<defaults>
  <allow_any>no</allow_any>
  <allow_inactive>auth_admin_keep</allow_inactive>
  <allow_active>yes</allow_active>
</defaults>
Run Code Online (Sandbox Code Playgroud)

对应于每个动作(关机、暂停等)。
是该文件的完整版本。

我想知道allow_any,allow_inactiveallow_active选项的含义。
它们究竟是什么意思?

我好奇的原因是我想在没有 root(来自 cron)的情况下以非交互方式休眠,但我收到了授权错误

而这些错误似乎可以通过修改这个文件来解决。

shutdown power-management polkit systemd authorization

7
推荐指数
1
解决办法
3315
查看次数

setuid 不工作

我试图了解如何setuid工作。

所以我做了一个虚拟程序,它只打印当前用户:

#include<bits/stdc++.h>
using namespace std;


int main(){
    cout << system("id -a") << "\n";
    cout << system("whoami")  << "\n";
}
Run Code Online (Sandbox Code Playgroud)

my-binary在用户下编译并创建了可执行文件anmol

-rwxrwxr-x 1 anmol anmol 9972 Feb  1 16:54 my-binary
Run Code Online (Sandbox Code Playgroud)

然后,我setuid使用chmod +s以下选项设置选项:

-rwsrwsr-x 1 anmol anmol 9972 Feb  1 16:54 my-binary
Run Code Online (Sandbox Code Playgroud)

如果我正常执行它,我会得到以下输出:

uid=1000(anmol) gid=1000(anmol) groups=1000(anmol),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),116(lpadmin),122(sambashare)
anmol
Run Code Online (Sandbox Code Playgroud)

现在,如果我使用 更改为另一个用户su user2,然后执行它,我会得到:

uid=1001(user2) gid=1001(user2) groups=1001(user2)
user2
Run Code Online (Sandbox Code Playgroud)

当我使用 执行它时sudo ./my-binary,我得到:

uid=1001(root) gid=1001(root) groups=1001(root)
root
Run Code Online (Sandbox Code Playgroud)

据我了解,无论我如何运行它,我不应该每次都得到第一个输出吗?

我在这里检查了其他类似的问题,有些人建议我检查文件系统是否使用nosuid选项挂载,所以我执行mount | …

filesystems users setuid permissions

1
推荐指数
1
解决办法
249
查看次数