Étape 1. créez un script avec la commande bind à l'aide de n'importe quel éditeur. Par exemple:
sudo emacs bind_user_directories.sh
Contenu:
#!/bin/bash
#NOTE: this file would be placed in /usr/local/sbin/ folder as bind_user_directories.sh
#alternatively it could be placed in /etc/init.d/ ... (I guess)
### BEGIN INIT INFO
# Provides: bind_user_directories
# Required-Start:
# Required-Stop:
# Should-Start: $named
# Default-Start: 0 2 3 4 5 6 (I guess...)
# Default-Stop: 1
# Short-Description: mount --bind for a user
# Description: runs mount --bind command for certain pre-defined directories for a specific user
### END INIT INFO
# What is this?
DESC="bind_user_directories"
# See how we were called.
case "$1" in
start)
log_progress_msg "bind directories for user..."
sudo mount --bind /source/path /target/path
log_progress_msg "done: bind directories for user"
;;
stop)
log_progress_msg "umount --bind directories for user..."
sudo umount /target/path
log_progress_msg "done: unbind directories for user"
;;
restart)
$0 stop
sleep 1
$0 start
;;
*)
#log_success_msg "Usage: bind_user_directories {start|stop|restart}"
log_success_msg "Usage: service bind_user_directories <start|stop|restart>"
exit 1
;;
esac
exit 0
Étape 2. enregistrez bind_user_directories.sh et rendez-le exécutable:
chmod a+x bind_user_directories.sh
Étape 3. liez-le à un emplacement approprié tel que / usr / local / sbin:
sudo ln -s bind_user_directories.sh /usr/local/sbin/bind_user_directories.sh
Étape 4. créez le script upstart:
sudo emacs /etc/init/bind_user_directories.conf
Contenu:
description "runs mount --bind command for certain pre-defined directories for a specific user"
start on filesystem and net-device-up IFACE!=lo
stop on runlevel [!023456]
console output
respawn
respawn limit 10 5
exec /usr/local/sbin/bind_user_directories.sh start
Si cela fonctionne pour vous, faites-le moi savoir. Vous pouvez vérifier les messages du journal système après la connexion. (Je ne l'ai pas encore testé et je n'ai jamais rien implémenté comme ça auparavant.) Si vous améliorez la solution, veuillez partager votre solution finale ici. Merci.
/etc/profile
ou~/.profile
parce que l'exécution de code dans ces scripts est effectuée par le shell de l'utilisateur et est soumise au contrôle de l'utilisateur, alors que si vous ne voulez pas que l'utilisateur ait le pouvoir exécuter des programmes commeroot
eux-mêmes, alors cela devra être fait par un service en cours d'exécution externe aux processus de l'utilisateur. ... Cela pourrait aider si vous pouviez nous dire le but du script que vous souhaitez exécuter.