Mi a különbség root és root között?

 ( plt | 2018. szeptember 7., péntek - 9:50 )

Debian alatt fut egy Seafile, ami gyönyörűen teszi a dolgát, kivéve, hogy töredezik. Ez sem lenne baj, hisz van egy seafileCleanup.sh scriptje, ami szépen felszabadítja a helyet.
A scriptet root-ként futtatva rendben teszi is a dolgát.
Azonban, ha a crotab-ból futtatom root-ként, a következő hibaüzenetet adja:

This script must be run as root user! ()

A crontab sor így néz ki:
1 7 * * 6 root /opt/seafile/utils/seafileCleanup.sh

Hogyan kell úgy futtatnom időzítőből, mintha root-ként belépve indítottam volna el?

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Ez a sor a /etc/crontab -ban van, ugye?

Igen. Le is fut a script, mivel a logba bejegyzi, hogy nem root.

nézz be abba shellscriptbe, keress rá erre a hibaüzenetre és nézd meg, hogy hogyan ellenőrzi, hogy valóban root vagy-e. Tippre nem az id parancs kimenetét nézi, hanem pl. envvar-t néz, az meg ugye nincs beállítva ha cronból fut a job.

A $USER váltázó értékét vizsgálja a script.
Ezek szerint elég lenne így módosítanom a crontab bejegyzést?:

1 7 * * 6 root USER=root /opt/seafile/utils/seafileCleanup.sh

Hozz létre egy szkriptet:

#!/bin/sh
env > /valahol/valami/logfile

Rakd be a cron-ba, hogy lefusson, és lásd, milyen környezeti változókkal dolgozik a szkript.
Ezután láthatod, hogy a $USER értéke mi.

Majdnem. A parancs legyen inkább /usr/bin/env USER=root /opt/seafile/utils/seafileCleanup.sh

=====
tl;dr
Egy-két mondatban leírnátok, hogy lehet ellopni egy bitcoin-t?

így

Ha igen, akkor mehet a hibajegy az alkotónak, hogy mekkora nagy barom :-P

+1, lol

--
"dolgozni mar reg nem akarok" - HZuid_7086 'iddqd' zoli berserk mode-ba kapcsol

Nem akarok okoskodni, de lehet rövidre zárható lenne ha sudo su-val átlépnél a root user alá és egy crontab -e -vel abba a fájlba tennéd amit így megnyit. Az tuti root-ként fut.

Valoszinuleg nem ez lesz, hanem egy env var, esetleg hogy /bin/sh fut /bin/bash helyett

Ezt picit bővebben kifejtenéd? A crontab fájl elején adjam meg globálisan a USER változó értékét? És hol fut sh bahs helyett? A scriptben? Vagy a crontabban?
Sorry, nem értem pontosan, mire gondolsz.

USER = env var, de lehet epp az uid kell vagy valami mas, a lenyeg hogy rosszul van nezve, ahogy tobben megallapitottak

/bin/sh

/etc/crontab

SHELL=/bin/sh

ez szokott default lenni es itt

-SHELL=/bin/sh
+SHELL=/bin/bash

es ez meg nem biztos, hogy eleg

van ugyanis masik crontab is:

van a

$ su -c "crontab -e"
vagy
# crontab -e

itt is

SHELL=/bin/bash

Mivel nem a cron nyekergett, hanem a futtatott script, ezért annak a baromságát kell kikerülni. Korábban elhangzott, hogy a script nézi hibásan, hogy kinek a nevében fut.

=====
tl;dr
Egy-két mondatban leírnátok, hogy lehet ellopni egy bitcoin-t?

Az is megoldás lehet, ha a crontab elejére ezt teszed:

BASH_ENV=~/.bash_profile

> "Hogyan kell úgy futtatnom időzítőből, mintha root-ként belépve indítottam volna el?"

Tehát mintha bash-be írnád?
Szerintem így:
bash -c "parancsod"