以 root 身份登录后自动运行 Windows 共享挂载脚本

以 root 身份登录后自动运行 Windows 共享挂载脚本

我到处寻找解决方案,让我在登录后运行 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。

谢谢你们的帮助:)

相关内容