有谁知道为什么这个命令:
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