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.

metalhead
źródło
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,
Opublikowane również na Serverfault . Nie rób tego
Gilles „SO- przestań być zły”
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).

Gilles „SO- przestań być zły”
źródło
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.

Peter
źródło
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

lzap
źródło