Кожна інша відповідь тут вимагає кореневого доступу, дозволяє будь-якому користувачеві на тому ж апараті копіювати файл або вимагає спільного використання пароля. Ось метод, який не виконує:
Попросіть 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@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")
Якщо файл було скопійовано правильно, це не повинно відображати вихід.