Ogranicz dostęp do plików tylko do dołączania


12

Mam katalog z plikami dziennika i umieszczam w nich dzienniki ze skryptu uruchomionego przez użytkowników. W tym przypadku logowanie za pomocą syslog nie jest możliwe. (rsync inny niż demon)

Chcę, aby użytkownicy mieli tylko uprawnienia do zapisu w plikach dziennika. Problem polega na tym, że uprawnienia do zapisu muszą być dodatkowo ograniczone, aby użytkownicy (skrypt) mogli dołączać tylko do tych plików. Podstawowym systemem plików jest XFS.

Następujące nie działa:

# chattr +a test.log
chattr: Inappropriate ioctl for device while reading flags on test.log

Czy istnieje na to inne rozwiązanie? Dziękuję za twoje wskazówki.


Czy jesteś pewien, że to XFS? chattr +adziała tutaj dla mnie (jądro 3.2). Pamiętaj, że aby korzystać, musisz być rootem chattr( $monit sugeruje nieużytkownika), ale pojawiłby się inny komunikat o błędzie, gdyby chattr +abył obsługiwany i nie byłeś rootem.
Stéphane Chazelas,


Jakie są opcje montowania na partycji? Może przechowywać go za pomocą xattr, co może wymagać odpowiedniej opcji montowania? (Dokumentacja dla XFS również nie wspomina o tym zbyt wiele ...)
Gert van den Berg

To zamknęło się na SF, więc zostawiam to otwarte tutaj
Michael Mrozek

Odpowiedzi:


8

chattrNarzędzie jest napisane dla ext2 / ext3 / ext4 systemy plików. Emituje ioctls na plikach, więc to od systemu plików zależy, co z nimi zrobić. Sterownik XFS w nowszych jądrach Linuksa obsługuje ten sam FS_IOC_SETFLAGSioctl co ext [234] do kontrolowania flag takich jak tylko append, ale być może używasz starszego jądra tam, gdzie go nie ma (CentOS?). Spróbuj xfs_iozamiast tego użyć narzędzia:

echo chattr +a | xfs_io test.log

Zauważ, że w przypadku XFS, jak w przypadku ext [234], tylko root może zmienić flagę „tylko dołączanie” (a dokładniej potrzebujesz tej CAP_LINUX_IMMUTABLEmożliwości).


1

Czy masz na to uprawnienia? Od man 1 chattr:

Plik z ustawionym atrybutem `a 'może być otwarty tylko w trybie dołączania do zapisu. Tylko superużytkownik lub proces posiadający zdolność CAP_LINUX_IMMUTABLE może ustawić lub usunąć ten atrybut.


0

Alternatywnie możesz osiągnąć to samo za pomocą SELinux , są szanse, że jest włączony i działa, jeśli używasz dystrybucji zgodnej z Red Hat. Działa to na każdym systemie plików, SELinux blokuje procesom wykonywanie niedozwolonych operacji.

Niestety, musisz napisać politykę dla swojej aplikacji, aby umożliwić dostęp do wszystkich zasobów systemowych, z wyjątkiem dołączania do określonych plików. Może to być trudne, jeśli zrobisz to po raz pierwszy, ale ma to zaletę - dodaną warstwę bezpieczeństwa.

Mam przykład, jak napisać regułę pliku tylko do dołączania w tym wykładzie: https://www.youtube.com/watch?v=zQcYXJkwTns

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.