正常运行时间不显示非特权用户的输出

正常运行时间不显示非特权用户的输出

我有一个 12.04LTS 系统,当普通用户(即非 root 用户)运行 uptime 命令时,该命令不会产生任何输出:

bbx@bard:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 12.04.3 LTS
Release:    12.04
Codename:   precise
bbx@bard:~$ id
uid=1000(bbx) gid=1000(bbx) groups=1000(bbx),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),111(lpadmin),112(sambashare)
bbx@bard:~$ w
 10:42:56 up 21 days, 21:31,  1 user,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    redacted          10:35    0.00s  0.35s  0.00s w
bbx@bard:~$ uptime
bbx@bard:~$ echo $?
0

还...

bbx@bard:~$ ls -l /proc/uptime /proc/loadavg
-r--r--r-- 1 root root 0 Jan 21 12:57 /proc/loadavg
-r--r--r-- 1 root root 0 Jan 21 12:57 /proc/uptime

strace 输出是可从 PasteBin 获得。

同时,当由 root 调用时,uptime 工作正常(输出与 w(1) 命令匹配):

root@bard:~# id
uid=0(root) gid=0(root) groups=0(root)
root@bard:~# uptime
 10:45:49 up 21 days, 21:34,  1 user,  load average: 0.00, 0.01, 0.05

有人知道为什么吗?

答案1

看看你提供的 strace:

bbx@bard:~$ 更多 strace-uptime.txt
执行(“/home/bbx/bin/正常运行时间", ["正常运行时间"], [/* 15 变量 */]) = 0
...

您的非 root 用户bbx有一个脚本~/bin/uptime需要执行。以 root 身份运行时,另一个uptime程序会执行。要解决此问题,请检查/home/bbx/bin/uptime那里正在执行的操作,并尽可能将其删除。否则,请使用完整路径 ( /usr/bin/uptime)。

相关内容