我正在尝试编写安装 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 权限。