Fórumok
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ások
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:
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:
Szerintem erre olvass
https://unix.stackexchange.com/questions/50665/what-is-the-difference-b…
https://www.gnu.org/software/bash/manual/html_node/Bash-Startup-Files.h…
> "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"