mirror of
https://github.com/opnsense/src.git
synced 2026-04-28 01:28:00 -04:00
69 lines
1.4 KiB
Awk
69 lines
1.4 KiB
Awk
# id.awk --- implement id in awk
|
|
# Arnold Robbins, arnold@gnu.org, Public Domain
|
|
# May 1993
|
|
|
|
# output is:
|
|
# uid=12(foo) euid=34(bar) gid=3(baz) \
|
|
# egid=5(blat) groups=9(nine),2(two),1(one)
|
|
|
|
BEGIN \
|
|
{
|
|
if ((getline < "/dev/user") < 0) {
|
|
err = "id: no /dev/user support - cannot run"
|
|
print err > "/dev/stderr"
|
|
exit 1
|
|
}
|
|
close("/dev/user")
|
|
|
|
uid = $1
|
|
euid = $2
|
|
gid = $3
|
|
egid = $4
|
|
|
|
printf("uid=%d", uid)
|
|
pw = getpwuid(uid)
|
|
if (pw != "") {
|
|
split(pw, a, ":")
|
|
printf("(%s)", a[1])
|
|
}
|
|
|
|
if (euid != uid) {
|
|
printf(" euid=%d", euid)
|
|
pw = getpwuid(euid)
|
|
if (pw != "") {
|
|
split(pw, a, ":")
|
|
printf("(%s)", a[1])
|
|
}
|
|
}
|
|
|
|
printf(" gid=%d", gid)
|
|
pw = getgrgid(gid)
|
|
if (pw != "") {
|
|
split(pw, a, ":")
|
|
printf("(%s)", a[1])
|
|
}
|
|
|
|
if (egid != gid) {
|
|
printf(" egid=%d", egid)
|
|
pw = getgrgid(egid)
|
|
if (pw != "") {
|
|
split(pw, a, ":")
|
|
printf("(%s)", a[1])
|
|
}
|
|
}
|
|
|
|
if (NF > 4) {
|
|
printf(" groups=");
|
|
for (i = 5; i <= NF; i++) {
|
|
printf("%d", $i)
|
|
pw = getgrgid($i)
|
|
if (pw != "") {
|
|
split(pw, a, ":")
|
|
printf("(%s)", a[1])
|
|
}
|
|
if (i < NF)
|
|
printf(",")
|
|
}
|
|
}
|
|
print ""
|
|
}
|