除非以 sudo 身份运行,否则 iwconfig 不会报告链接质量

doc*_*nge 5 command-line sudo wireless networking

我在 2013 年末的 Macbook Pro Retina(通过Refind启动)上运行 Ubuntu 13.10 。

我的问题是运行iwconfig不输出Link QualitySignal Level除非以 sudo 运行。

me:~$ sudo iwconfig
eth0      IEEE 802.11abg  ESSID:"redacted_essid"  
          Mode:Managed  Frequency:2.447 GHz  Access Point: RE:DA:CT:ED:XX:XX   
          Bit Rate=144 Mb/s   Tx-Power=200 dBm   
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off
          Link Quality=70/70  Signal level=-35 dBm  
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

lo        no wireless extensions.
Run Code Online (Sandbox Code Playgroud)

不像sudo:

me:~$ iwconfig  
eth0      IEEE 802.11abg  ESSID:"redacted_essid"  
          Mode:Managed  Frequency:2.447 GHz  Access Point: RE:DA:CT:ED:XX:XX   
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Power Management:off

lo        no wireless extensions.
Run Code Online (Sandbox Code Playgroud)

这是正常的吗,我可以做些什么让它在没有超级用户权限的情况下工作?

我的原因是,Awesome Window Manager 的 Vicious Wifi Widget 希望能够以iwconfig非 root身份查询此信息:http : //git.sysphere.org/vicious/tree/widgets/wifi.lua

非常感谢。

sou*_* c. 6

该命令iwconfig是一个系统管理命令(通常只用于root)。见man iwconfig。它记录在联机帮助页的第 8 节中。要了解有关联机帮助页的更多信息,请参阅此帖子

如果您在终端中尝试,

$ type iwconfig 
iwconfig is hashed (/sbin/iwconfig)
Run Code Online (Sandbox Code Playgroud)

/sbin包含特权可执行文件。这就是您在以非 root 用户身份使用时无法使用其全部功能的原因。没有什么异常。

如何在sudo iwconfig没有密码的情况下使用 [来源]

您可以NOPASSWD/etc/sudoers文件中使用该指令。

如果您的用户被调用user并且您的主机被调用,host您可以将这些行添加到/etc/sudoers

user host = (root) NOPASSWD: /sbin/iwconfig
Run Code Online (Sandbox Code Playgroud)

这将允许用户在不输入密码的情况下user运行命令。所有其他ed 命令仍然需要密码。sudo iwconfighostsudo

推荐使用sudo visudo来编辑文件。在继续之前阅读这篇不错的文章。如果您不想修改您的/etc/sudoers


另一种不好的方法 [不推荐]是要求sudo从已存储密码的文件中读取密码。但这可能是严重的安全问题-S开关允许sudo从标准输入读取密码。

如果您将密码存储在mypsd.txt仅包含您的密码后跟一个换行符的文件中。然后以下命令将运行从该文件中读取您的密码,

cat /path/to/mypsd.txt | sudo -S iwconfig
Run Code Online (Sandbox Code Playgroud)