1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

passwd コマンドは色々聞いてくるし、既存のパスワードが必要。

RedHat 系の Linux だと --stdin コマンドがあるらしいけれども、Debian 系はそのオプションは使えないようだ。

代わりに chpasswd コマンドを使う。

環境

  • Debian Testing (2024/7/6時点のDebian 13)

chpasswd の実行権限を調べる

フルパス指定すれば root でなくても実行できるけれど、操作していると認証トークン操作エラーとなる。

$ /usr/sbin/chpasswd
.
.
.
chpasswd: (user a) pam_chauthtok() failed, error:
Authentication token manipulation error
.
.
.

結局、 sudo つけて実行することにします。

$ sudo chpasswd
nanbuwwks:hogehoge

ここまで入力しエンターしたら、Ctrl+D で終了する。そうすればユーザ nanbuwks のパスワードが hogehoge となる。

非対話的に実行

以下のようにすればOK

$ printf "nanbuwks:hogehoge" | sudo chpasswd 

しかしながらプロセス情報からパスワードが見えてしまうので、このやりかたは望ましくない。

暗号化したパスワードを chpasswd に渡す

$ sudo grep nanbuwks /etc/shadow
nanbuwks:$y$abc$abcdefgh...$abcdefg.....:19910:0:99999:7:::

となる。

この $y$ は、yescrypt形式

cf.,https://www.cyberciti.biz/faq/understanding-etcshadow-file/

となっていて、同様のものを以下のように指定すれば良い。


$ printf "nanbuwks:$y$abc$abcdefgh...$abcdefg....." | sudo chpasswd --encrypted

ここの、暗号化パスワード部分を生成するのは mkpasswd を使い、以下のようにして作る

$ echo hogehoge | mkpasswd --stdin
$y$j9T$K1qIOyzqHzYPSmBplHpjC0$uBkDA/frN6YLKZE21XcfIimUWgLcov1Q.kMAIp7hXE0

これに、ユーザ名 'nanbuwks:' を頭につけて、

nanbuwks:$y$j9T$K1qIOyzqHzYPSmBplHpjC0$uBkDA/frN6YLKZE21XcfIimUWgLcov1Q.kMAIp7hXE0

を用いる。

mkpasswd についての詳細はこちら

「yepasswd で パスワードを生成」
https://qiita.com/nanbuwks/items/5715007b63c454c22c7e

プレーンテキストパスワードでもセキュアに処理する

よく考えたら以下のようにしてプロセス情報からパスワードが見えてしまうというリスクは、

$ printf "nanbuwks:hogehoge" | sudo chpasswd 

単にコマンドラインにプレーンテキストパスワードを書いているからだった。

なのでプレーンテキストでも、単に別プロセスから stdin にフレーズを流してリダイレクトすれば良かった。

例としてこのような方法。

$ cat | sudo chpasswd

cat だと対話的になるけれども、 cat の代わりになるプロセスを動かすと良い。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?