Bagaimana seharusnya seseorang membuat kata sandi terenkripsi untuk / etc / shadow?

9

Saya menyiapkan akun baru pada kotak Linux untuk akses repositori Subversion, dan dapat mengirim kata sandi ke pengguna baru. Namun, saya pikir ada utilitas baris perintah untuk pengguna baru ini untuk mengenkripsi kata sandi yang dia sukai ke dalam format yang dapat saya salin / tempel langsung ke file / etc / shadow.

Apa perintah penuh yang harus dijalankan pengguna baru ini di konsol (mis. Bash) untuk membuat kata sandi yang dienkripsi?

UPDATE: pengguna tidak akan diizinkan masuk di mesin, dan akun hanya akan digunakan untuk svn + ssh: // akses. Oleh karena itu, pengguna tidak dapat mengubahnya sendiri.

Egon Willighagen
sumber
Pengguna bertanya tentang bash scripting, karena dia jelas tidak akan melakukan ini secara manual.
Tim Post

Jawaban:

15

pengguna dapat mengeksekusi di komputernya sesuatu seperti:

echo "password"|openssl passwd -1 -stdin

dan kemudian mengirimkan hasilnya.

Daniel
sumber
+1 melakukan persis apa yang Anda cari.
Antoine Benkemoun
Mengapa perintah itu memberikan nilai yang berbeda setiap kali saya menyebutnya?
Egon Willighagen
2
Format output adalah $ id $ salt $ dienkripsi. Id berbeda dan garam berbeda memberi Anda string terenkripsi yang berbeda. Id adalah algoritma yang digunakan: 0-DES, 1-> MD5, 2a-> Blowfish, 5-> SHA-256, 6-> SHA512
Gonzalo
OK, jadi saya perlu mencari cara untuk memicu id tertentu (yang sama sepanjang waktu) dan garam (yang berubah dengan setiap panggilan) ... masuk akal.
Egon Willighagen
2

Format kata sandi dalam bayangan dapat bervariasi. Anda dapat mengaturnya menjadi MD5 atau DES3 lama yang bagus atau ... Anda baik mengirimkan kata sandi kepada pengguna Anda dan memaksanya untuk mengubahnya di login pertama ( # chage -d 0 username)

Gonzalo
sumber
1

Alih-alih meminta mereka mengenkripsi kata sandi dan mengirimkannya kepada Anda, mengapa tidak meminta mereka untuk mengetik:

passwd

Ini akan melakukan semua yang Anda inginkan dengan keuntungan tambahan bahwa mereka dapat mengubah kata sandi mereka tanpa kerja ekstra untuk Anda.

EDIT: Menurut ini , seharusnya ada perintah yang disebut makepassword yang bisa Anda dapatkan untuk Debian / Ubuntu.

Brendan Long
sumber
Karena itu mengharuskan pengguna untuk sudah masuk. OP ingin solusi untuk mengatur kata sandi dengan aman sebelum pengguna masuk untuk pertama kalinya.
Daniel Pryden
1
Sepertinya menghasilkan kata sandi secara acak dan meminta mereka mengubahnya ketika mereka masuk sama amannya dengan membuat kata sandi dan menambahkannya secara manual.
Brendan Long
Pengguna benar-benar tidak akan pernah login (shell: / bin / false), dan hanya mengizinkan SVN akses baca / tulis ...
Egon Willighagen
2
Anda dapat mengatur shell: / usr / bin / passwd: D
Brendan Long
1
Maksud saya komentar terakhir itu sebagai lelucon, tetapi tampaknya itu akan berhasil: markmail.org/message/ekuxvnhdagywy4i5
Brendan Long
0

/ etc / passwd dan / etc / shadow sangat mudah untuk tokenize dengan alat baris perintah yang biasa (yaitu grep, awk, sed, tr, dll).

Yang menjadi menarik adalah bidang hash kata sandi aktual di / etc / shadow, awalannya memberi tahu Anda bagaimana kata sandi telah dienkripsi. Dari man (5) shadow:

The password field must be filled. The encrypted password consists of 13 to 24 characters from the 64 characters alphabet a thru z, A
thru Z, 0 thru 9, \. and /. Optionally it can start with a "$" character. This means the encrypted password was generated using another
(not DES) algorithm. For example if it starts with "$1$" it means the MD5-based algorithm was used.

Bagaimana itu dienkripsi secara luas tergantung pada berapa lama OS yang diinstal kebetulan. Penting untuk memberi perhatian khusus pada bidang kedua di / etc / shadow.

Anda harus melakukan segala upaya untuk mengikuti hash apa pun yang digunakan sistem, baik itu DES, MD5, dll, karena sangat mudah dideteksi.

Pos Tim
sumber
0

Mengapa tidak masuk ke pengguna dan menjalankan passwd?

Esben Skov Pedersen
sumber
Karena saya tidak ingin tahu kata sandi ... atau mengirimnya kepada saya dalam bentuk yang tidak dienkripsi.
Egon Willighagen
0

Apakah ada cara untuk membuat kata sandi ini melalui baris perintah? Ya, dengan makepasswd paket debian (tetapi hanya untuk MD5):

echo "mypasswd" | makepasswd --crypt-md5
$1$r2elYKyB$vUr/Ph.brKTldM2h2k8J5.

Tetapi ini tidak akan berfungsi melalui salin dan tempel di dalam / etc / shadow Untuk mengubah kata sandi melalui skrip di beberapa distribusi linux, Anda dapat menggunakan:

echo oracle:mypasswd | chpasswd

atau

echo -n mypasswd | passwd --stdin oracle

sumber