Saya harus memiliki kemampuan untuk membuat akun pengguna di Linux saya (Fedora 10) dan secara otomatis menetapkan kata sandi melalui skrip bash (atau sebaliknya, jika perlu).
Sangat mudah untuk membuat pengguna melalui Bash misalnya:
[whoever@server ]# /usr/sbin/useradd newuser
Apakah mungkin untuk menetapkan kata sandi di Bash, sesuatu yang secara fungsional mirip dengan ini, tetapi secara otomatis:
[whoever@server ]# passwd newuser
Changing password for user testpass.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[whoever@server ]#
expect
skrip.Jawaban:
Anda dapat menjalankan perintah passwd dan mengirimkannya input yang disalurkan. Jadi, lakukan sesuatu seperti:
sumber
echo
adalah builtin di shell yang digunakan, yang biasanya), setidaknya memprihatinkan/proc/
.echo -e "password\npassword\n" | passwd
pada 13,04echo 'myuser:mypass' | chpasswd
. Semoga itu bisa membantu.Anda juga bisa menggunakan chpasswd :
jadi, Anda mengubah password untuk pengguna
username
untuknew_password
.sumber
$ apropos chpasswd
...chpasswd (8) - update passwords in batch mode
busybox
, sedangkanpasswd
tidak (tidak ada--stdin
pilihan).Saya bertanya pada diri sendiri hal yang sama, dan tidak ingin mengandalkan skrip Python.
Ini adalah baris untuk menambahkan pengguna dengan kata sandi yang ditentukan dalam satu baris bash:
sumber
useradd -p $(openssl passwd -1 $PASS) $USER
lebih modern, karena back-ticks sudah tidak digunakan lagi dan$()
direkomendasikan.useradd -m -p <password> -s /bin/bash <user>
, -m direktori home Crates, -s menetapkan pengguna defualt shell, penggantipassword
danuser
untuk kebutuhan Anda.useradd -m -p $(openssl passwd -1 -salt $SALT $PASS)
. Saya pikir ini diperlukan pada Ubuntu nanti.Kode di bawah ini berfungsi di Ubuntu 14.04. Coba sebelum Anda menggunakannya di varian versi / linux lainnya.
sumber
--gecos
Saya menyukai pendekatan Tralemonkey
echo thePassword | passwd theUsername --stdin
meskipun itu tidak berhasil bagi saya seperti yang tertulis. Namun ini berhasil untuk saya.-e
adalah untuk mengenali\n
sebagai baris baru.sudo
adalah akses root untuk Ubuntu.Kutipan ganda adalah untuk mengenali
$
dan memperluas variabel.Perintah di atas melewati kata sandi dan baris baru, dua kali, untuk
passwd
, yangpasswd
diperlukan.Jika tidak menggunakan variabel, saya pikir ini mungkin berhasil.
Kutipan tunggal harus mencukupi di sini.
sumber
Berikut ini berfungsi untuk saya dan diuji pada Ubuntu 14.04. Ini adalah liner satu yang tidak memerlukan input pengguna apa pun.
Diambil dari @Tralemonkey
sumber
Anda dapat menggunakan opsi -p.
Sayangnya, ini mengharuskan Anda untuk hash kata sandi sendiri (di mana passwd melakukan itu untuk Anda). Sayangnya, sepertinya tidak ada utilitas standar untuk hash beberapa data sehingga Anda harus menulis sendiri.
Berikut ini adalah skrip Python kecil yang saya siapkan untuk melakukan enkripsi untuk Anda. Dengan asumsi Anda menyebutnya pcrypt, Anda kemudian akan menulis baris perintah di atas untuk:
Beberapa peringatan yang harus diperhatikan.
dan inilah pcrypt:
sumber
Single liner untuk membuat pengguna sudo dengan direktori home dan kata sandi.
sumber
--stdin
tidak berfungsi pada Debian. Ia mengatakan:Ini bekerja untuk saya:
Di sini kita dapat menemukan beberapa cara bagus lainnya:
sumber
Anda dapat menggunakan harapkan dalam skrip bash Anda.
Dari http://www.seanodonnell.com/code/?id=21
sumber
Saya tahu saya akan datang pada tahun ini kemudian, tetapi saya tidak percaya tidak ada yang menyarankan usermod.
Sial, siapa tahu ada yang mau melakukan ini pada HPUX lama yang bisa Anda gunakan
usermod.sam
.-F hanya diperlukan jika orang yang mengeksekusi skrip adalah pengguna saat ini. Tentu saja Anda tidak perlu menggunakan Perl untuk membuat hash. Anda dapat menggunakan openssl atau banyak perintah lain sebagai gantinya.
sumber
Ini adalah skrip yang akan melakukannya untuk Anda .....
Anda dapat menambahkan daftar pengguna (atau hanya satu pengguna) jika Anda mau, semuanya dalam sekali jalan dan masing-masing akan memiliki kata sandi yang berbeda. Sebagai bonus Anda disajikan di akhir skrip dengan daftar kata sandi setiap pengguna. .... Jika mau, Anda dapat menambahkan beberapa opsi perawatan pengguna
Suka:
ke skrip yang akan mengatur usia kata sandi dan sebagainya.
=======
===========
Semoga ini membantu.
Ceria, Carel
sumber
Saya sudah menguji skrip shell saya sendiri.
$new_username
berarti pengguna yang baru dibuat$new_password
berarti kata sandi baruUntuk CentOS
Untuk Debian / Ubuntu
Untuk OpenSUSE
sumber
Solusi Tralemonkey hampir berhasil untuk saya juga ... tetapi tidak cukup. Saya akhirnya melakukannya dengan cara ini:
2 detail kunci solusinya tidak termasuk,
-n
terus gema dari menambahkan\n
kata sandi yang semakin dienkripsi, dan tanda kutip tunggal melindungi konten dari ditafsirkan oleh shell (bash) dalam kasus saya.BTW saya menjalankan perintah ini sebagai root pada sistem CentOS 5.6 kalau-kalau ada yang bertanya-tanya.
sumber
Solusi yang bekerja pada Debian dan Red Hat. Tergantung pada perl, menggunakan hash sha-512:
Pemakaian:
Ini dapat digunakan secara efektif sebagai satu-liner, tetapi Anda harus menentukan sendiri kata sandi, garam, dan nama pengguna di tempat yang tepat:
sumber
Dari IBM ( https://www.ibm.com/support/knowledgecenter/ssw_aix_61/com.ibm.aix.cmds1/chpasswd.htm ):
Buat file teks, ucapkan text.txt dan isi dengan pengguna: pasangan kata sandi sebagai berikut:
Simpan file text.txt, dan jalankan
Itu dia. Solusinya adalah (a) dapat diskalakan dan (b) tidak melibatkan pencetakan kata sandi pada baris perintah.
sumber
sumber
Untuk RedHat / CentOS inilah kode yang menciptakan pengguna, menambahkan kata sandi dan membuat pengguna menjadi sudoer:
sumber
pemakaian:
./my_add_user.sh USER PASSWD
kode:
sumber