Cygwin なんでも掲示板

一覧最新記事過去一覧 | 検索FAQアンテナHOME
(新規投稿・発言はできません)


スレッド

└◇1852:
コマンドラインからユーザ削除するには? [yy] 01/14 11:55

 └◇1854:Re:コマンドラインからユーザ削除するには? [nil] 01/15
  └◇1856:Re[2]:コマンドラインからユーザ削除するには? [yy] 01/17
   └◇1857:Re[3]:コマンドラインからユーザ削除するには? [nil] 01/17
    └◇1858:Re[4]:コマンドラインからユーザ削除するには? [yy] 01/20
     └◇1861:Re[5]:コマンドラインからユーザ削除するには? [nil] 01/22
      └◇1866:(お礼)Re[6]:コマンドラインからユーザ削除するには? [yy] 01/23 <


1852● コマンドラインからユーザ削除するには?[ yy ] 2004 01/14 11:55
Windows2000でCygwin1005.5.0.0を使用しています。


[Administrator@host]$ NET USER user_name /ADD
[Administrator@host]$ mkpasswd -l -u user_name >> /etc/passwd
[Administrator@host]$ passwd user_name

としてユーザ追加しました。追加したユーザの削除の仕方についてお伺いしたいのです。

試しに
[Administrator@host]$ NET USER user_name /DEL
としてみましたが相変わらずSSHログインできてしまいます。

因みに
$ cat /etc/passwd | grep user_name
user_name:unused_by_nt/2000/xp:1003:513:U-HOST\user_name,S-1-5-21-1935655697-813497703-854245398-1003:/home/user_name:/bin/bash

となっていいます。
ユーザ削除の仕方はどうするのでしょうか?
スレッド一覧


1854● Re:コマンドラインからユーザ削除するには?[ nil ] 2004 01/15 23:25
/etc/passwd を新しく作り直すか、該当ユーザの情報を削除しましょう。
Win環境のユーザ管理とは別に Cygwin環境用のユーザの登録情報の修正も必要です。

このファイルの意味をご存知ならば、どんな方法で編集や再生成してもかまいません。
(念の為、例えば、
        grep -v "^user_name:" /etc/passwd > /etc/passwd.new
        mv /etc/passwd /etc/passwd.bak
        mv /etc/passwd.new /etc/passwd
くれぐれも your own risk で)

いちおう、"net user" と実行して、Windows 側ユーザが削除されていることを確認しておいてください。

以下、余談。
通常は、/etc/passwd に情報が残っていても、Cygwin へ login する時には、Windows側での認証を利用するようなので、Win側のユーザと対応がついていなければ login できない筈です。
ただし、SSH の鍵による認証であれば、Win側の認証と無関係なので、ご質問にあるような状況は起こりうるでしょう。

(逆に、Win側へユーザを追加しなくても、/etc/passwd へだけ登録して SSH の認証で login する程度の仮ユーザを用意することもできます。権限の問題等で不都合があるかないかは確認していませんが)
スレッド一覧


1856● Re[2]:コマンドラインからユーザ削除するには?[ yy ] 2004 01/17 17:46
ご回答ありがとうございます。

> このファイルの意味をご存知ならば、どんな方法で編集や再生成してもかまいませ
> ん。
> (念の為、例えば、
> grep -v "^hoge01:" /etc/passwd > /etc/passwd.new
> mv /etc/passwd /etc/passwd.bak
> mv /etc/passwd.new /etc/passwd
> くれぐれも your own risk で)
$ cat /etc/passwd | grep "^hoge01:"
$ net user | grep hoge01
Mihoko sshd hoge01
$ passwd hoge01
Enter the new password (minimum of 5, maximum of 8 characters).
Please use a combination of upper and lower case letters and numbers.
New password:

という風に/etc/passwd にhoge01が存在しないのに
net userコマンドではhoge01が表示されてしまいます。

$ grep -v "^hoge01:" /etc/passwd > /etc/passwd.new
$ mv /etc/passwd /etc/passwd.bak
$ mv /etc/passwd.new /etc/passwd
実行後は何らかのデーモン(?)をリスタートしないと/etc/passwdの変更が反映されないのですかね。

どうすれば/etc/passwdの内容が反映されるのでしょうか?

因みに
hoge01はコマンドライン上でユーザ登録したユーザです。
コンパネの[ユーザとパスワード]から登録したユーザでは有りません。

> いちおう、"net user" と実行して、Windows 側ユーザが削除されていることを確認
> しておいてください。
net userコマンドはコンパネの[ユーザとパスワード]から登録した全ユーザを表示するコマンドなのですね。
憶えておきます。
スレッド一覧


1857● Re[3]:コマンドラインからユーザ削除するには?[ nil ] 2004 01/17 23:19

Win側のユーザ管理と Cygwin側のユーザ側の管理は、原則として、別々に(自分で)管理する必要があります。自動的には、同期されません。

また、/et/passwd は、基本的には、自分で編集するものだと考えたほうがよいでしょう。

現在は、何を参考に Cygwin を利用されてますか? いろいろ基本的な部分で誤解があるようなので、Cygwin(もしくはUNIX)でのユーザ管理に関しては、もう一度書籍などを参考にされて、整理されたほうがよいと思います。

また net コマンドは Windows のコマンドなので、net help 等と、確認してみてください。


|という風に/etc/passwd にhoge01が存在しないのに
|net userコマンドではhoge01が表示されてしまいます。

?? 質問の意図が不明です。
はじめの質問では、NET USER user_name /DEL したのに、/etc/passwd に user_name が残っている、SSH login できてしまう、という内容のはずですが、それはどうなったのでしょうか? 何か関連がありますか?


|実行後は何らかのデーモン(?)をリスタートしないと/etc/passwdの変更が反映されないのですかね。

違います。

|どうすれば/etc/passwdの内容が反映されるのでしょうか?

何に対してでしょうか?


|hoge01はコマンドライン上でユーザ登録したユーザです。
|コンパネの[ユーザとパスワード]から登録したユーザでは有りません。

net コマンドでも、[ユーザとパスワード] でも、基本的には Win環境のユーザを登録することでは同じです。

|net userコマンドはコンパネの[ユーザとパスワード]から登録した全ユーザを表示するコマンドなのですね。

正確には違います。何かはやとちりをしているようだと困るので、HELP(net help user) や資料を確認してください。
スレッド一覧


1858● Re[4]:コマンドラインからユーザ削除するには?[ yy ] 2004 01/20 14:57
ご回答ありがとうございます。


>Win側のユーザ管理と
>Cygwin側のユーザ側の管理は、原則として、別々に(自分で)管理する必要があります。自動的には、同期されません。
>また、/et/passwd
>は、基本的には、自分で編集するものだと考えたほうがよいでしょう。
わかりました。

>現在は、何を参考に Cygwin を利用されてますか?
書籍ですね。

>いろいろ基本的な部分で誤解があるようなので、Cygwin(もしくはUNIX)でのユーザ管理に関しては、もう一度書籍などを参考にされて、整理されたほうがよいと思います。
UNIXと結構違う所があって混乱しています。
最初、Cygwinでもuserdel、useraddコマンドでユーザ削除・登録できるものだと思ってました。
(近い将来Cygwinでもuserdel、useraddが使用できるようになるんですかね)

>また net コマンドは Windows のコマンドなので、net help
>等と、確認してみてください。
net userコマンドが分かって来ました。

>|という風に/etc/passwd にhoge01が存在しないのに
>|net userコマンドではhoge01が表示されてしまいます。
>?? 質問の意図が不明です。
>はじめの質問では、NET USER user_name /DEL したのに、/etc/passwd に
>user_name が残っている、SSH login
>できてしまう、という内容のはずですが、それはどうなったのでしょうか?
>何か関連がありますか?
すいません。混乱しておりました。

>|実行後は何らかのデーモン(?)をリスタートしないと/etc/passwdの変更が反映されないのですかね。
>
>違います。
すいません。勘違いしてました。
たとえ、
$ cat /etc/passwd | grep hoge01
$

という風に/etc/passwdにhogeが記述されていないにも拘らず
$ passwd hoge01
Enter the new password (minimum of 5, maximum of 8 characters).
Please use a combination of upper and lower case letters and numbers.
New password:

となってしまうのが不思議だったのです。

$ passwd hoge01
passwd: unknown user hoge01

となる筈だと思い込んでいました。

$ cat /etc/passwd | grep hoge01
$ passwd hoge01
Enter the new password (minimum of 5, maximum of 8 characters).
Please use a combination of upper and lower case letters and numbers.
New password:

という風に/etc/passwdにはhoge01が記載されていないのに
passwdコマンドではhoge01というアカウントが存在しているかのような振舞いは

net userコマンドのデータベースにhoge01が依然として登録されたままになってたからでした!

先程、仰ってたWin2kでのユーザ管理とCygwinでのユーザ管理は別物だという事に私は無知でした。

>net コマンドでも、[ユーザとパスワード] でも、基本的には
>Win環境のユーザを登録することでは同じです。
>|net
>userコマンドはコンパネの[ユーザとパスワード]から登録した全ユーザを表示するコマンドなのですね。
>正確には違います。何かはやとちりをしているようだと困るので、HELP(net
>help user) や資料を確認してください。
うーむ、もしかして
net userコマンドだと
文字数制限や大文字・小文字区別無し
という制限が課せられる事が
コンパネの[ユーザとパスワード]との違い
という事でしょうか???



纏めると、、、
コマンドライン上でのユーザ登録は

[Administrator@host]$ NET USER user_name /ADD
[Administrator@host]$ mkpasswd -l -u user_name >> /etc/passwd
[Administrator@host]$ passwd user_name

削除は

[Administrator@host]$ NET USER user_name /DELETE
[Administrator@host]$ grep -v "^user_name:" /etc/passwd > /etc/passwd.new
[Administrator@host]$ mv /etc/passwd /etc/passwd.bak
[Administrator@host]$ mv /etc/passwd.new /etc/passwd

という風にするのですね。
スレッド一覧


1861● Re[5]:コマンドラインからユーザ削除するには?[ nil ] 2004 01/22 21:36
一言で書籍と言っても、ものによって向き不向きと善し悪しがあるので…
(私はCygwin関連の書籍に目を通した事が無いのですが)

Cygwin は UNIX では無くて UNIX like ツール集だと考えたほうが、混乱しないかたも多いと思います。

Cygwin の事はまず、"Cygwin Users Guide" (日本語訳は例によって http://www.sixnine.net/cygwin/cygwin-doc/index.html) や /usr/share/doc/ に目を通すのが有効だとつくづく思います。


|という風に/etc/passwdにはhoge01が記載されていないのに

NT系列では、passwd コマンドは /etc/passwd ではなく、Win側の認証機構をメインテナンスするようです。

(念の為。私は省略して書いてましたが、今までの話も Win9X系列ではちょっと事情が違います。参照 login.README)

||net userコマンドはコンパネの[ユーザとパスワード]から登録した全ユーザを
||表示するコマンドなのですね。
|うーむ、もしかして
|net userコマンドだと
|文字数制限や大文字・小文字区別無し
|という制限が課せられる事が
|コンパネの[ユーザとパスワード]との違い
|という事でしょうか???

私は詳しくないし、そういう違いがあるかどうか確認したことはありません。
管理者向けや構造解説の資料をあたってください。

とりあえず、net user で /add したユーザもちゃんと見えることはすぐに確認できることを指摘しておきます。(WXP Home だと隠れたユーザも見えるし)

|という風にするのですね。

あくまで単に特定の状況での例に過ぎないつもりなので… 自信ないので念の為書き直しておきます。(はじめからこう書いたほうがよかったのかな)


net user (やコントロールパネル) 等で Windows側のユーザを管理するだけでなく、それとは別に、Cygwin環境側のユーザ管理として、/etc/passwd の内容を更新する必要があります。

/etc/passwd を更新するには、mkpasswd を利用して(例えばmkpasswd -l -c)、作り直したり、追加や削除するには、自前で書き換える必要があります。
("Cygwin Users Guide" の "mkpasswd" の項や、login.README を参照)

net user の各オプションについては、HELPを参照するか("net help user") 管理者向けの資料を確認してください。

- ローカルのホストでのユーザの新規の追加登録(例)
$ net user USER_NAME /add
$ mkpasswd -l -u USER_NAME >> /etc/passwd
$ passwd USER_NAME

- 上記で登録した場合の削除(例)
$ net user USER_NAME /delete
$ grep -v "^USER_NAME:" /etc/passwd > /etc/passwd.new
$ mv /etc/passwd /etc/passwd.bak
$ mv /etc/passwd.new /etc/passwd
スレッド一覧


1866● (お礼)Re[6]:コマンドラインからユーザ削除するには?[ yy ] 2004 01/23 23:32
> 一言で書籍と言っても、ものによって向き不向きと善し悪しがあるので…
> (私はCygwin関連の書籍に目を通した事が無いのですが)
そうなんですか。

> Cygwin は UNIX では無くて UNIX like ツール集だと考えたほうが、混乱しないかた
> も多いと思います。
了解しました。

> Cygwin の事はまず、"Cygwin Users Guide" (日本語訳は例によって
> http://www.sixnine.net/cygwin/cygwin-doc/index.html) や /usr/share/doc/ に目を通すのが有効だとつ
> くづく思います。
どうもありがとうございます。

> NT系列では、passwd コマンドは /etc/passwd ではなく、Win側の認証機構をメイン
> テナンスするようです。
そうなんですか。とても勉強になります。


> /etc/passwd を更新するには、mkpasswd を利用して(例えばmkpasswd -l -c)、作り
> 直したり、追加や削除するには、自前で書き換える必要があります。
> ("Cygwin Users Guide" の "mkpasswd" の項や、login.README を参照)
>
> net user の各オプションについては、HELPを参照するか("net help user") 管理者
> 向けの資料を確認してください。
>
> - ローカルのホストでのユーザの新規の追加登録(例)
> $ net user USER_NAME /add
> $ mkpasswd -l -u USER_NAME >> /etc/passwd
> $ passwd USER_NAME
>
> - 上記で登録した場合の削除(例)
> $ net user USER_NAME /delete
> $ grep -v "^USER_NAME:" /etc/passwd > /etc/passwd.new
> $ mv /etc/passwd /etc/passwd.bak
> $ mv /etc/passwd.new /etc/passwd
大変ありがとうございます。
これもしっかり憶えておきます。
スレッド一覧

早田のホームページへ
CGIROOM