|
@@ -102,6 +102,8 @@ void dropPrivileges(std::string homeDir) {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+ createOwnedHomedir(homeDir, targetUser);
|
|
|
+
|
|
|
if (prctl(PR_CAP_AMBIENT, PR_CAP_AMBIENT_IS_SET, CAP_NET_RAW, 0, 0) < 0) {
|
|
|
// Kernel has no support for ambient capabilities.
|
|
|
notDropping(homeDir);
|
|
@@ -113,8 +115,6 @@ void dropPrivileges(std::string homeDir) {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- createOwnedHomedir(homeDir, targetUser);
|
|
|
-
|
|
|
if (setCapabilities((1 << CAP_NET_ADMIN) | (1 << CAP_NET_RAW) | (1 << CAP_SETUID) | (1 << CAP_SETGID)) < 0) {
|
|
|
fprintf(stderr, "ERROR: failed to set capabilities (not running as real root?)\n");
|
|
|
exit(1);
|