为什么运行此 awk 命令时会出现“egrep: /etc/shadow: Permission denied”?

为什么运行此 awk 命令时会出现“egrep: /etc/shadow: Permission denied”?

有谁知道为什么这个命令:

sudo awk -v LIMIT=50000 -F: '($3>=LIMIT) && ($3!=65534) {print $1}' /etc/passwd | tee - |egrep -f - /etc/shadow > /home/bulgarini/server_transfer/shadow.sync

传达信息

egrep: /etc/shadow: Permission denied

答案1

查看文件的权限/etc/shadow

ls -l /etc/shadow

输出类似于:

-rw-r----- 1 root shadow 1530 apr 10 08:47 /etc/shadow

因此,只有 root 和 shadow 组中的用户才有权读取该文件。因此,总而言之,您需要以 root 身份运行该命令。

如果您认为因为您在复合命令sudo前面添加了 ,所以可以以 root 身份运行该命令,那么您就错了 - 在这种情况下,sudo只会影响该awk命令,而不会影响管道 ( |) 之后的其他任何内容。我建议您执行以下操作:

sudo -i
awk -v LIMIT=50000 -F: '($3>=LIMIT) && ($3!=65534) {print $1}' /etc/passwd | tee - |egrep -f - /etc/shadow > /home/bulgarini/server_transfer/shadow.sync
exit

答案2

尝试这个

sudo awk -v LIMIT=50000 -F: '($3>=LIMIT) && ($3!=65534) {print $1}' /etc/passwd | tee - |sudo egrep -f - /etc/shadow > /home/bulgarini/server_transfer/shadow.sync

或者

sudo awk -v LIMIT=50000 -F: '($3>=LIMIT) && ($3!=65534) {print $1}' /etc/passwd | tee - | sudo egrep -f - /etc/shadow > /home/bulgarini/server_transfer/shadow.sync

您需要 sudo 权限才能运行 egrep,并且在 | 之后被视为新命令,因此它也需要 sudo

相关内容