- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
所以一个用户有一个主要组,可能属于其他补充组。
假设用户A主要组是G,补充组G+1,G+2
用户A运行一个程序是否可以将组id改为G+1
默认情况下,我知道组 ID 将设置为 G,但是当我在程序下面运行时会抛出错误。erroris:不允许操作,其中 4 是用户所属的补充组。
根据手册错误EPERM 调用进程没有特权(不具备CAP_SETGID能力),gid与调用进程的真实组ID或保存的set-group-ID不匹配。
如何列出进程的能力?
保存的 set-group-id 是什么意思?
int
main ()
{
int x = 0;
char *error = "erroris";
x = setgid (4);
printf ("%d", x);
perror (error);
}
最佳答案
一个问题太多了!
问题一:无法使用setgid
更改为不同的组id
失败原因:用户不是root,用户不是euid 0
,用户没有CAP_SETGID
问题 2:如何列出进程的功能
答案 2:使用 cap_get_proc和 cap_to_text列出进程的能力
问题三:保存的set-group-id是什么意思
答案 3:当您成功使用其中一个 sete*id()
调用时,它会在保存的 id 中记录旧的。这允许您恢复到保存的值,因为这是您可以使用 set 调用更改的 ID 之一。
关于linux setgid()权限错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20387188/
所以一个用户有一个主要组,可能属于其他补充组。 假设用户A主要组是G,补充组G+1,G+2 用户A运行一个程序是否可以将组id改为G+1 默认情况下,我知道组 ID 将设置为 G,但是当我在程序下面运
我有一个 C 程序,它使用组“agrp”的组 id 调用 setgid(),当我尝试运行它时,它显示“不允许操作”。 该程序有以下 ls -la list : -r-xr-s--x 1 root
我有这个 C 程序: #include #include int main(void) { if (chmod("/tmp/foo", 0755 | S_ISGID) private/t
在 Linux 中,您如何递归地提取所有未设置 setgid 位的目录列表? 我知道你能做到 find . -type d /perm g+s 找到所有已设置的目录,但我不清楚如何否定它。或者是否有其
我的任务是为系统上的所有用户列出用户所属的所有组。这个想法是通过 /etc/passwd 并为每个用户打印其组。 [编辑] 成功了: if( getgrouplist(passwd->pw_name,
我一直在努力思考 setuid/setgid 是如何工作的……我想到了这个人为的例子: 用户: 用户A属于A组 用户B属于B组 文件 a.txt 由用户 A 拥有,权限为 rw-rw----- (66
晚上好。 在对服务器进行一些调查后——(在安全方面花了很多时间):我有一个严肃的问题:服务器上 SETGID 位的用途是什么!? 非常感谢您的帮助! 零 有什么区别 drwxrwxrwx drwxr-
我在 C 中创建了一个 setuid 程序。可执行文件如下所示: -r-s-r-s--- 1 root users 13073 Jun 15 21:56 server 我以 userA/users 身
我正在 Apache 中运行一个已编译的 python cgi 脚本(使用 cxfreeze)。该脚本除其他外,调用 os.setuid(some_uid) os.setgid(some_gid) 显
有没有一种简单的方法可以查看正在运行的进程的真实、有效和保存的 UID 和 GID? 最佳答案 将 ps 与 U、G(真实)g、u 一起使用>(有效)? 关于linux id 和 setuid/set
我写了这个函数: void setugid(uid_t uid, gid_t gid) { uid_t euid = geteuid(); gid_t egid = getegid()
我正试图放弃 C 程序中的特权,但无论我做什么,GID 都保持为 0。经过数小时的研究,我一无所知:( #include #include #include #include #include
我刚刚使用 $ sudo chmod g+s filename 更改了我的文件权限,我的文件权限从 drwxr-xr-x 变成了 drwxr-sr- x。如何删除它? 最佳答案 将用于添加权限的 +
需要创建一个带有 setgid 位的目录。通常有以下工作: mkdir("/dummy", 755); chmod("/dummy", 2755); 但是在设置 setgid 位之前,其他进程有可能将
我有一个 Python 脚本,我希望能够以 UID 200 的系统用户 guybrush 和 GID 200 的组 guybrush 运行。 目前我的 Python 脚本(位于 /path/to/sc
我有一个具有以下权限的文件夹: drwxrws--x+ 13 myuser www-data 4096 Mar 20 09:57 project-folder 在此文件夹中,我有一个具有以
我有以下 Python 脚本,我想使用 setuid/setgid 位提供的权限来执行该脚本: #!/usr/bin/env python3 from mypackage.cli import mai
我想使用系统调用setgid,来改变当前进程的组ID。尝试查找此函数,我发现的唯一实现是在 kern_prot.c 中: /* * setgid * * Description: Set gro
我目前正在学习 Linux Essentials 类(class),最近我遇到了 setuid、setgid 和粘滞位权限。 我试着做一个实际的例子并运行命令以将它们应用到我创建的文件和目录上。 我注
我正在使用 setregid(real_gid, effective_gid) 放弃 root 权限。两者都设置为 1000,但是当我运行 id 命令时,组列表中有 root!我该如何删除它? 最佳答
我是一名优秀的程序员,十分优秀!