nss-mymachines: map userns users of containers to real user names
Given a container "foo", that maps user id $UID to container user, using user namespaces, this NSS module extenstion will now map the $UID to a name "vu-foo-$TUID" for the translated UID $UID. Similar, userns groups are mapped to "vg-foo-$TGID" for translated GIDs of $GID. This simple change should make userns users more discoverable. Also, given that many tools like "adduser" check NSS before allocating a UID, should lower the chance of UID range conflicts between tools.
This commit is contained in:
+31
-2
@@ -24,6 +24,9 @@
|
||||
#include <nss.h>
|
||||
#include <netdb.h>
|
||||
#include <resolv.h>
|
||||
#include <pwd.h>
|
||||
#include <grp.h>
|
||||
|
||||
|
||||
#define NSS_GETHOSTBYNAME_PROTOTYPES(module) \
|
||||
enum nss_status _nss_##module##_gethostbyname4_r( \
|
||||
@@ -109,7 +112,8 @@ enum nss_status _nss_##module##_gethostbyname_r( \
|
||||
NULL, \
|
||||
NULL); \
|
||||
return ret; \
|
||||
}
|
||||
} \
|
||||
struct __useless_struct_to_allow_trailing_semicolon__
|
||||
|
||||
#define NSS_GETHOSTBYADDR_FALLBACKS(module) \
|
||||
enum nss_status _nss_##module##_gethostbyaddr_r( \
|
||||
@@ -125,4 +129,29 @@ enum nss_status _nss_##module##_gethostbyaddr_r( \
|
||||
buffer, buflen, \
|
||||
errnop, h_errnop, \
|
||||
NULL); \
|
||||
}
|
||||
} \
|
||||
struct __useless_struct_to_allow_trailing_semicolon__
|
||||
|
||||
#define NSS_GETPW_PROTOTYPES(module) \
|
||||
enum nss_status _nss_##module##_getpwnam_r( \
|
||||
const char *name, \
|
||||
struct passwd *pwd, \
|
||||
char *buffer, size_t buflen, \
|
||||
int *errnop) _public_; \
|
||||
enum nss_status _nss_mymachines_getpwuid_r( \
|
||||
uid_t uid, \
|
||||
struct passwd *pwd, \
|
||||
char *buffer, size_t buflen, \
|
||||
int *errnop) _public_
|
||||
|
||||
#define NSS_GETGR_PROTOTYPES(module) \
|
||||
enum nss_status _nss_##module##_getgrnam_r( \
|
||||
const char *name, \
|
||||
struct group *gr, \
|
||||
char *buffer, size_t buflen, \
|
||||
int *errnop) _public_; \
|
||||
enum nss_status _nss_##module##_getgrgid_r( \
|
||||
gid_t gid, \
|
||||
struct group *gr, \
|
||||
char *buffer, size_t buflen, \
|
||||
int *errnop) _public_
|
||||
|
||||
Reference in New Issue
Block a user