Fab*_*bby 21 bash sudo scripts
sudoers文件已包含/bin/mount -t cifs //*/* /media/* -o username=*所有操作员的命令cifs通过只输入一次密码的脚本安装共享,而不是两次。此脚本有效:
#!/bin/bash
sudo 'mount -t cifs //192.168.1.1/home /media/$USER/home -o username=$USER'
Run Code Online (Sandbox Code Playgroud)
...但它要求用户输入两次相同的密码!
sudo这也可以:
#!/bin/bash
echo -n Password:
read -s szPassword
echo $szPassword | sudo -S sh -c 'echo $szPassword | mount -t cifs //192.168.1.1/home /media/$USER/home -o username=$USER'
Run Code Online (Sandbox Code Playgroud)
...但这需要我允许所有运营商用户能够sudo sh(主要安全问题)
如何安装CIFS共享在bash ¹没有把sh中sudoers的文件,也没有建立一个永久/临时文件???
注 1:没有 python、perl、C、Go,...好吗?
注 2:我知道我可以通过sudoers文件删除密码,但我试图加强安全性,而不是放松它,同时又不放弃便利......
Bra*_*iam 27
您应该改为让用户调用使用 sudo as sudo script。只需检查脚本是否以 root 身份运行,如果不是要求它
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root, use sudo "$0" instead" 1>&2
exit 1
fi
Run Code Online (Sandbox Code Playgroud)
不要试图获取用户的密码。
以下脚本:
#!/bin/bash
read -p "Password: " -s szPassword
printf "%s\n" "$szPassword" | sudo --stdin mount -t cifs //192.168.1.1/home /media/$USER/home -o username=$USER,password="$szPassword"
Run Code Online (Sandbox Code Playgroud)
只是工作和: