Example #1
0
        // On disposal, cease to be root.
        public void Dispose()
        {
            setreuid(this.previousUid, this.previousUid);
            setregid(this.previousGid, this.previousGid);

            this.previousUid = 0;
            this.previousGid = 0;
        }
Example #2
0
        // Revert from root.
        private static void Unrootify()
        {
            // if (previousUid == 0)
            //    throw new InvalidOperationException("Cannot unrootify unroot.");

            setreuid(previousUid, previousUid);
            setregid(previousGid, previousGid);
            previousUid = 0;
            previousGid = 0;
        }
Example #3
0
        // Become root.
        internal RootPrivilege()
        {
            this.previousUid = getuid();
            this.previousGid = getgid();

            setreuid(0, 0);
            setregid(0, 0);

            this.IsRoot = true;
        }
Example #4
0
        // Become root.
        internal RootPrivilege()
        {
            if (getuid() == 0)
            {
                throw new InvalidOperationException("Cannot rootify root.");
            }

            this.previousUid = getuid();
            this.previousGid = getgid();

            setreuid(0, 0);
            setregid(0, 0);
        }
Example #5
0
        // Become root.
        private static void Rootify()
        {
            if (previousUid != 0)
            {
                throw new InvalidOperationException("Cannot rootify root.");
            }

            previousUid = getuid();
            previousGid = getgid();
            setreuid(0, 0);
            setregid(0, 0);

            // Console.WriteLine ($"uid={getuid()} gid={getgid()} euid={geteuid()} egid={getegid()}");
        }
Example #6
0
 public static extern int fchownat(int dirfd, byte *path, uid_t owner, gid_t group, int flags);
Example #7
0
 public static extern int lchown(byte *path, uid_t owner, gid_t group);
Example #8
0
 public static extern int fchown(int fd, uid_t owner, gid_t group);
Example #9
0
 public static extern int setresgid(gid_t rgid, gid_t egid, gid_t sgid);
Example #10
0
 public static extern int setegid(gid_t gid);