Jak utworzyć użytkownika bez hasła?

22

W systemie OS X można mieć użytkowników bez haseł. Jeśli sprawdzisz je za pomocą dsclhasła, pokaż je jako *. Służy to użytkownikom systemu, takim jak użytkownicy baz danych mysql, pgsqlitp. Zaletą tego jest to, że ci użytkownicy nie wyświetlają się na ekranie logowania i nie można się zalogować bez nich sudoitp.

Po usunięciu takiego użytkownika próbującego niektórych rzeczy chciałem go odtworzyć, ale nie mogłem. Mógłbym uzyskać użytkownika z pustym hasłem i ustawić hasło na *. Ale żaden nie miał takiego samego efektu jak powyżej, ponieważ użytkownik pojawił się na ekranie logowania.

Jak tworzysz takiego użytkownika?

googletorp
źródło
W systemie Linux przekazujesz flagę --disabled-password do adduser. Może OS X ma coś podobnego w swoim repertuarze wiersza poleceń?
BR
Miałeś na myśli; użytkownik może zalogować się bez hasła lub nie może się w ogóle zalogować, ponieważ hasło nie jest ustawione?
Chris Huang-Leaver,
1
Zauważyłem, że nie zaakceptowałeś odpowiedzi ... jednym z wymagań, aby trzymać się z dala od różnych list xdm, jest znacznie niższy identyfikator użytkownika. w wielu systemach useraddzaczyna dodawać identyfikatory przy 1000, a menedżerowie logowania nie będą wyświetlać identyfikatorów użytkowników poniżej, ale wszystko powyżej. więc chociaż nie jest to odpowiedź na to pytanie, może to być rozwiązanie problemu. pamiętaj, że 1000 jest arbitralne i może być niższe lub wyższe w twojej dystrybucji. Aby to naprawić, wystarczy zmodyfikować wpis użytkownika, /etc/passwdaby mieć niższy identyfikator użytkownika. Teraz mogę zadać podobne pytanie.
ksenoterrakid
@xenoterracide: Kiedy odtworzyłem użytkownika, podałem mu stary identyfikator, to usunięty użytkownik pgsql ma identyfikator wyższy niż mysql, więc jestem pewien, że w tym przypadku nie miał żadnego wpływu , ale i tak dzięki za informacje.
googletorp,

Odpowiedzi:

6

Możesz uruchomić passwd --delete <username>po utworzeniu użytkownika za pomocą adduser. Po tym będziesz mógł się zalogować bez podawania hasła.

Eugen Anghel
źródło
4
Myślę, że jest to dokładne przeciwieństwo tego, o co tu proszono.
Shadur
Na początku myślałem, że to była właściwa (lub najlepsza) odpowiedź, dopóki nie przeczytałem ponownie pytania OP, które mówi o „użytkowniku systemu” i nie pojawia się na „ekranie logowania”. Ta metoda pojawi się na ekranie logowania i możesz „sudo” za pomocą tej metody.
HidekiAI
3

Użytkownik w / etc / passwd z katalogiem domowym / dev / null i powłoką / sbin / nologin może być używany do wykonywania poleceń sudo, ale na przykład nie może się zalogować;

z mojego / etc / passwd

tcpdump:x:104:441:added by portage for tcpdump:/dev/null:/sbin/nologin

W połowie pamiętam, że to też zniknie z ekranu logowania XDM, ale nie używam już XDM, więc zgaduję :-)

Chris Huang-Leaver
źródło
To jest prawidłowa odpowiedź, ponieważ OP poprosił o konto, którego nie możesz „sudo” lub pokazać na „ekranie logowania”, ustawiając na „/ sbin / nologin” dla powłoki. Należy zauważyć, że OP poprosił o „użytkownika systemu”, powinien również wspomnieć, że „useradd --system” powinien być użyty do utworzenia identyfikatora UID w małej liczbie (jak robi to portage / ebuild)
HidekiAI
3

Możesz użyć usermod, który wyłączy hasło, używając !raczej niż an *.

usermod -L <username>

Ze strony podręcznika na usermod:

-L, --lock Lock a user's password. This puts a '!' in front of the encrypted password, effectively disabling the password.
Jordan Mack
źródło
2

Korzystanie dscldałoby

dscl . -passwd /Users/myuser ""
Raffi
źródło
To, w przeciwieństwie do większości powyższych odpowiedzi ... faktycznie działało dla mnie.
GroovyCakes
1

Nie mogę mieć pewności co do OSX, ale na FreeBSD możesz użyć:

pw add user mymuser -g mygroup -s /nonexistent -h -

wartość -przekazana do -hopcji każe pwustawić pole hasła w master.passwd na *, tworząc w ten sposób konto bez logowania. Ustawienie powłoki nie jest absolutnie konieczne, ale pozwala uniknąć sprawdzania powłoki z /etc/pw.conf.

gvkv
źródło
1

Pozostawienie pola hasła pustego dla użytkownika w passwdpliku będzie działać.

Nikhil Mulley
źródło
-1

W systemie Linux używam:

sudo useradd -r -p \* -s /sbin/nologin -c "Comment My Daemon,,,"  -d "/var/uuu"  myuser

Następną alternatywą musi być więcej platform (jeśli -ropcja nie jest dostępna):

sudo useradd -K UID_MIN=100 -K UID_MAX=499 -K GID_MIN=100 -K GID_MAX=499 -p \* -s /sbin/nologin -c "Comment My Daemon,,,"  -d "/var/uuu"  myuser

Tutaj:

  • hasło w / etc / shadow zostanie ustawione na *. Bez -p \*tego będzie!

  • shell będzie /sbin/nologin(Możesz /bin/falseteż użyć , ale myślę, że /binmoże być zamontowany zbyt późno w niektórych systemach). Więc użytkownik nie może się zalogować

  • -d ustawia homedir użytkownika

WAŻNA UWAGA

Tutaj -rtworzy użytkownik systemu:

Ta flaga służy do utworzenia konta systemowego. Oznacza to, że użytkownik ma wartość UIDniższą niż wartość UID_MINzdefiniowana w /etc/login.defs i której hasło nie wygasa. Zauważ, że useradd nie utworzy katalogu domowego dla takiego użytkownika, niezależnie od domyślnego ustawienia w /etc/login.defs . Musisz określić -mopcję, jeśli chcesz utworzyć katalog domowy konta systemowego. Jest to opcja dodana przez Red Hat .

Opcja -rmoże nie być obecna w twoim systemie. Aby stworzyć użytkownika systemu, który nie jest wyświetlany na ekranie logowania, myślę, że możesz użyć -Kopcji. Coś jak: -K UID_MIN=100 -K UID_MAX=499. Możesz wypróbować opcję:

-K UID_MAX=$(cat /etc/login.defs | grep ^UID_MIN | awk '{print $2}')

automatycznie określić cię UID_MAX, ale nie zostały przetestowane na OS X. będziesz musiał użyć SYS_UID_MAXdo UID_MINczy to odkomentowane w /etc/login.defs

To samo dotyczy GID_MAXi GID_MINzwiązanego z tym identyfikatorem grupy systemu. (Zobacz GID_MINi jeśli nie ma komentarza SYS_GID_MAXw /etc/login.defs do użycia jako GID_MAX)

Роман Коптев
źródło