Любой другой ответ здесь требует 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")
Если файл был скопирован правильно, это не должно отображать никаких выходных данных.