遇到一个非常奇怪的问题,我根本无法理解。我以 root 身份运行一个脚本,以检查用户 X 是否存在许多 sudo 规则。当我运行时:
su $USER -c "sudo -l > $USER_sudo_rules.lst"
它包裹了几行。行应显示为:
(oracle) NOPASSWD: /opt/oracle/oracle_base/product/*/OPatch/opatch lsinventory
(oracle) NOPASSWD: /usr/bin/cat /opt/oracle/*/diag/tnslsnr/*/listener_*/trace/*
但似乎输出为:
(oracle) NOPASSWD: /opt/oracle/oracle_base/product/*/OPatch/opatch
lsinventory
(oracle) NOPASSWD: /usr/bin/cat
/opt/oracle/*/diag/tnslsnr/*/listener_*/trace/*
我不知道为什么。我尝试了各种管道sudo -l
到其他各种工具(例如 cat、less、fold)来尝试操纵输出,但似乎没有任何影响。也许我可以做一些后期处理来将它们加入进来,但希望有一些更干净的东西。 SHELL 是 Redhat 上的 ksh。此“$USER_sudo_rules.lst”文件将与预定义的“sudo 规则列表”进行比较,以确保主机上存在正确的规则。