我到处寻找解决方案,让我在登录后运行 CIFS 自动挂载脚本,延迟约 20 秒。我尝试过。将脚本添加到 visudo:
rait ALL=(ALL) NOPASSWD: /home/rait/Downloads/Testing/mount.sh, /bin/mount
之后将脚本添加到启动应用程序,但它不起作用。我还尝试将其添加到 .bash_profile 和 rc.d。在 rc.d 中它可以工作,但登录后不会运行它。登录后我需要它,因为它会通过 GUI 询问人们他们的 AD 用户和密码。脚本本身如下所示:
#!/bin/bash
MOUNTDIR=Public
DIRNAME=Avalik
DOMAIN=Domain
SERVER=server_adr
SHARE=shares
if [ ! -d ${HOME}/Documents/${DIRNAME} ]; then
mkdir ${HOME}/Documents/${DIRNAME}
fi
# get the windows username
wUsername=`zenity --entry --width=300 --title="Mount $MOUNTDIR" --text="Kasutaja
nimi:"`
if [ $? -ne 0 ]; then
exit 1
fi
# get the windows password
wPassword=`zenity --entry --width=300 --title="Mount $MOUNTDIR" --text="Parool:"
--hide-text`
if [ $? -ne 0 ]; then
exit 1
fi
mount -t cifs //$SERVER/$SHARE ${HOME}/Documents/${DIRNAME} -o username=${wUsern
ame},password=${wPassword},domain=${DOMAIN}
if [ $? -eq 0 ]; then
zenity --info --title="Mount OK!" --text="Mount OK!"
else
zenity --error --title="Mount Failed!" --text="Mount Failed!"
fi
我希望有人知道该怎么做。
附言:在我编辑了 visudo 之后,它现在在我打开终端后要求输入 root 密码。因此,每次我登录后打开终端时,它都会要求我输入 sudo 密码。一旦我删除 visudo 中应该运行脚本的行,它就不会再要求输入密码了。
请帮忙 :)
答案1
我不知道这是否能解决您的问题,但您可以尝试使用设置用户标识标志。为此,请让您的脚本归 root 所有(chown root:root <filename>
),然后chmod +s <filename>
。
当然,您必须小心将哪些程序设置为 setuid root,因为如果程序存在安全漏洞,导致用户可以使其运行任意代码,则它可能会被滥用来获得完全的 root 访问权限。
关于登录后的自动启动,我认为确实是“启动应用程序”才是应该放的地方。
答案2
通过将以下内容添加到 sudoers 来修复此问题:
%sudo ALL=(ALL) NOPASSWD: /bin/mount, /bin/umount
还有启动应用程序命令被编辑为 /home/user/script/path/script.sh,它开始工作。还在脚本中的 mount 命令前面添加了 sudo。
谢谢你们的帮助:)