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?


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.


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ę :-)


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.

2

Korzystanie dscldałoby

dscl . -passwd /Users/myuser ""

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.




-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)

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.