mirror of
https://github.com/tailscale/tailscale.git
synced 2024-12-01 22:15:51 +00:00
6e33d2da2b
I added util/winutil/LookupPseudoUser, which essentially consists of the bits that I am in the process of adding to Go's standard library. We check the provided SID for "S-1-5-x" where 17 <= x <= 20 (which are the known pseudo-users) and then manually populate a os/user.User struct with the correct information. Fixes https://github.com/tailscale/tailscale/issues/869 Fixes https://github.com/tailscale/tailscale/issues/2894 Signed-off-by: Aaron Klotz <aaron@tailscale.com>
32 lines
819 B
Go
32 lines
819 B
Go
// Copyright (c) 2022 Tailscale Inc & AUTHORS All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package winutil
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
const (
|
|
localSystemSID = "S-1-5-18"
|
|
networkSID = "S-1-5-2"
|
|
)
|
|
|
|
func TestLookupPseudoUser(t *testing.T) {
|
|
localSystem, err := LookupPseudoUser(localSystemSID)
|
|
if err != nil {
|
|
t.Errorf("LookupPseudoUser(%q) error: %v", localSystemSID, err)
|
|
}
|
|
if localSystem.Gid != localSystemSID {
|
|
t.Errorf("incorrect Gid, got %q, want %q", localSystem.Gid, localSystemSID)
|
|
}
|
|
t.Logf("localSystem: %v", localSystem)
|
|
|
|
// networkSID is a built-in known group but not a pseudo-user.
|
|
_, err = LookupPseudoUser(networkSID)
|
|
if err == nil {
|
|
t.Errorf("LookupPseudoUser(%q) unexpectedly succeeded", networkSID)
|
|
}
|
|
}
|