web-dev-qa-db-fra.com

copier des fichiers d'un utilisateur à un autre sur une seule machine

Comment copier des fichiers ou des répertoires d'un utilisateur à un autre utilisateur de la même machine via un terminal?

Supposons qu'il y ait un fichier test.txt dans le répertoire personnel de USER1. J'ai besoin de copier ce fichier dans le répertoire personnel de USER2 sur ma machine. Comment puis-je le faire via un terminal?

20
nischalinn

En supposant que vous ayez Sudoprivilèges, la commande suivante fera l'affaire.

Sudo cp /home/USER1/FNAME /home/USER2/FNAME && Sudo chown USER2:USER2 /home/USER2/FNAME

Copiera le fichier de USER1 à USER2, puis changera le propriétaire de la copie dans/home/USER2 en USER2

Si vous ne disposez pas des privilèges Sudoname__, les deux utilisateurs devront s'assurer que vous disposez des autorisations de lecture sur le répertoire USER1 et d'un accès en écriture sur celui-ci. Si vous avez ces accès, vous pouvez entrer la commande:

cp /home/USER1/FNAME /home/USER2/FNAME

Cela copiera le fichier en question, mais USER2 ne pourra peut-être pas manipuler le fichier avant d’avoir les autorisations appropriées.

25
Charles Green

si vous ne possédez pas les privilèges Sudo mais que vous pouvez vous connecter avec les deux utilisateurs, vous pouvez utiliser scp avec localhost:

scp file1 user2@localhost:/home/user2/
6
loudstil

En tant qu'utilisateur1:

cp [filename] /tmp
chmod 777 /tmp/[filename]

En tant qu'utilisateur2:

cp /tmp/[filename] .

En tant qu'utilisateur1:

rm /tmp/[filename]
3
Ryan J McCall

Supposons que ssh n’est pas installé ou que vous ne pouvez pas ne pas vouloir partager des clés/secrets.

Supposons que utilisateur1 soit dans groupe1 et utilisateur2 dans groupe2 et que utilisateur1! = Utilisateur2 et groupe1! = Groupe2.

Créez un groupe partagé, group3s.

addgrp group3

Ajoutez à la fois utilisateur1 et utilisateur2 aux groupes3.

Créez un répertoire dans un endroit mutuellement accessible, où un utilisateur est propriétaire, mais a la propriété de groupe de groupes3.

#as user1,
mkdir $place/shared && chown user1.group3s $place/shared && chmod 770 $place/shared;
#as user1 or user2,
cp $file $place/shared && chgrp $place/shared/$file && chmod 660 $place/shared/$file

Mais supposons que vous ne puissiez pas créer le nouveau groupe partagé et placer les deux utilisateurs dans ce groupe?

Créez le répertoire et donnez-lui les autorisations 770,

mkdir $place/shared && chown user1.group1 $place/shared && chmod 770 $place/shared;

Ensuite, en tant que root/admin, changez la propriété du groupe en groupe de l’autre utilisateur,

Sudo bash
chgrp group2 $place/shared && chmod g+s $place/shared

La commande chmod g + s définit le bit setgid de sorte que la propriété du groupe des fichiers placés dans ce répertoire soit définie sur groupe2.

1
ChuckCottrill

Toute autre réponse ici nécessite un accès root, permet à tout utilisateur sur le même ordinateur de copier le fichier ou nécessite le partage du mot de passe. Voici une méthode qui ne le fait pas:

Demandez à USER2 (appelons-le Bob) d'exécuter les commandes suivantes (vous pouvez remplacer /tmp par tout répertoire dans lequel les deux utilisateurs sont autorisés à écrire, mais /tmp est idéal car, par défaut, il est persistant, ce qui empêche un utilisateur malveillant de nuire à ce processus. Un répertoire appartenant à Bob qui est lisible par tout le monde fonctionne également):

[bob@computer ~]$ touch /tmp/test.txt
[bob@computer ~]$ chmod 622 /tmp/test.txt

Cela crée un fichier qui est en écriture dans le monde entier, mais non lisible.

Ensuite, lancez USER1 (appelons-la Alice) (si vous êtes paranoïaque, Alice peut d'abord vérifier les autorisations pour s'assurer que le fichier appartient à Bob):

[alice@computer ~]$ dd if="$HOME/test.txt" of=/tmp/test.txt

Ceci é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 plutôt signer numériquement le fichier, ou toute autre méthode permettant de garantir son intégrité.

Et finalement, 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 tel est le cas, il doit vérifier que seule Alice peut écrire dans /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.

0
Chris