Eigen init script als andere user

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • smeerbartje
  • Registratie: September 2006
  • Laatst online: 15:55
Ik heb bittorrent sync draaien op m'n Ubuntu server, zie dit topic. Nu dacht ik: laat ik eens een init script maken die tijdens het opstarten de btsync daemon start. Dit lukt aardig, "service btsync start/stop/status" werken prima. Nu dus het punt om met het commando "update-rc.d btsync defaults" de daemon tijdens runtime te laten starten.

Echter hier mijn vraag: ik wil deze niet laten starten onder "root", maar onder mijn eigen user. Hoe doe ik dit op een nette manier?

Bash:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#! /bin/sh
# /etc/init.d/btsync
#

# Carry out specific functions when asked to by the system
case "$1" in
start)
    /smb/btsync/btsync --config /smb/btsync/btsync.conf
    ;;
stop)
    killall btsync
    ;;
status)
    status=$(pidof btsync)
    if [ "$status" != "" ]; then
      echo "btsync running with pid: $status"
    else
      echo "btsync not running"
    fi
    ;;
*)
    echo "Usage: /etc/init.d/btsync {start|stop|status}"
    exit 1
    ;;
esac

exit 0

Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 14:37

Hero of Time

Moderator LNX

There is only one Legend

Heb je al in andere init scripts gekeken hoe dit wordt geregeld? Standaard doet root het uitvoeren, maar schakelt naar de betreffende gebruiker als dit wordt opgegeven.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • smeerbartje
  • Registratie: September 2006
  • Laatst online: 15:55
Hero of Time schreef op vrijdag 13 december 2013 @ 14:05:
Heb je al in andere init scripts gekeken hoe dit wordt geregeld? Standaard doet root het uitvoeren, maar schakelt naar de betreffende gebruiker als dit wordt opgegeven.
Aha, thanks. Dit schakelen naar een andere usr gebeurt dus in het init script? Ik ga ff zoeken... verder nog opmerkingen over m'n script?

Acties:
  • 0 Henk 'm!

  • Kluus
  • Registratie: Oktober 2003
  • Laatst online: 14:46

Kluus

Gang is alles

Omdat je script als root wordt gestart kan je natuurlijk vanuit je script gewoon met su commando's als een andere user uitvoeren.. Misschien is dit ook wat Hero of Time bedoeld. Je krijgt dan gewoon zoiets:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#! /bin/sh
# /etc/init.d/btsync
#
btsyncuser=<vul hier de username in>

# Carry out specific functions when asked to by the system
case "$1" in
start)
    su - $btsyncuser -c "/smb/btsync/btsync --config /smb/btsync/btsync.conf"
    ;;
stop)
    killall btsync
    ;;
status)
    status=$(pidof btsync)
    if [ "$status" != "" ]; then
      echo "btsync running with pid: $status"
    else
      echo "btsync not running"
    fi
    ;;
*)
    echo "Usage: /etc/init.d/btsync {start|stop|status}"
    exit 1
    ;;
esac

exit 0

[ Voor 10% gewijzigd door Kluus op 13-12-2013 15:20 ]


Acties:
  • 0 Henk 'm!

  • smeerbartje
  • Registratie: September 2006
  • Laatst online: 15:55
Thanks allebei, het is gelukt.

Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 14:37

Hero of Time

Moderator LNX

There is only one Legend

Als je het init script van apache of een willekeurige FTP server bekijkt zie je een andere optie die gegeven wordt via start-stop-daemon meen ik. Daar wordt een user in opgegeven en onder water doet die dan netjes de privileges droppen naar die gebruiker. Met su kan dat uiteraard ook.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • smeerbartje
  • Registratie: September 2006
  • Laatst online: 15:55
Inderdaad, ik heb het nu opgelost met start-stop-daemon; werkt goed.
Pagina: 1