在自动启动中以root身份执行脚本

时间:2016-04-19 09:58:11

标签: linux bash debian archlinux autostart

我需要启动一个登录脚本。此登录脚本包含以下几个命令:* cp,ln, chown。* 但是“chown”需要才能 root 才能提高效率。所以我的脚本运行良好,除了“chown”命令。

我的环境: Debian Jessie,LXDE。

我的脚本(在/usr/local/bin/transfertPOL.sh中):

    #!/bin/bash
    #transfert de POL au démarrage de la session
    groupe=$(id -gn $1)
    uid=$(id -u $1)
    POL=/var/POL
    home=$(eval echo ~$1)
    lien=$home/.PlayOnLinux
    #changement de propriétaire du dossier
    sudo chown -h -R $1:$groupe $POL
    ln -s $POL $lien
    sudo chown -h -R $1:$groupe $lien
    #Copie des raccourcis sur le Bureau
    cp --preserve=ownership $POL/shorcuts/*.desktop $home/Desktop

/etc/xdg/autostart/transfertPOL.desktop中的我的桌面条目:

    [Desktop Entry]

    Type=Application

    Exec=sh /usr/local/bin/transfertPOL.sh

The Exec,我尝试了几件事:

    Exec=sh /usr/local/bin/transfertPOL.sh #Work, but the chown don't

    Exec=/bin/bash/ -c "sudo /usr/local/bin/transfertPOL.sh" #doesn't work

    Exec=sudo sh /usr/local/bin/transfertPOL.sh #Work, but the chown don't

对于这个,我用

创建了一个/etc/sudoers.d/transfert
%users ALL=NOPASSWD: /usr/local/bin/transfertPOL.sh

该脚本是PlayOnLinux本地文件夹的符号链接。每个用户都需要访问此特定的POL文件夹。因此,当用户进行日志记录时,chown正在更改文件夹权限。

你有什么想法帮助我吗?

由于

1 个答案:

答案 0 :(得分:0)

您正在sh命令中调用Exec

  

Exec=sudo sh /usr/local/bin/transfertPOL.sh

所以sudoers条目:

  

%users ALL=NOPASSWD: /usr/local/bin/transfertPOL.sh

不会以root权限运行。

您可能希望让脚本可执行:

sudo chmod +x /usr/local/bin/transfertPOL.sh

Exec命令更改为:

Exec=sudo /usr/local/bin/transfertPOL.sh

但是:我们在Linux中为此设置了组,尝试为要读/写的文件设置正确的组权限。那时你根本不需要那个脚本。