Hello.

Trying to investigate glib issue, I found out that issetugid() returns true even when ruid == euid && ruid == suid && rgid == egid && rgid == sgid and pfexec was used to launch a program and it was granted some privileges.
This is true even when ruid wasn't changed at all.

So, I'm curious, if it's an intended behavior?

For example:

#include <stdio.h>
#include <unistd.h>

int main()
{
  int is_setuid;
  uid_t ruid, euid, suid; /* Real, effective and saved user ID's */
  gid_t rgid, egid, sgid; /* Real, effective and saved group ID's */

  if(issetugid()){
    printf("Setugid\n");
  }

  suid = ruid = getuid ();
          sgid = rgid = getgid ();
          euid = geteuid ();
          egid = getegid ();
 is_setuid = (ruid != euid || ruid != suid ||
                   rgid != egid || rgid != sgid);
  if(is_setuid) {
   printf("Setugid\n");
  }
  return 0;
}

This check fires even if I have the following line in /etc/security/exec_attr and Desktop Removable Media User profile... Desktop Removable Media User:solaris:cmd:RO::/export/home/leoric/srcs/issetugid:privs=sys_devices So, it's just additional system privilege, uids and gids are not changed...


-------------------------------------------
illumos-discuss
Archives: https://www.listbox.com/member/archive/182180/=now
RSS Feed: https://www.listbox.com/member/archive/rss/182180/21175430-2e6923be
Modify Your Subscription: 
https://www.listbox.com/member/?member_id=21175430&id_secret=21175430-6a77cda4
Powered by Listbox: http://www.listbox.com

Reply via email to