Как скопировать любые файлы или каталоги от одного пользователя другому пользователю на одном компьютере через терминал?
Предположим, что есть один файл test.txt в домашнем каталоге USER1. Мне нужно скопировать этот файл в домашний каталог USER2 на моем компьютере. Как я могу это сделать через терминал?
, если у вас нет привилегий sudo, но вы можете войти в систему с двумя пользователями, тогда вы можете использовать scp с localhost:
scp file1 user2@localhost:/home/user2/
Предположим, вы либо не имеете ssh, либо не можете делать, не хотите делиться ключами / секретами.
Предположим, что user1 находится в group1, а user2 - в группе2, и оба user1! = user2 и group1! = group2.
Создайте общую группу, group3s.
addgrp group3
Добавьте как user1, так и user2 в group3s.
Создайте каталог во взаимно доступное место, где один пользователь владеет, но имеет групповое владение группой3.
#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 bash
chgrp group2 $place/shared && chmod g+s $place/shared
Команда chmod g + s устанавливает бит setgid, чтобы файлы, помещенные в каталог, имели групповое право собственности на группу2.
Как USER1:
cp [filename] /tmp
chmod 777 /tmp/[filename]
Как USER2:
cp /tmp/[filename] .
Как USER1:
rm /tmp/[filename]
Каждый другой ответ здесь требует доступа root, позволяет любому пользователю на том же компьютере копировать файл или требуется совместное использование паролей. Вот метод, который не делает:
Имеем USER2 (назовем его Боб) запускаем следующие команды (вы можете заменить /tmp на любой каталог, для которого оба пользователя имеют права на запись, но [ f8] является идеальным, потому что по умолчанию он липкий, что предотвращает вредоносный пользователь от подрывного процесса. Также существует каталог, принадлежащий Бобу, который доступен для чтения по всему миру):
[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@computer ~]$ openssl sha1 < "$HOME/test.txt" > /tmp/test.txt.sha1
Вы можете вместо этого подписать цифровой файл или любой другой способ гарантировать его целостность.
И, наконец, Боб перемещает файл и берет его на себя: [ ! d7]
[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