Najlepiej bez używania sudo?
Najlepiej bez używania sudo?
Odpowiedzi:
Próbować:
chattr +i filename
W ten sposób plik będzie niemożliwy do usunięcia nawet przez root
użytkownika - należy zachować ostrożność.
touch test && chattr +i test
to robi , generuje błąd; chattr: Operation not permitted while setting flags on test
. Potrzebujesz sudo
tego. Ponadto: nadal można usunąć plik: sudo chattr -i test && rm test
działa.
Nie, to nie jest możliwe. Usunięcie pliku przez zwykłych użytkowników jest niemożliwe.
Musisz sudo
uniemożliwić użytkownikom usuwanie plików. Twój administrator będzie zawsze mógł usunąć plik.
sudo chattr +i test
może zapobiec usunięciu, ale wymaga sudo
. Prosty sudo chattr -i test
umożliwia usunięcie pliku. Nikt inny niż administrator nie może korzystać chattr
.
I ... po prostu ponowne uruchomienie i przejście w tryb ratunkowy pozwoli tej osobie na usunięcie tego pliku. Byłoby to zagrożenie bezpieczeństwa, gdyby istniała metoda, która nigdy nie byłaby w stanie usunąć pliku.
To trochę prymitywne, ale jest blisko - jeśli usuniesz dostęp do zapisu w katalogu, plików w nim nie będzie można usunąć. I nie wymaga, sudo
jeśli jesteś właścicielem:
=^_^= izkata@izein:~$ mkdir test
=^_^= izkata@izein:~$ touch test/delme
=^_^= izkata@izein:~$ chmod a-w test
=^_^= izkata@izein:~$ echo 'Hello' > test/delme
=^_^= izkata@izein:~$ cat test/delme
Hello
=^_^= izkata@izein:~$ rm test/delme
rm: cannot remove `test/delme': Permission denied
Możesz więc ustawić uprawnienia do samego pliku, jak chcesz.
Ponadto, jak stwierdził @Rinzwind, jest na pewno wiele sposobów na obejście tego.
Aby usunąć plik, musisz mieć uprawnienia do zapisu we wszystkich katalogach, z którymi plik jest powiązany. Aby odłączyć go od jednego katalogu, musisz mieć uprawnienia do zapisu w tym katalogu.
Tak długo, jak dasz uprawnienia do zapisu (lub nawet prawo własności) do pliku, ale nie do katalogu lub katalogów, z którymi plik jest powiązany, plik ten nie może zostać usunięty.
Najlepszym sposobem na osiągnięcie tego byłoby połączenie tego pliku z katalogiem, który jest własnością roota i który nie może być zapisany przez nikogo. Zamiast tego możesz uczynić go własnością, co oznaczałoby, że ty i root moglibyście go usunąć.
Pozwoliłoby to innym użytkownikom połączyć ten plik z innymi katalogami i odłączyć go od tego momentu, ale nadal nie byliby w stanie usunąć pliku, ponieważ mogliby odłączyć go od twojego katalogu.
Zauważ, że aby to w pełni działało, należy kontrolować uprawnienia do zapisu każdego komponentu ścieżki do pliku. Ponieważ na przykład, jeśli plik jest /a/b/the-file
i /a/b
nikt nie może go zapisać, ale każdy ma dostęp do zapisu /a
, wówczas może zmienić nazwę /a/b
na coś innego i odtworzyć własne /a/b
i utworzyć /a/b/the-file
tam własne .