Toutes les autres réponses ici nécessitent un accès root, permettent à n'importe quel utilisateur sur la même machine de copier le fichier ou nécessitent un partage de mot de passe. Voici une méthode qui ne fonctionne pas:
Demandez USER2
(appelons-le Bob) d'exécuter les commandes suivantes (vous pouvez remplacer /tmp
par n'importe quel répertoire sur lequel les deux utilisateurs sont autorisés à écrire, mais /tmp
est idéal car par défaut, il est collant, ce qui empêche un utilisateur malveillant de renverser ce processus. Un répertoire appartenant à par Bob qui est lisible dans le monde fonctionne également):
[bob@computer ~]$ touch /tmp/test.txt
[bob@computer ~]$ chmod 622 /tmp/test.txt
Cela crée un fichier accessible en écriture, mais non lisible.
Ensuite, USER1
(appelons-la Alice) exécuté (si vous êtes paranoïaque, Alice peut d'abord vérifier les autorisations pour vous assurer que le fichier appartient à Bob):
[alice@computer ~]$ dd if="$HOME/test.txt" of=/tmp/test.txt
Cela écrase le contenu de /tmp/test.txt
. Si vous souhaitez vérifier l'intégrité du fichier, Alice doit également générer un hachage du fichier. Par exemple:
[alice@computer ~]$ openssl sha1 < "$HOME/test.txt" > /tmp/test.txt.sha1
Vous pouvez à la place signer numériquement le fichier ou toute autre méthode pour garantir son intégrité.
Et enfin, Bob déplace le fichier et en prend possession:
[bob@computer ~]$ mv /tmp/test.txt "$HOME"
[bob@computer ~]$ chmod 600 "$HOME/test.txt"
Et Bob peut vérifier l'intégrité s'il le souhaite. Si c'est le cas, il devrait vérifier pour s'assurer que seule Alice peut écrire /tmp/test.txt
.
[bob@computer ~]$ diff /tmp/test/txt.sha1 <(openssl sha1 < "$HOME/test.txt")
Si le fichier a été copié correctement, cela ne devrait afficher aucune sortie.