使用 sudo 前缀运行的管道命令会产生缩进输出

使用 sudo 前缀运行的管道命令会产生缩进输出

我有一个有趣的在我的大多数服务器上都存在一个问题,以另一个程序作为前缀sudo|通过管道传输的命令最终会以缩进的输出结束。

请注意,我将使用lsb_release命令作为示例,但是这个问题在任何情况下都会发生任何命令(例如读取日志/配置文件)。

以下是使用和不使用 sudo 的正常输出:

$ sudo lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.4 LTS
Release:    18.04
Codename:   bionic

$ lsb_release -a | cat
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.4 LTS
Release:    18.04
Codename:   bionic

合并后的输出如下须藤和一个管道

$ sudo lsb_release -a | cat
No LSB modules are available.
Distributor ID: Ubuntu
                      Description:  Ubuntu 18.04.4 LTS
                                                          Release:  18.04
                                                                             Codename:  bionic

有趣的是,这确实不是当我们以 root 用户身份运行命令时会发生这种情况。

$ sudo su
# lsb_release -a | cat
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.4 LTS
Release:    18.04
Codename:   bionic

这些服务器上有多个用户,我们都遇到了这个问题。

有任何想法吗?

更新的示例:

不显示制表符/空格字符cat --show-all

$ sudo lsb_release -a | cat --show-all
No LSB modules are available.
Distributor ID:^IUbuntu$
                        Description:^IUbuntu 18.04.5 LTS$
                                                         Release:^I18.04$
                                                                         Codename:^Ibionic$

输出有同样的问题od -bc

$ sudo lsb_release -a | od -bc
No LSB modules are available.
0000000 104 151 163 164 162 151 142 165 164 157 162 040 111 104 072 011
                                                                                 D   i   s   t   r   i   b   u   t   o   r       I   D   :  \t
       0000020 125 142 165 156 164 165 012 104 145 163 143 162 151 160 164 151
                                                                                        U   b   u   n   t   u  \n   D   e   s   c   r   i   p   t   i
              0000040 157 156 072 011 125 142 165 156 164 165 040 061 070 056 060 064
                                                                                               o   n   :  \t   U   b   u   n   t   u       1   8   .   0   4
                     0000060 056 065 040 114 124 123 012 122 145 154 145 141 163 145 072 011
                                                                                                      .   5       L   T   S  \n   R   e   l   e   a   s   e   :  \t
                            0000100 061 070 056 060 064 012 103 157 144 145 156 141 155 145 072 011
                                                                                                             1   8   .   0   4  \n   C   o   d   e   n   a   m   e   :  \t
                                   0000120 142 151 157 156 151 143 012
          b   i   o   n   i   c  \n
0000127

$TERM值:

$ echo $TERM
xterm-256color

答案1

看起来问题与Defaults use_pty中的设置有关/etc/sudoers,该设置是为了强化 CIS 而添加的。注释掉该行后,服务器不再存在缩进问题。

$ sudo lsb_release -a | cat
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.5 LTS
Release:    18.04
Codename:   bionic

通读https://www.sudo.ws/legacy.html,我怀疑更新sudo到较新的版本将解决该问题。

例如,这个改变看起来很有希望

1.8.27版本和1.8.26版本之间的主要变化:

[...]

如果配置了 I/O 日志插件但该插件实际上没有记录任何 I/O,则 sudo 将不再强制在伪 tty 中运行命令。

相关内容