Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
20
Help us understand the problem. What is going on with this article?
@hurry1000

パスワードに使ってはいけない記号

パスワードに使ってはいけない記号

 パスワードを推測されにくいものとする、という口実で記号を入れることが推奨されている。ただしどうやら誰かの思いつきを無批判的に踏襲しているようで、なぜなら使ってはいけない記号があることについて誰も述べていない。
 パスワードとしては使えるが、実運用では使えないという記号、あるのだ。
;(セミコロン)
である。

 セミコロンを含むパスワードに変更は可能である。が、シェルスクリプトはそれを扱ってくれない。シェルは論理的には2行に渡る入力を物理的に1行で受け付ける事ができる。そのとき;(セミコロン)を改行の記号とみなす。つまりシェルへの命令の中に;(セミコロン)があればシェルはそこで2行に分けて取り扱うのだ。
 であるからシェルスクリプト中で「パスワードを入れてログイン(リモートなりsuなりで)」している場合、そのパスワードに;(セミコロン)が入っていると、;(セミコロン)までを一つの命令とみなし、つまり間違ったパスワードを入力したと判断するのだ。;(セミコロン)のあとに'del *'があるなんてパスワードでなくて本当に良かった。

 実績のあるシェルスクリプトがいきなり止まって!なぜだろう?1分で気がついたことは褒めてくれ、ひょっとしてパスワードに制御文字が入っているのではなかろうか?でもエスケープシーケンスを使えば行けそうな気がするだろ。;(セミコロン)だけはダメみたいだ。コーテーションでくくっても受け付けてもらえない。

 ではなぜパスワード変更は受け付けたのか?疑問が湧くよね。簡単だ、シェルを通してないからだ。つまりpasswdコマンドでパスワードを変更しようとすると、そのときターミナル画面に出てくるのは

新しいパスワード:
新しいパスワードを再入力してください:

である。ここで見慣れたプロンプト、つまり(シェルやユーザーによって違いはあるが)
コマンドを打つのはここだよ、と表示される#とか$とかいう文字がパスワード変更では出てこない。つまりシェルを通してないのだ。だからシェルでは行の切れ目とみなされる;(セミコロン)があっても受け付けてくれるわけである。

 このくらいのこと誰か警鐘を鳴らしているかと思ったのだが、いない?まあ無意識的に避けるだろうなあ。事実上の素人でなければ。

 ということで
 &(アンパーサンド), ;(セミコロン)、 `(バックコーテーション)、'(シングルコーテーション)、"(ダブルコーテーション)、\(バックスラッシュ)、|(パイプ)、~(チルダ)、<(リダイレクション)、>(リダイレクション)、{(ブレイス)、}(ブレイス)は避けたほうが無難でしょう。
 え、bashのメタ文字はもう1種あるでしょって?
 確かに()があるのだが、記号の読みを書く時に使っちゃって・・・これがメタ文字が生まれた理由なのだろうなあ。

 これ、UNIXの世界特有のものかもしれません。でもそれ以外の人にも知っといてほしいと思って最後まで伏せておきました。なのでUNIXを使わない人も、パスワードにはそれ以外の記号を使うようにしましょう。(UNIXからWindowsにシェルスクリプトでログインすることはまずないと思いますが。)

 それでも*(アスタリスク)を使いたいという人はいなだろうなあ。

20
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
20
Help us understand the problem. What is going on with this article?