Voglio usare launchd per eseguire i comandi bindfs al login, come root. Ho un plist in /Library/LaunchAgents/loginsftpjailmount.plist (con chmod 600) e uno script di shell in /usr/local/bin/loginsftpjailmount.sh.
Dovrei iniziare dicendo che funziona - se cambio lo script di bash per eseguire
mkdir /Users/Me/Desktop/itworks
quindi crea correttamente la directory "itworks", sia all'accesso che all'esecuzione
sudo launchctl load /Library/launchAgents/loginsftpjailmount.plist
E la cartella creata è di proprietà di root e devo digitare la mia password per cancellarla. Quando eseguo manualmente lo script bash dal terminale usando sudo, il comando bindfs funziona.
Quindi riassumendo: so che la sceneggiatura funziona. So che il plist funziona. So che lavorano insieme a launchd. Ma il comando bindfs non funziona! Ho controllato il registro di sistema con
sudo grep com.user /var/log/system.log
e dice che termina con l'errore 127 (com.user è parte dell'etichetta per il mio plist). Ho cercato online e nessuna delle soluzioni per l'errore 127 funziona per me. Per riferimento, due plists che ho usato sono:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.user.loginitem</string>
<key>ProgramArguments</key>
<array>
<string>bash</string>
<string>-c</string>
<string>bash -c "bindfs /Volumes/BRIGHTRED/ServedDocuments /sftpjail/Documents"</string>
</array>
<key>RunAtLoad</key>
<true/>
e anche
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.user.loginitem</string>
<key>Program</key>
<string>/usr/local/bin/loginsftpjailmount.sh</string>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>