nix-daemon: Show name of connecting user
This commit is contained in:
parent
77c972c898
commit
0c730887c4
1 changed files with 7 additions and 6 deletions
|
@ -17,6 +17,7 @@
|
|||
#include <sys/un.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
#include <pwd.h>
|
||||
|
||||
using namespace nix;
|
||||
|
||||
|
@ -855,23 +856,23 @@ static void daemonLoop()
|
|||
closeOnExec(remote);
|
||||
|
||||
bool trusted = false;
|
||||
|
||||
pid_t clientPid = -1;
|
||||
|
||||
#if defined(SO_PEERCRED)
|
||||
/* Get the identity of the caller, if possible. */
|
||||
uid_t clientUid = -1;
|
||||
|
||||
ucred cred;
|
||||
socklen_t credLen = sizeof(cred);
|
||||
if (getsockopt(remote, SOL_SOCKET, SO_PEERCRED, &cred, &credLen) == -1)
|
||||
throw SysError("getting peer credentials");
|
||||
|
||||
clientPid = cred.pid;
|
||||
clientUid = cred.uid;
|
||||
if (clientUid == 0) trusted = true;
|
||||
|
||||
printMsg(lvlInfo, format("accepted connection from pid %1%, uid %2%") % clientPid % clientUid);
|
||||
struct passwd * pw = getpwuid(cred.uid);
|
||||
string user = pw ? pw->pw_name : int2String(cred.uid);
|
||||
|
||||
if (cred.uid == 0) trusted = true;
|
||||
|
||||
printMsg(lvlInfo, format("accepted connection from pid %1%, user %2%") % clientPid % user);
|
||||
#endif
|
||||
|
||||
/* Fork a child to handle the connection. */
|
||||
|
|
Loading…
Reference in a new issue