gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:24:59 32 4
gpt4 key购买 nike

我需要启动一个登录脚本。此登录脚本包含多个命令,例如:*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

执行官,我尝试了几件事:

    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 本地文件夹的符号链接(symbolic link)。每个用户都需要访问这个特定的 POL 文件夹。因此,当用户登录时,chown 正在更改文件夹权限。

你有什么想法可以帮助我吗?

谢谢

最佳答案

您正在 Exec 命令中调用 sh:

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 中为此设置了组,请尝试为您要读/写的文件设置正确的组权限。那时你根本不需要那个脚本。

关于linux - 在自动启动中以 root 身份执行脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36714992/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com