您认为这是一个安全问题吗?尝试编写 cif 脚本

您认为这是一个安全问题吗?尝试编写 cif 脚本

我正在尝试编写安装 cifs 共享的脚本。下面是我的脚本,我在 proxmox v7 debian 11 VM 上运行,仅 cli,无 gui。我通过 putty 连接,该脚本位于/srv/share.我还设置了 fstab 以自动安装它,但在测试此脚本时我卸载了它。

// Beginning of script  
#! /bin/bash  
share="/storage"

// Test for share connectivity and connect if needed  
if [ ! -d $share/_Scripts ];  
then  
// following command is all one line  
mount -t cifs //x.x.x.x/storage /storage -o uid=root,gid=smb_admins,credentials=/home/xxxxx/.cifs,file_mode=0770,dir_mode=0770  
else  
echo “Share is already connected”  
fi  
// End of Script

如果我以我的用户身份运行它,它不会给出任何提示,没有错误,什么也没有。如果我随后在命令提示符下键入 exit,它会输出“exit”,然后输出“共享已连接”,然后返回到用户的命令提示符。但是,如果我以 运行脚本sudo,它会像平常一样询问我的用户密码,不显示任何输出,并直接将我带入 root 提示符,而不询问 root 的密码,这让我有些担心。如果我随后exit在根提示符下键入,它会执行与常规用户下相同的操作,并将我带回常规用户的提示符。

我确信这是我搞砸的,但这对我来说似乎是非常危险的行为。你的想法?

答案1

你的第一行是错误的。应该是#!,不是$!。前者是对 shell 的注释,但告诉操作系统要使用哪个程序来执行脚本,后者包含最后执行的后台作业的编号(如果我没记错的话)。假设没有这样的东西,它会扩展为空,因此脚本的开头只是启动一个 bash 进程,以 exit 结束,然后运行实际的脚本。

我没有看到安全问题,这当然是你的脚本中的一个错误,但无论如何执行它的人都有 sudo 权限。

相关内容