awk 命令对 rbash 用户不起作用

awk 命令对 rbash 用户不起作用

我已经创建了一个 rbash 用户(受限用户)vega,并且我已经为以下命令创建了软链接:awk、ls、free、top 等。正在尝试运行一个用于资源利用的脚本,其中一些命令使用 awk。

如果我通过管理员运行以下命令就能得到结果:

admin@VD1-21-2-1:/home/vega$ free -m |grep Mem |awk '{print $3/$2 * 100.0}'
16.4827
admin@VD1-21-2-1:/home/vega$ top -b -n 1 -d1 |grep "Cpu(s)"| awk -F' ' '{print $2}'|awk -F' ' '{print $1}'
0.3

当我通过我创建的受限用户执行它们时,出现以下错误:

vega@VD1-21-2-1:~$ free -m |grep Mem |awk '{print $3/$2 * 100.0}'
-su: /usr/bin/awk: Permission denied

vega@VD1-21-2-1:~$ top -b -n 1 -d1 |grep "Cpu(s)"| awk -F' ' '{print $2}'|awk -F' ' '{print $1}'
-su: /usr/bin/awk: Permission denied
-su: /usr/bin/awk: Permission denied

我使用了以下命令进行软链接:

sudo ln -s /bin/ls /home/vega/bin 
sudo ln -s /bin/top /home/vega/bin 
sudo ln -s /bin/free /home/vega/bin 
sudo ln -s /bin/awk /home/vega/bin 
sudo ln -s /bin/ssh /home/vega/bin

如何解决此权限被拒绝错误并且命令应该给出正确的输出。

回复@terdon:嗨@terdon,我尝试了您的步骤,得到以下结果:

vega@VD1-21-2-1:~$ echo $PATH /home/vega/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
without sudo it is not working: 

admin@VD1-21-2-1:/home/vega$ ln -s /bin/ls /home/vega/bin ln: failed to create symbolic link '/home/vega/bin/ls': Permission denied 

也通过 root 尝试过:

root@VD1-21-2-1:~# ln -s /bin/ls /home/vega/bin ln: failed to create symbolic link '/home/vega/bin/ls': File exists 

简单来说,我想让受限用户毫无问题地访问我的所有命令?

答案1

awk 不在 /bin 中,而是在 /usr/bin 中。因此,您需要的命令是

sudo ln -fs /usr/bin/awk /home/vega/bin

-f 标志将强制替换链接,如果您已经有无效的软链接,您可能需要这样做。

您可以使用以下方式检查任何可执行文件的位置:

which awk

它会告诉你它位于何处。

请注意 ssh 也在 /usr/bin 中

相关内容