我需要启动一个登录脚本。此登录脚本包含以下几个命令:* 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正在更改文件夹权限。
你有什么想法帮助我吗?
由于
答案 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中为此设置了组,尝试为要读/写的文件设置正确的组权限。那时你根本不需要那个脚本。