Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
xpasswd - non-interactive passwd command with friendly tools (obsolete?)
C Perl Shell
Branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
doc
extra
include
src
COPYING
HISTORY
INSTALL
INSTALL.en
MANIFEST
Makefile.in
Makefile.maintainer
README
README.en
THANKS
TODO
config.h.in
configure.in
install-sh

README

xpasswd - 非対話型 passwd コマンドと仲間たち
Copyright (c) 1997-2003 SATOH Fumiyasu, All rights reserved.

version: 1.1.0 beta7
license: GNU General Public License version 2
======================================================================

概要
======================================================================

これはなに?
-----------
    xpasswd はユーザのパスワードを変更するためのコマンドです。通常の
    passwd コマンドとは異なり、非対話型で認証情報を受け取ります。
    ログイン名、旧パスワード、新パスワードは標準入力から取得します。

    パッケージには xpasswd を利用する仲間たちも付属しています。詳細は
    それぞれのドキュメントを読んで下さい(あまり整備されていないが)。

作り方
------
    INSTALL ファイルを読んでください。

使い方
------
    xpasswd [-a|-c command] [-sdp] [-v[v[v]]]

オプション
----------
    -a		ユーザ認証のみを行う
    -c command	指定のコマンドを認証されたユーザで実行
    -s		ユーザのシェルが無効なときは認証失敗
		(getusershell(3) があるシステムでないと機能しません)
    -d		ユーザのホームディレクトリが存在しないときは認証失敗
    -p		プロトコル・モード (現在、壊れている)
    -v		デバッグ/エラー追跡用のメッセージを出力
    -h		使用可能なオプションと簡単な説明を表示


戻り値
------
    0 は成功、それ以外は失敗を意味する。

    ただし、-c オプションで指定したコマンドの起動に成功したときは、
    そのコマンドの戻り値が返される。

	 値	意味
	 ----	-----------------------------------------------------
	    X	[一般的なコード]
	    0	成功
	    1	無効なオプション指定

	  10X	[プロトコル・エラー]
	  100	ユーザ名の入力がない
	  101	パスワードの入力がない
	  102	新パスワードの入力がない

	  11X	[認証エラー]
	  110	ユーザが存在しない
	  111	パスワードが不正
	  112	ユーザのシェルが無効
	  113	ユーザのホームディレクトリが存在しない

	  12X	[コマンド実行失敗]
	  120	認証されたユーザの UID 権限への移行に失敗
	  121	認証されたユーザの GID 権限への移行に失敗
	  122	認証されたユーザの追加 GID 権限への移行に失敗
	  123	コマンドの起動に失敗

	  13x	[パスワード変更失敗]
	  130	新パスワードが適切な文字で構成されていない (安全でない)
	  139	パスワード変更に失敗 (未知のエラー)

プロトコル
----------
    この節は作成中…。

    パイプの場合は以下のような情報をやりとりします。

    X: `xpasswd -ap`
    U: ユーザ

        X: 200 Hello. Who are you?\n
        U: user USERNAME\n
        X: 300 Password?\n
        U: pass PASSWORD\n
        X: 200 OK. You are trusted user!\n


使用例
======================================================================

    コマンドラインより xpasswd を用いてパスワード変更。ユーザ「hoge」の
    パスワードを「foo012」から「bar123」に変更する例を示します。
    行頭の '$' はシェルのプロンプトです。

	$ xpasswd
	user hoge
	pass foo012
	newpass bar123
	$ echo $?
	0

    この例は生のパスワードが目に見えてしまうため、危険です。要注意。


環境
======================================================================

主な開発/テスト環境
-------------------

    OS					passwd database
    --------------------------		------------------------
    Solaris 2.6				/etc/passwd, NIS, NIS+
    Solaris 2.5.1			/etc/passwd, NIS, NIS+

動作すると思われる環境
----------------------

    OS					passwd database
    --------------------------		------------------------
    Solaris 8				/etc/passwd
    RedHat Linux 5.2			/etc/passwd
    Slackware 3.1, 3.6		 	/etc/passwd
    FreeBSD 2.2.5-RELEASE		/etc/passwd
    NetBSD 1.3.2			/etc/passwd, NIS
    BSD/OS 2,0.1, 2.1			/etc/passwd
    HP-UX 10.20				/etc/passwd
    IRIX 6.4				/etc/passwd, NIS
    SunOS 4.1.x				/etc/passwd, NIS

なぜか動作しないらしい環境
--------------------------

    OS					passwd database
    --------------------------		------------------------
    FreeBSD 2.2.6-RELEASE		/etc/passwd


サポート
======================================================================

    佐藤文優あてにメールをください。アドレスは fumiya at samba.gr.jp
    です。

    質問に対して 100% 回答があるとは限りません。ご了承ください。
    また、問題が生じた場合には動作させている環境や症状もお知らせください。

    パスワード変更時に Unknown error (終了コード 139) で失敗する場合、
    xpasswd に -vvv オプションをつけて実行し、その出力結果をお知らせ
    ください。多くの場合、それを読めば原因が自明なときもあります。

    passwd コマンド (あるいはそれより下位のシステム) によっては、
    新しいパスワードにより複雑な条件 (辞書に載っていない単語など) を
    求めるものがあります。そのような環境では、xpasswd による複雑性
    チェックに適合した新パスワードでもパスワードの変行に失敗すること
    があります。その場合、xpasswd は「未知のエラー」を返します。

はしかぎ
======================================================================

    気づいてみれば、「なんだ、poppassd のプロトコルを単純にして
    認証機能 (-a オプション) をいれただけじゃん」のような気がしてきた。
Something went wrong with that request. Please try again.