- PR -

Linuxユーザー一覧表示方法

投稿者投稿内容
McLaren
ぬし
会議室デビュー日: 2002/01/15
投稿数: 784
お住まい・勤務地: 東京
投稿日時: 2002-05-08 18:03
おお〜。。これはかっこいいですね。
人間以外のユーザ(gdm,apache,nobodyなど。。)は表示したくないのですが、そんなことはできるでしょうか。。
H2
ぬし
会議室デビュー日: 2001/09/06
投稿数: 586
お住まい・勤務地: 港
投稿日時: 2002-05-08 18:40
> 人間以外のユーザ(gdm,apache,nobodyなど。。)は表示したくないのですが、
> そんなことはできるでしょうか。。

人間ユーザが/homeにホームディレクトリがあると仮定して、まずgrepで'/home'が含まれる行だけを取り出して、それをcutするとか。でも自分のLinuxで試したらwnnまで出てきてしまいました。(あっ、ホームディレクトリが/home/wnnになってる・・・)また、rootのホームディレクトリは/rootなので結果には現れませんでした。

もしくは '/bin/bash'でもできるのかな?

$ grep '/home' /etc/passwd | cut -f1 -d:
McLaren
ぬし
会議室デビュー日: 2002/01/15
投稿数: 784
お住まい・勤務地: 東京
投稿日時: 2002-05-08 18:47
なるほど。。いろいろありがとうございます。
H2
ぬし
会議室デビュー日: 2001/09/06
投稿数: 586
お住まい・勤務地: 港
投稿日時: 2002-05-08 19:25
いまさらながら・・・、

> grep (またはegrep)を使うのは?
> cat /etc/passwd | grep '正規表現'

って、わざわざパイプを使わなくても、
grep '正規表現' /etc/passwd
で十分でした・・・。
EF8
会議室デビュー日: 2002/05/07
投稿数: 3
投稿日時: 2002-05-09 06:14
一番確実でバグがすくなくてすみそうのはUIDを使う方法じゃないでしょうか?

例えばredhatなら、一般ユーザはUIDが500から割り振られ、システムアカウントは
一般的にそれ未満のUID(大体100未満?)を使うので、

「/etc/passwdからUIDが500以上のユーザ名のみを表字する」

と考えれば、こんな感じになります。

-----------------
while read LINE
do
if [ `echo $LINE | cut -f3 -d:` -ge 500 ]
then
echo $LINE | cut -f1 -d:
fi
done < /etc/passwd
-----------------

cutコマンド1行のものと比べるとかなりめんどくさ…。工夫すればもっと簡単で
うまい方法がみつかるかもしれませんね。
McLaren
ぬし
会議室デビュー日: 2002/01/15
投稿数: 784
お住まい・勤務地: 東京
投稿日時: 2002-05-09 08:10
あ。それいいですね〜。他にも色々あれば是非とも。
ちとり
大ベテラン
会議室デビュー日: 2002/05/12
投稿数: 113
お住まい・勤務地: 神奈川県
投稿日時: 2002-05-12 13:28
初めまして。

私はgawkやawkを使用しています。
$ awk '{ FS=":" }''{ print $1"¥t"$2"¥t"$3"¥t"$4"¥t"$5"¥t"$6 }' /etc/passwd
セパレートを":"、タブ区切り表示"¥t"、表示させる列"$?"
という具合です。

¥の半角表示が書き込めないので、全角にしています。

こんなのをperlなんかでshadowファイルと組み合わせながら、スクリプトを
作成すると、異なるOS上でのサーバ間ユーザ移行なんかが楽にできたり
するんですよね。
(あくまで一例にしか過ぎませんが・・・)

ツールに頼りすぎている私です。ハイ。
McLaren
ぬし
会議室デビュー日: 2002/01/15
投稿数: 784
お住まい・勤務地: 東京
投稿日時: 2002-05-13 08:42
 お世話になります。

「異なるOS上でのサーバ間ユーザ移行なんかが楽にできたり
するんですよね。」

について、もう少し詳しくお聞かせ願えないでしょうか。。

スキルアップ/キャリアアップ(JOB@IT)