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 rootużytkownika - należy zachować ostrożność.
touch test && chattr +i testto robi , generuje błąd; chattr: Operation not permitted while setting flags on test. Potrzebujesz sudotego. Ponadto: nadal można usunąć plik: sudo chattr -i test && rm testdziała.
Nie, to nie jest możliwe. Usunięcie pliku przez zwykłych użytkowników jest niemożliwe.
Musisz sudouniemożliwić użytkownikom usuwanie plików. Twój administrator będzie zawsze mógł usunąć plik.
sudo chattr +i testmoże zapobiec usunięciu, ale wymaga sudo. Prosty sudo chattr -i testumoż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, sudojeś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-filei /a/bnikt nie może go zapisać, ale każdy ma dostęp do zapisu /a, wówczas może zmienić nazwę /a/bna coś innego i odtworzyć własne /a/bi utworzyć /a/b/the-filetam własne .