user.Lookup возвращает пользователя, пока пользователь не существует - PullRequest
1 голос
/ 14 июля 2020

Я заметил странную проблему с простой службой в Go, которая выполняет некоторые манипуляции с пользователем в macOS.

При удалении пользователя и последующем запуске user.Lookup для удаленного пользователя команда, иногда , вернет информацию об удаленном пользователе, даже если, насколько я могу судить, пользователь не существует.

Код:

Создать пользователя:

exec.Command("dscl", ".", "-create", "/Users/"+user)
exec.Command("dscl", ".", "-create", "/Users/"+user, "UserShell", "/bin/bash")
exec.Command("dscl", ".", "-create", "/Users/"+user, "RealName", user)
exec.Command("dscl", ".", "-create", "/Users/"+user, "UniqueID", strconv.Itoa(nextID))
exec.Command("dscl", ".", "-create", "/Users/"+user, "PrimaryGroupID", "20")
exec.Command("dscl", ".", "-create", "/Users/"+user, "NFSHomeDirectory", "/Users/"+user)
exec.Command("dscl", ".", "-append", "/Users/"+user, "Picture", "/Library/User", "Pictures/Flowers/Lotus.tif")
exec.Command("dscl", ".", "-passwd", "/Users/"+user, getUserPassword())
exec.Command("dseditgroup", "-o", "edit", "-t", user, "-a", user, "staff")
exec.Command("createhomedir", "-c", "-u", user)

Удалить пользователя :

exec.Command("dscl", ".", "-delete", "/Users/"+user)
utils.DeleteDir("/Users/" + user)
...