Fórumok
Egy Debian7 rendszeren frissítéskor az 'initramfs-tools
' lefutásakor az alábbi figyelmeztető üzenetet kapom:
"W: TMPDIR is mounted noexec, will not cache run scripts."
- A "
/tmp
" és a "/var
" külön kötetekként vannak csatolva "nodev,nosuid
" opciókkal, de a "noexec
" nincs beállítva. - A "
/var/cache
" és a "/var/tmp
" is külön kötetekként vannak csatolva "nodev,nosuid,noexec
" opciókkal.
Az 'initramfs-tools
'-nak a "/var/tmp
" kötet "noexec
" csatolási opciójával van problémája?
A "/var/tmp
" kötet esetén töröljem a "noexec
" csatolási opciót?
Hozzászólások
igen, igen vagy allitsd at TMPDIR-t masra.
--
|8]
Esetleg megoldás lehet még az apt patkolása is
/etc/apt/apt.conf-ba bele
DPkg::Pre-Invoke{"mount -o remount,exec /ami/problemas";};
DPkg::Post-Invoke {"mount -o remount,rw,noexec,nosuid,nodev /ami/problemas";};
Egyébként ezt a patch-et nézegetve nagyon úgy tűnik, hogy a DESTDIR a /var/tmp/mkinitramfs_XXXXXX lesz, hacsak nincs másra beállítva a TMPDIR változó..
Masszív -1000...
Globális, rendszerszintű mountokat ne kúrogasson a háttérben semmilyen script mellékhatás gyanánt. Aztán csodálkozik majd az egyszeri felhasználó, hogy miért nem fut az a script, ami tegnap meg pont futott. Hát mert a rendszergazda éppen apt-t futtatott tegnap...
Attól függ. Egy user-es környezetben (mondjuk otthoni NAS, HTPC vagy épp "csak" PC) simán lehet ez jó megoldás.
Az általad említett probléma pedig előfordulhat, de elég kicsi az esélye, mert éles vason átlag heti 1 percnél többet nem nagyon fut az apt. És elég életszerűtlen az is, hogy a "saját script" egy noexec /var/tmp rendszeren a /var/tmp alatt létrehozott akármit akarná futtatni.
egy TMPDIR exportalas akkor is sokkal lightosabb, es egyszerubb megoldas. :)
--
|8]
Igen, kivéve ha azt máshol és másra használod, mondjuk egy saját script-ben :)
Amúgy nem akarok én semmit erőltetni, csak megmutattam, hogy ilyet is lehet. Hátha valakinek egyszer hasznos lesz valamire :)
Szerencsere trivialisan lehet per-application kornyezeti valtozot beallitani ;)
--
|8]
Hogyan?
melle
Bugreport. A TMPDIR a /tmp kene, hogy legyen defaultbol, a /var/tmp a rebootot tulelo temp filenak a helye. A noexec regebben meg semmit nem ert dynamic executable-ekre, /lib/ld-linux.so.2 /tmp/executable siman kikerulte. Mondjuk ezt az NX megoldhatta, azota nem probaltam.
me@mypc:~$ env | grep TMP
me@mypc:~$
És hogy az apt miért ezt állítja be magának, nos az az ő dolga.
Nálam amúgy a /tmp és a /var/tmp is tmpfs :)
És az apt meg valszeg nem akar semmit megkerülni, hanem "normálisan" akarja lefuttatni a saját script-jét.
Nálam is hasonlóan üres a kimenet:
# env | grep TMP
#
Mi annak a legszebb (szabványos) módja, hogy a TMPDIR értéke a "/tmp" legyen (globálisan), és ez az értékadás meg is maradjon?
Nincs neki szabványos módja.
Attól függően, hogy mi indítja be azt a valamit, több különböző helyen lehet neki environment változókat beállítani.
Úgymint:
- interaktív hálózatos loginok esetén az adott shell login default scriptje (Bourne-jellegű shelleknél /etc/profile, C-jellegű shelleknél /etc/csh.login vagy /etc/.login),
- nem interaktív hálózatos loginok esetén (scriptezett ssh pl.) a hálózatos logint adó daemon konfig fájljában, ha van ilyen opció egyáltalán (ssh-nál /etc/sshd/sshd_config)
- X login esetén a globális Xsession fájl (pl. /etc/X11/Xsession)
- cronból futtatott cuccoknál a cron entry vagy az onnan indított script
- rc scriptek, vagy egyéb init-alternatíva esetén az indított script, vagy az init-alternatíva által biztosított ilyen globális tekerentyű (ha van neki ilyenje egyáltalán)
- ha van PAM, és be van konfigurálva a pam_env.so, akkor a PAM-ot használó sessionökre ezzel a modullal is lehet globális beállításokat rátolni.