diff --git a/init/init.cpp b/init/init.cpp index 3c121e81b..7c37d28b3 100644 --- a/init/init.cpp +++ b/init/init.cpp @@ -585,6 +585,8 @@ int main(int argc, char** argv) { mount("devpts", "/dev/pts", "devpts", 0, NULL); #define MAKE_STR(x) __STRING(x) mount("proc", "/proc", "proc", 0, "hidepid=2,gid=" MAKE_STR(AID_READPROC)); + gid_t groups[] = { AID_READPROC }; + setgroups(arraysize(groups), groups); mount("sysfs", "/sys", "sysfs", 0, NULL); mount("selinuxfs", "/sys/fs/selinux", "selinuxfs", 0, NULL); mknod("/dev/kmsg", S_IFCHR | 0600, makedev(1, 11)); diff --git a/init/service.cpp b/init/service.cpp index 6460e71e4..92f1615de 100644 --- a/init/service.cpp +++ b/init/service.cpp @@ -233,10 +233,8 @@ void Service::SetProcessAttributes() { PLOG(FATAL) << "setgid failed for " << name_; } } - if (!supp_gids_.empty()) { - if (setgroups(supp_gids_.size(), &supp_gids_[0]) != 0) { - PLOG(FATAL) << "setgroups failed for " << name_; - } + if (setgroups(supp_gids_.size(), &supp_gids_[0]) != 0) { + PLOG(FATAL) << "setgroups failed for " << name_; } if (uid_) { if (setuid(uid_) != 0) {