Comment changer / tmp par défaut en / home / user / tmp


Réponses:


17

Je ne sais pas si l'applet java examinera réellement les variables d'environnement avant de commencer, mais ce que vous pouvez faire, éditez / etc / profile et ajoutez les lignes suivantes:

if [[ -O /home/$USER/tmp && -d /home/$USER/tmp ]]; then
        TMPDIR=/home/$USER/tmp
else
        # You may wish to remove this line, it is there in case
        # a user has put a file 'tmp' in there directory or a
        rm -rf /home/$USER/tmp 2> /dev/null
        mkdir -p /home/$USER/tmp
        TMPDIR=$(mktemp -d /home/$USER/tmp/XXXX)
fi

TMP=$TMPDIR
TEMP=$TMPDIR

export TMPDIR TMP TEMP

Pour en faire un véritable répertoire tmp (comme les fichiers disparaissent à la fin de la session, vous voudrez éditer le .bash_logout de l'utilisateur ainsi que le squelette .bash_logout (/etc/skel/.bash_logout) pour inclure les éléments suivants :

if [ -O $TMPDIR && -d $TMPDIR ]; then
        rm -rf $TMPDIR/*
fi

La partie de déconnexion est dangereuse, la variable n'est pas définie et vous êtes connecté en tant que root! Je n'ajouterais pas cela au compte root ou à toute personne membre du groupe Wheel! Procédez à votre propre prudence.


3
Je ne mettrais pas du tout le nettoyage dans .bash_logout - que se passe-t-il s'ils ouvrent deux sessions et se déconnectent d'une? Utilisez tmpwatch. :)
MikeyB

C'est une bien meilleure solution de nettoyage, merci d'avoir ajouté cela. :)
TrueDuality

NB: la tmpwatchcommande n'existe pas sur la version BSD (par exemple OSX) d'Unix, pour toute personne recherchant la portabilité. Mes boîtiers CentOS l'ont cependant. :)
Cometsong

8

Le fichier que vous recherchez est:

/etc/environment

Vous devez définir la variable TEMP comme:

TEMP=/home/user/tmp

2
Et mêmeexport TEMP=/home/user/tmp
Fedir RYKHTIK

@Fedir qui est dans le shell, oui.
cstamas

2

Si vous souhaitez /home/user/tmpêtre nettoyé au redémarrage, je vous suggère d'ajouter un @reboottravail au personnel de l'utilisateur crontab.


1

En C, j'utiliserais le tmpfile () pour un système posix, ce qui éviterait la collision. Je chercherais donc un appel Java similaire avant d'essayer de l'implémenter moi-même, si vous ne l'avez pas déjà fait.


Cela suppose qu'il est celui qui développe l'application
TrueDuality

TrueDuality: Ah, mon erreur
Kyle Brandt

1
Java a java.io.File.createTempFile. Maintenant, avec RNG sécurisé ajouté.
Tom Hawtin - tackline

1

Java utilise la propriété système java.io.tmpdirpour configurer le répertoire temporaire. Un JRE raisonnable définira cela sur une valeur sensible basée sur le système s'il n'est pas explicitement spécifié.


1

Pour moi, cela a fonctionné lorsque j'essayais d'installer un fichier jar à l'aide de java.

export _JAVA_OPTIONS="-Djava.io.tmpdir=/apps/prod/tmp"

J'utilise un Red Hat Linux. /apps/prod/tmpétant le nouveau dossier.


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.