Skip to content

Commit

Permalink
fix(UserManager): pick correct shadow file on Core (#223)
Browse files Browse the repository at this point in the history
  • Loading branch information
st3v3nmw committed Mar 2, 2024
1 parent e67d1c3 commit 397a7a1
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 34 deletions.
65 changes: 33 additions & 32 deletions landscape/client/manager/tests/test_usermanager.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ def setUp(self):
sbarnes:$1$q7sz09uw$q.A3526M/SHu8vUb.Jo1A/:13349:0:99999:7:::
""",
)
self.empty_shadow_file = self.makeFile("")
accepted_types = ["operation-result", "users"]
self.broker_service.message_store.set_accepted_types(accepted_types)
self.plugins = []
Expand Down Expand Up @@ -103,7 +104,7 @@ def handle_callback(result):
],
)

self.setup_environment([], [], None)
self.setup_environment([], [], self.empty_shadow_file)

result = self.manager.dispatch_message(
{
Expand Down Expand Up @@ -161,7 +162,7 @@ def handle_callback(result):
],
)

self.setup_environment([], [], None)
self.setup_environment([], [], self.empty_shadow_file)

result = self.manager.dispatch_message(
{
Expand Down Expand Up @@ -220,7 +221,7 @@ def handle_callback(result):
],
)

self.setup_environment([], [], None)
self.setup_environment([], [], self.empty_shadow_file)

result = self.manager.dispatch_message(
{
Expand Down Expand Up @@ -263,7 +264,7 @@ def handle_callback(result):
],
)

self.setup_environment([], [], None)
self.setup_environment([], [], self.empty_shadow_file)

result = self.manager.dispatch_message(
{
Expand Down Expand Up @@ -298,7 +299,7 @@ def handle_callback2(result, messages):
self.assertEqual(messages, new_messages)
return result

plugin = self.setup_environment([], [], None)
plugin = self.setup_environment([], [], self.empty_shadow_file)
result = self.manager.dispatch_message(
{
"username": "jdoe",
Expand Down Expand Up @@ -367,7 +368,7 @@ def handle_callback(result):
)

users = [("bo", "x", 1000, 1000, "Bo,,,,", "/home/bo", "/bin/zsh")]
self.setup_environment(users, [], None)
self.setup_environment(users, [], self.empty_shadow_file)
result = self.manager.dispatch_message(
{
"username": "jdoe",
Expand Down Expand Up @@ -489,7 +490,7 @@ def handle_callback(result):
("jdoe", "x", 1001, 1000, "John Doe,,,,", "/home/bo", "/bin/zsh"),
]
groups = [("users", "x", 1001, [])]
self.setup_environment(users, groups, None)
self.setup_environment(users, groups, self.empty_shadow_file)
result = self.manager.dispatch_message(
{
"uid": 1001,
Expand Down Expand Up @@ -530,7 +531,7 @@ def handle_callback2(result, messages):
users = [
("jdoe", "x", 1000, 1000, "John Doe,,,,", "/home/bo", "/bin/zsh"),
]
plugin = self.setup_environment(users, [], None)
plugin = self.setup_environment(users, [], self.empty_shadow_file)
result = self.manager.dispatch_message(
{
"username": "jdoe",
Expand Down Expand Up @@ -601,7 +602,7 @@ def handle_callback(result):
("jdoe", "x", 1000, 1000, "John Doe,,,,", "/home/bo", "/bin/zsh"),
]
groups = [("users", "x", 1001, ["jdoe"])]
self.setup_environment(users, groups, None)
self.setup_environment(users, groups, self.empty_shadow_file)
result = self.manager.dispatch_message(
{
"username": "jdoe",
Expand Down Expand Up @@ -654,7 +655,7 @@ def handle_callback(result):
users = [
("jdoe", "x", 1000, 1000, "John Doe,,,,", "/home/bo", "/bin/zsh"),
]
self.setup_environment(users, [], None)
self.setup_environment(users, [], self.empty_shadow_file)
result = self.manager.dispatch_message(
{
"username": "jdoe",
Expand All @@ -675,7 +676,7 @@ def test_many_remove_user_events(self):
("foo", "x", 1000, 1000, "Foo,,,,", "/home/foo", "/bin/zsh"),
("bar", "x", 1001, 1001, "Bar,,,,", "/home/bar", "/bin/zsh"),
]
self.setup_environment(users, [], None)
self.setup_environment(users, [], self.empty_shadow_file)

def handle_callback(ignored):
messages = self.broker_service.message_store.get_pending_messages()
Expand Down Expand Up @@ -751,7 +752,7 @@ def handle_callback(result):
],
)

self.setup_environment([], [], None)
self.setup_environment([], [], self.empty_shadow_file)
result = self.manager.dispatch_message(
{
"username": "jdoe",
Expand Down Expand Up @@ -799,7 +800,7 @@ def handle_callback(result):
users = [
("jdoe", "x", 1000, 1000, "John Doe,,,,", "/home/bo", "/bin/zsh"),
]
self.setup_environment(users, [], None)
self.setup_environment(users, [], self.empty_shadow_file)
result = self.manager.dispatch_message(
{
"username": "jdoe",
Expand Down Expand Up @@ -887,7 +888,7 @@ def handle_callback(result):
users = [
("jdoe", "x", 1000, 1000, "John Doe,,,,", "/home/bo", "/bin/zsh"),
]
self.setup_environment(users, [], None)
self.setup_environment(users, [], self.empty_shadow_file)
result = self.manager.dispatch_message(
{
"username": "jdoe",
Expand Down Expand Up @@ -1042,7 +1043,7 @@ def handle_callback(result):
],
)

self.setup_environment([], [], None)
self.setup_environment([], [], self.empty_shadow_file)
result = self.manager.dispatch_message(
{"username": "jdoe", "operation-id": 99, "type": "lock-user"},
)
Expand Down Expand Up @@ -1223,7 +1224,7 @@ def handle_callback(result):
],
)

self.setup_environment([], [], None)
self.setup_environment([], [], self.empty_shadow_file)
result = self.manager.dispatch_message(
{"username": "jdoe", "operation-id": 99, "type": "unlock-user"},
)
Expand Down Expand Up @@ -1371,7 +1372,7 @@ def handle_callback(result):
],
)

self.setup_environment([], [], None)
self.setup_environment([], [], self.empty_shadow_file)
result = self.manager.dispatch_message(
{"groupname": "bizdev", "type": "add-group", "operation-id": 123},
)
Expand All @@ -1398,7 +1399,7 @@ def handle_callback2(result, messages):
new_messages = message_store.get_pending_messages()
self.assertEqual(messages, new_messages)

plugin = self.setup_environment([], [], None)
plugin = self.setup_environment([], [], self.empty_shadow_file)
result = self.manager.dispatch_message(
{"groupname": "bizdev", "operation-id": 123, "type": "add-group"},
)
Expand Down Expand Up @@ -1433,7 +1434,7 @@ def handle_callback(result):
)

groups = [("sales", "x", 1001, [])]
self.setup_environment([], groups, None)
self.setup_environment([], groups, self.empty_shadow_file)
result = self.manager.dispatch_message(
{"groupname": "bizdev", "type": "add-group", "operation-id": 123},
)
Expand Down Expand Up @@ -1479,7 +1480,7 @@ def handle_callback(result):
self.assertMessages(messages, expected)

groups = [("sales", "x", 50, [])]
self.setup_environment([], groups, None)
self.setup_environment([], groups, self.empty_shadow_file)
result = self.manager.dispatch_message(
{
"groupname": "sales",
Expand Down Expand Up @@ -1512,7 +1513,7 @@ def handle_callback2(result, messages):
self.assertEqual(messages, new_messages)

groups = [("sales", "x", 50, [])]
plugin = self.setup_environment([], groups, None)
plugin = self.setup_environment([], groups, self.empty_shadow_file)
result = self.manager.dispatch_message(
{
"gid": 50,
Expand Down Expand Up @@ -1568,7 +1569,7 @@ def handle_callback2(result):
)

groups = [("sales", "x", 1001, [])]
plugin = self.setup_environment([], groups, None)
plugin = self.setup_environment([], groups, self.empty_shadow_file)
result = plugin.run()
result.addCallback(handle_callback1)
return result
Expand Down Expand Up @@ -1608,7 +1609,7 @@ def handle_callback(result):
("jdoe", "x", 1000, 1000, "John Doe,,,,", "/bin/sh", "/home/jdoe"),
]
groups = [("bizdev", "x", 1001, [])]
self.setup_environment(users, groups, None)
self.setup_environment(users, groups, self.empty_shadow_file)
result = self.manager.dispatch_message(
{
"username": "jdoe",
Expand Down Expand Up @@ -1656,7 +1657,7 @@ def handle_callback(result):
("jdoe", "x", 1000, 1000, "John Doe,,,,", "/bin/sh", "/home/jdoe"),
]
groups = [("bizdev", "x", 1001, [])]
self.setup_environment(users, groups, None)
self.setup_environment(users, groups, self.empty_shadow_file)
result = self.manager.dispatch_message(
{
"username": "jdoe",
Expand Down Expand Up @@ -1693,7 +1694,7 @@ def handle_callback2(result, messages):
("jdoe", "x", 1000, 1000, "John Doe,,,,", "/bin/sh", "/home/jdoe"),
]
groups = [("bizdev", "x", 1001, ["jdoe"])]
plugin = self.setup_environment(users, groups, None)
plugin = self.setup_environment(users, groups, self.empty_shadow_file)
result = self.manager.dispatch_message(
{
"username": "jdoe",
Expand Down Expand Up @@ -1746,7 +1747,7 @@ def handle_callback(result):
("jdoe", "x", 1000, 1000, "John Doe,,,,", "/bin/sh", "/home/jdoe"),
]
groups = [("bizdev", "x", 1001, [])]
self.setup_environment(users, groups, None)
self.setup_environment(users, groups, self.empty_shadow_file)
result = self.manager.dispatch_message(
{
"username": "jdoe",
Expand Down Expand Up @@ -1794,7 +1795,7 @@ def handle_callback(result):
("jdoe", "x", 1000, 1000, "John Doe,,,,", "/bin/sh", "/home/jdoe"),
]
groups = [("bizdev", "x", 1001, ["jdoe"])]
self.setup_environment(users, groups, None)
self.setup_environment(users, groups, self.empty_shadow_file)
result = self.manager.dispatch_message(
{
"username": "jdoe",
Expand Down Expand Up @@ -1830,7 +1831,7 @@ def handle_callback2(result, messages):
("jdoe", "x", 1000, 1000, "John Doe,,,,", "/bin/sh", "/home/jdoe"),
]
groups = [("bizdev", "x", 1001, ["jdoe"])]
plugin = self.setup_environment(users, groups, None)
plugin = self.setup_environment(users, groups, self.empty_shadow_file)
result = self.manager.dispatch_message(
{
"username": "jdoe",
Expand Down Expand Up @@ -1885,7 +1886,7 @@ def handle_callback(result):
("jdoe", "x", 1000, 1000, "John Doe,,,,", "/bin/sh", "/home/jdoe"),
]
groups = [("bizdev", "x", 1001, ["jdoe"])]
self.setup_environment(users, groups, None)
self.setup_environment(users, groups, self.empty_shadow_file)
result = self.manager.dispatch_message(
{
"groupname": "bizdev",
Expand Down Expand Up @@ -1944,7 +1945,7 @@ def handle_callback2(result):
)

groups = [("sales", "x", 1001, ["jdoe"])]
plugin = self.setup_environment([], groups, None)
plugin = self.setup_environment([], groups, self.empty_shadow_file)
result = plugin.run()
result.addCallback(handle_callback1)
return result
Expand All @@ -1971,7 +1972,7 @@ def handle_callback2(result, messages):
self.assertEqual(messages, new_messages)

groups = [("sales", "x", 50, [])]
plugin = self.setup_environment([], groups, None)
plugin = self.setup_environment([], groups, self.empty_shadow_file)
result = self.manager.dispatch_message(
{
"groupname": "sales",
Expand Down Expand Up @@ -2022,7 +2023,7 @@ def handle_callback2(result):
)

groups = [("sales", "x", 1001, [])]
plugin = self.setup_environment([], groups, None)
plugin = self.setup_environment([], groups, self.empty_shadow_file)
result = plugin.run()
result.addCallback(handle_callback1)
return result
Expand Down
4 changes: 2 additions & 2 deletions landscape/client/manager/usermanager.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,13 @@ class UserManager(ManagerPlugin):

name = "usermanager"

def __init__(self, management=None, shadow_file="/etc/shadow"):
def __init__(self, management=None, shadow_file=None):
if IS_CORE:
management = management or SnapdUserManagement()
shadow_file = shadow_file or "/var/lib/extrausers/shadow"
else:
management = management or UserManagement()
shadow_file = shadow_file
shadow_file = shadow_file or "/etc/shadow"

self._management = management
self._shadow_file = shadow_file
Expand Down
1 change: 1 addition & 0 deletions snap/snapcraft.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ apps:
- shutdown
- snapd-control
- system-observe
- account-control
environment:
LANDSCAPE_CLIENT_SNAP: 1
PYTHONPATH: $SNAP/usr/lib/python3/dist-packages:$PYTHONPATH
Expand Down

0 comments on commit 397a7a1

Please sign in to comment.