mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-01-22 22:03:43 +03:00
userbdctl: show 'mapped' user range only inside of userns
Outside of userns the concept makes no sense, there cannot be users mapped from further outside. (cherry picked from commit e412fc5e042b8f642bcba42f5c175124583e05ae) (cherry picked from commit aed4e9045656eb7934e3171a6fe442f7df4c4180) (cherry picked from commit 421c23f4fae2522f0ed9fc094836303b8faadc83)
This commit is contained in:
parent
e393e25feb
commit
de65927ffe
@ -23,6 +23,7 @@
|
||||
#include "user-util.h"
|
||||
#include "userdb.h"
|
||||
#include "verbs.h"
|
||||
#include "virt.h"
|
||||
|
||||
static enum {
|
||||
OUTPUT_CLASSIC,
|
||||
@ -130,10 +131,16 @@ static int show_user(UserRecord *ur, Table *table) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
static bool test_show_mapped(void) {
|
||||
/* Show mapped user range only in environments where user mapping is a thing. */
|
||||
return running_in_userns() > 0;
|
||||
}
|
||||
|
||||
static const struct {
|
||||
uid_t first, last;
|
||||
const char *name;
|
||||
UserDisposition disposition;
|
||||
bool (*test)(void);
|
||||
} uid_range_table[] = {
|
||||
{
|
||||
.first = 1,
|
||||
@ -166,6 +173,7 @@ static const struct {
|
||||
.last = MAP_UID_MAX,
|
||||
.name = "mapped",
|
||||
.disposition = USER_REGULAR,
|
||||
.test = test_show_mapped,
|
||||
},
|
||||
};
|
||||
|
||||
@ -180,6 +188,9 @@ static int table_add_uid_boundaries(Table *table, const UidRange *p) {
|
||||
if (!uid_range_covers(p, uid_range_table[i].first, uid_range_table[i].last - uid_range_table[i].first + 1))
|
||||
continue;
|
||||
|
||||
if (uid_range_table[i].test && !uid_range_table[i].test())
|
||||
continue;
|
||||
|
||||
name = strjoin(special_glyph(SPECIAL_GLYPH_ARROW_DOWN),
|
||||
" begin ", uid_range_table[i].name, " users ",
|
||||
special_glyph(SPECIAL_GLYPH_ARROW_DOWN));
|
||||
@ -541,6 +552,9 @@ static int table_add_gid_boundaries(Table *table, const UidRange *p) {
|
||||
uid_range_table[i].last - uid_range_table[i].first + 1))
|
||||
continue;
|
||||
|
||||
if (uid_range_table[i].test && !uid_range_table[i].test())
|
||||
continue;
|
||||
|
||||
name = strjoin(special_glyph(SPECIAL_GLYPH_ARROW_DOWN),
|
||||
" begin ", uid_range_table[i].name, " groups ",
|
||||
special_glyph(SPECIAL_GLYPH_ARROW_DOWN));
|
||||
|
Loading…
x
Reference in New Issue
Block a user