Копирование файлов от одного пользователя к другому на одном компьютере

Как скопируйте любые файлы или каталоги от одного пользователя к другому пользователю на том же компьютере через терминал?

Предположим, что существует один файл test.txt в домашнем каталоге пользователя 1. Мне нужно скопировать этот файл в домашний каталог USER2 на моем компьютере. Как я могу это сделать через терминал?

Предполагая, что у вас есть sudo привилегии будет выполнять следующая команда.

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

Скопирует файл с USER1 на USER2, а затем изменит владельца копии в /home/USER2 на USER2

Если у вас нет sudo привилегии, то два пользователя должны будут убедиться, что у вас есть права на чтение в каталоге USER1 и доступ на запись в каталоге USER2. Если у вас есть эти права доступа, вы можете ввести команду:

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

Это приведет к копированию соответствующего файла, но ПОЛЬЗОВАТЕЛЬ2 может не иметь возможности управлять файлом, пока у него не будут соответствующие разрешения.

Как ПОЛЬЗОВАТЕЛЬ1:

cp [filename] /tmpchmod 777 /tmp/[filename]

Как ПОЛЬЗОВАТЕЛЬ2:

cp /tmp/[filename] .

Как ПОЛЬЗОВАТЕЛЬ1:

rm /tmp/[filename]

если у вас нет привилегий sudo, но вы можете войти в систему с двумя пользователями, вы можете использовать scp с localhost :

scp file1 user2@localhost:/home/user2/

Предположим, у вас либо не установлен ssh, либо вы не можете этого сделать и не хотите делиться ключами / секретами.

Предположим, пользователь1 находится в group1, а пользователь2 - в group2, и оба пользователя user1 != user2 и group1 != group2.

Создайте общую группу group3s.

addgrp group3

Добавьте как пользователя 1, так и пользователя 2 в group3s.

Создайте каталог во взаимно доступном месте, где один пользователь владеет, но имеет групповое владение group3s.

#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

Но, предположим, вы не можете создать новую общую группу и поместить обоих пользователей в эту группу?

Создайте каталог и предоставьте ему 770 разрешений,

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

Затем, как root / admin, измените владельца группы на группу другого пользователя,

sudo bashchgrp group2 $place/shared && chmod g+s $place/shared

Команда chmod g+s устанавливает бит setgid таким образом, чтобы для файлов, помещенных в каталог, было установлено групповое право собственности на group2.

Любой другой ответ здесь требует root-доступа, позволяет какой-нибудь пользователь на том же компьютере, чтобы скопировать файл, или требуется общий доступ к паролю. Вот метод, который не:

Иметь USER2 (давайте назовем его Бобом) выполните следующие команды (вы можете заменить /tmp с любым каталогом, в который оба пользователя имеют права на запись, но /tmp идеально, потому что по умолчанию он является липким, что не позволяет злоумышленнику нарушить этот процесс. Каталог, принадлежащий Бобу, который доступен для чтения во всем мире, также работает):

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

Это создает файл, доступный для записи во всем мире, но недоступный для чтения.

Затем имейте USER1 (давайте назовем ее Алисой) запустите (если вы параноик, Алиса может сначала проверить права доступа, чтобы убедиться, что файл принадлежит Бобу):

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

Это перезаписывает содержимое /tmp/test.txt. Если вы хотите проверить целостность файла, Alice также должна сгенерировать хэш файла. Например:

[alice@computer ~]$ openssl sha1 < "$HOME/test.txt" > /tmp/test.txt.sha1

Вместо этого вы можете подписать файл цифровой подписью или любым другим способом гарантировать его целостность.

И, наконец, Боб перемещает файл и становится его владельцем:

[bob@computer ~]$ mv /tmp/test.txt "$HOME" [bob@computer ~]$ chmod 600 "$HOME/test.txt"

И Боб может проверить целостность, если захочет. Если это так, он должен проверить, может ли только Алиса писать в /tmp/test.txt.

[bob@computer ~]$ diff /tmp/test/txt.sha1 <(openssl sha1 < "$HOME/test.txt")

Если файл был скопирован правильно, это не должно отображать никаких выходных данных.

Прежде чем перейти к копированию одного пользователя другому, вам нужно войти в систему как пользователь su, а затем использовать команду cp

sudo cp /home/shyam/Desktop/sparkhadoop_2.11-1.0.jar /home/hadoop/Desktop