psがユーザー名ではなくuidを報告する原因は何ですか?


28

私が持っているユーカリは私のLinuxマシンにインストールされている、と私はユーカリのユーザーが所有するプロセスのために、気づいたPSは、ユーザーIDの代わりに、ユーザー名を報告します。例えば:

$ sudo -i -u eucalyptus
$ ps u
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
107      29764  0.0  0.0  19376  2104 pts/2    S    11:43   0:00 -bash
107      30198  0.0  0.0  15256  1180 pts/2    R+   11:44   0:00 ps u

これが起こる原因は何ですか?

/ etc / passwdに適切なエントリがあることに注意してください。

$ grep eucalyptus /etc/passwd
eucalyptus:x:107:115::/var/lib/eucalyptus:/bin/bash

lsプロパティは、ユーカリアカウントによるファイルの所有権を報告することにも注意してください。

$ touch foo
$ ls -l foo
-rw-r--r-- 1 eucalyptus eucalyptus 0 2010-09-23 11:47 foo

回答:


41

ps ユーザー名が8文字より長い場合、uidを使用します。


良い電話。manページから:「これは、取得できてフィールド幅が許す場合はテキストのユーザーIDになり、そうでなければ10進表現になります。」
マイケルMrozek

または、UIDを名前に変換する方法がないかもしれません。
フォンブランド


0

/ etc / passwdに問題があることを確認してください...手動で編集しましたよね?:)

とにかく、/ etc / passwdのユーザーの行をコピーし、ユーザーIDでユーザー名変更する問題を再現しました

このような:

root@juice:/etc/# grep 129 /etc/passwd
129:x:129:137:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false
puppet:x:129:137:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false

「番号付きユーザー」が最初であることに注意してください。

root@juice:/etc/# sudo -u puppet -s
129@juice:/etc/$ whoami
129

129@juice:/etc/$ touch /tmp/a
129@juice:/etc/$ ls -l /tmp/a
-rw-r--r-- 1 129 puppet 0 2010-09-23 19:12 /tmp/a

129@juice:/etc/$ ps u
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
129      12443  2.2  0.1   7112  4380 pts/1    S    19:12   0:00 /bin/bash
129      12490  0.0  0.0   2716  1068 pts/1    R+   19:12   0:00 ps u

「whoami」を実行してみてください。107を返します。

それは奇妙な振る舞いです。psは数値を返し、lsは通常の名前を返します:-m ...

解決するには:

  • / etc / passwdを編集して、誤ったエントリを削除するだけです
  • または「userdel 107」を使用しますが、ユーカリのすべてのプログラムを停止する必要があります
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.