Każda inna odpowiedź tutaj wymaga dostępu do konta root, pozwala na dowolną do konta użytkownikowi na tym samym komputerze na skopiowanie pliku lub wymaga udostępniania hasła. Oto metoda, która nie:
Poproś USER2
(nazwijmy go Bob) uruchomienie następujących poleceń (możesz zastąpić /tmp
dowolnym katalogiem, do którego obaj użytkownicy mają uprawnienia do zapisu, ale /tmp
jest idealny, ponieważ domyślnie jest lepki, co uniemożliwia złośliwemu użytkownikowi zniszczenie tego procesu. autorstwa Boba, który jest czytelny na całym świecie, działa również):
[bob@computer ~]$ touch /tmp/test.txt
[bob@computer ~]$ chmod 622 /tmp/test.txt
Spowoduje to utworzenie pliku, który można zapisywać na całym świecie, ale nie można go odczytać.
Następnie USER1
uruchom (nazwijmy ją Alice) (jeśli jesteś paranoikiem, Alice może najpierw sprawdzić uprawnienia, aby upewnić się, że plik jest własnością Boba):
[alice@computer ~]$ dd if="$HOME/test.txt" of=/tmp/test.txt
To nadpisuje zawartość /tmp/test.txt
. Jeśli chcesz sprawdzić integralność pliku, Alice powinna również wygenerować skrót pliku. Na przykład:
[alice@computer ~]$ openssl sha1 < "$HOME/test.txt" > /tmp/test.txt.sha1
Możesz zamiast tego podpisać cyfrowo plik lub dowolną inną metodą gwarantującą jego integralność.
I w końcu Bob przenosi plik i przejmuje na niego własność:
[bob@computer ~]$ mv /tmp/test.txt "$HOME"
[bob@computer ~]$ chmod 600 "$HOME/test.txt"
A Bob może sprawdzić uczciwość, jeśli chce. Jeśli tak, powinien sprawdzić, czy tylko Alice może pisać /tmp/test.txt
.
[bob@computer ~]$ diff /tmp/test/txt.sha1 <(openssl sha1 < "$HOME/test.txt")
Jeśli plik został skopiowany poprawnie, nie powinien on wyświetlać danych wyjściowych.