Điều gì sẽ khiến ps báo cáo uid thay vì tên người dùng?


28

Tôi đã cài đặt Eucalyptus trên máy Linux của mình và tôi nhận thấy rằng đối với các quy trình thuộc sở hữu của người dùng bạch đàn, ps báo cáo userid thay vì tên người dùng. Ví dụ:

$ 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

Điều gì sẽ gây ra điều này xảy ra?

Lưu ý rằng có một mục thích hợp trong / etc / passwd:

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

Cũng lưu ý rằng tài sản ls báo cáo quyền sở hữu các tệp bằng tài khoản bạch đàn:

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

Câu trả lời:


41

ps sử dụng uid khi tên người dùng dài hơn 8 ký tự.


Cuộc gọi tốt Từ trang man: "Đây sẽ là ID người dùng văn bản, nếu có thể lấy được và độ rộng trường cho phép hoặc biểu thị thập phân theo cách khác."
Michael Mrozek

Hoặc có lẽ không có cách nào để dịch UID sang tên.
vonbrand

12

Bạn có thể kiểm soát độ rộng của các cột:

ps o user:12,pid,%cpu,%mem,vsz,rss,tty,stat,start,time,comm

cái này tái tạo uđịnh dạng của ps u, nhưng nó làm cho trường người dùng rộng 12 ký tự.


0

Chắc chắn bạn có vấn đề với / etc / passwd ... bạn đã chỉnh sửa thủ công, phải không? :)

dù sao, tôi đã tái tạo vấn đề sao chép dòng của người dùng trong / etc / passwd và thay đổi tên người dùng theo id người dùng.

Như thế này:

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

Lưu ý rằng "người dùng được đánh số" là người đầu tiên.

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

Hãy thử thực hiện "whoami", chắc chắn nó sẽ trả về 107 :)

Đó là một hành vi kỳ lạ, ps trả về số và là tên bình thường: -m ...

Để giải quyết nó:

  • chỉ cần chỉnh sửa / etc / passwd và xóa mục nhập không chính xác
  • hoặc sử dụng 'userdel 107', nhưng tất cả các chương trình từ bạch đàn phải được dừng lại
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.