Bagaimana Anda membuat pengguna tanpa kata sandi?

22

Di os X dimungkinkan untuk memiliki pengguna tanpa kata sandi. Jika Anda memeriksanya dengan dsclkata sandi mereka muncul sebagai *. Ini digunakan untuk pengguna sistem seperti pengguna untuk basis data seperti mysql, pgsqldll. Yang menyenangkan tentang ini adalah bahwa pengguna ini tidak muncul di layar masuk dan Anda tidak dapat masuk karena mereka tanpa sudodll.

Setelah menghapus pengguna seperti itu mencoba beberapa hal, saya ingin membuatnya kembali, tetapi tidak bisa. Saya dapat mengatur untuk mendapatkan pengguna dengan kata sandi kosong dan saya dapat mengatur kata sandinya *. Tetapi tidak ada yang memiliki efek yang sama seperti di atas, karena pengguna muncul di layar login saya.

Bagaimana Anda membuat pengguna seperti itu?

googletorp
sumber
Di Linux, Anda melewatkan flag --disabled-password untuk adduser. Mungkin OS X memiliki sesuatu yang serupa dalam repertoar baris perintahnya?
BR
Apakah yang kamu maksud; pengguna dapat masuk tanpa kata sandi atau tidak bisa masuk sama sekali karena tidak ada kata sandi yang ditetapkan?
Chris Huang-Leaver
1
Saya perhatikan Anda tidak menerima jawaban ... satu syarat untuk tetap keluar dari berbagai daftar xdm adalah memiliki userid yang sangat rendah. pada banyak sistem useraddmulai menambahkan id di 1000, dan manajer login tidak akan menampilkan id pengguna di bawah itu, tetapi semuanya di atas. jadi meskipun itu bukan jawaban untuk pertanyaan ini, itu mungkin resolusi untuk masalah tersebut. harap dicatat bahwa 1000 adalah arbitrer dan mungkin lebih rendah atau lebih tinggi pada distribusi Anda. Untuk memperbaikinya cukup modifikasi entri pengguna /etc/passwduntuk memiliki uid yang lebih rendah. Sekarang bagi saya untuk mengajukan pertanyaan serupa.
xenoterracide
@ xenoterracide: Ketika saya membuat ulang pengguna, saya memberikannya ID lama, itu adalah pengguna pgsql yang saya hapus yang memiliki id satu lebih tinggi dari mysql, jadi saya yakin itu tidak memiliki dampak dalam hal ini , tapi terima kasih atas informasinya.
googletorp

Jawaban:

6

Anda dapat menjalankan passwd --delete <username>setelah membuat pengguna dengan adduser. Setelah ini, Anda dapat masuk tanpa memasukkan kata sandi.

Eugen Anghel
sumber
4
Saya pikir itu kebalikan dari apa yang diminta di sini.
Shadur
Pada awalnya, saya pikir ini adalah jawaban yang tepat (atau terbaik), sampai saya membaca kembali pertanyaan OP, yang menyebutkan "pengguna sistem" dan tidak muncul di "layar masuk". Metode ini akan muncul di layar masuk dan Anda dapat 'sudo' menggunakan metode ini.
HidekiAI
3

Seorang pengguna di / etc / passwd dengan direktori home dari / dev / null dan shell dari / sbin / nologin, dapat digunakan untuk perintah sudo, tetapi sebenarnya tidak dapat login, misalnya;

dari / etc / passwd saya

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

Saya setengah ingat ini akan membuatnya menghilang dari layar login XDM juga, tapi saya tidak menggunakan XDM lagi, jadi itu dugaan :-)

Chris Huang-Leaver
sumber
Ini adalah jawaban yang tepat karena OP meminta akun yang Anda tidak bisa 'sudo' atau muncul di "layar masuk", dengan mengatur ke '/ sbin / nologin' untuk shell. Satu hal yang perlu diperhatikan adalah karena OP meminta "pengguna sistem", harus juga menyebutkan bahwa 'useradd --sistem' harus digunakan untuk membuat UID dalam jumlah rendah (seperti portage / ebuild)
HidekiAI
3

Anda dapat menggunakan usermod, yang akan menonaktifkan kata sandi menggunakan !bukan *.

usermod -L <username>

Dari halaman manual di usermod:

-L, --lock Lock a user's password. This puts a '!' in front of the encrypted password, effectively disabling the password.
Jordan Mack
sumber
2

Menggunakan dsclakan memberi

dscl . -passwd /Users/myuser ""
Raffi
sumber
Ini, tidak seperti sebagian besar jawaban di atas itu ... sebenarnya bekerja untuk saya.
GroovyCakes
1

Saya tidak yakin tentang OSX, tetapi pada FreeBSD Anda dapat menggunakan:

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

nilai yang -diteruskan ke -hopsi memberitahu pwuntuk mengatur bidang kata sandi di master.passwd *, sehingga membuat akun tidak masuk. Pengaturan shell tidak sepenuhnya diperlukan, tetapi hindari cek shell dari /etc/pw.conf.

gvkv
sumber
1

Membiarkan bidang kata sandi kosong untuk pengguna dalam passwdfile akan berfungsi.

Nikhil Mulley
sumber
-1

Di Linux saya menggunakan:

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

Alternatif berikutnya harus lebih lintas platform (jika -ropsi tidak tersedia):

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

Sini:

  • kata sandi di / etc / shadow akan diatur ke *. Tanpa -p \*itu akan terjadi!

  • shell akan menjadi /sbin/nologin(Anda dapat menggunakan /bin/falsejuga, tapi saya pikir /binmungkin sudah terlambat dipasang pada beberapa sistem). Jadi pengguna tidak bisa masuk

  • -d set homedir pengguna

CATATAN PENTING

Di sini -rmembuat pengguna sistem:

Bendera ini digunakan untuk membuat akun sistem. Artinya, pengguna dengan nilai UIDlebih rendah dari nilai yang UID_MINditentukan dalam /etc/login.defs dan kata sandinya tidak kedaluwarsa. Perhatikan bahwa useradd tidak akan membuat direktori home untuk pengguna seperti itu, terlepas dari pengaturan default di /etc/login.defs . Anda harus menentukan -mopsi jika Anda ingin direktori rumah untuk akun sistem dibuat. Ini adalah opsi yang ditambahkan oleh Red Hat .

Opsi -rmungkin tidak ada pada sistem Anda. Jadi untuk membuat pengguna sistem, yang tidak ditampilkan di layar login Anda, saya pikir, Anda dapat menggunakan -Kopsi. Sesuatu seperti: -K UID_MIN=100 -K UID_MAX=499. Anda dapat mencoba opsi seperti:

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

untuk secara otomatis menentukan Anda UID_MAX, tapi aku sudah tidak diuji pada OS X. Anda akan perlu menggunakan SYS_UID_MAXuntuk UID_MINjika tanda komentar di /etc/login.defs

Hal yang sama untuk GID_MAXdan GID_MINuntuk id grup sistem. (Lihat GID_MINdan jika uncommented SYS_GID_MAXdi /etc/login.defs untuk digunakan sebagai GID_MAX)

Роман Коптев
sumber