Jak mogę utworzyć użytkownika z dostępem tylko do odczytu do wszystkich plików? (tj. root bez uprawnień do pisania)

9

Aby utworzyć kopię zapasową mojego serwera, chciałbym uzyskać do niego zdalny dostęp poprzez SSH. Aby zminimalizować wszelkie ryzyko, użytkownik chce użytkownika, który ma tylko dostęp do odczytu, ale do wszystkich plików, tak jak root. Nie powinien jednak mieć żadnych praw do zapisu.

Jakieś pomysły, jak to osiągnąć?

Mononofu
źródło

Odpowiedzi:

7

Czy mogę zaproponować inną metodę rozwiązania problemu, która jest mniej intensywna w utrzymaniu.

Możesz tworzyć klucze ssh, które mają ograniczony dostęp do określonych programów. Nie lubię przyznawać rootowi nieograniczonego dostępu, ale czasami trzeba włączyć pewne polecenia, aby były uruchamiane zdalnie. Za pomocą klawiszy ssh można uruchomić program do tworzenia kopii zapasowych za pomocą komendy ssh.

Sprawdź sekcję „AUTHORIZED_KEYS FILE FORMAT” na stronie sshd man (zakładam, że używasz OpenSSH).

http://man.openbsd.org/OpenBSD-current/man8/sshd.8

Darren Hall
źródło
1
Podoba mi się ten pomysł. Po prostu ciągnięcie pliki przez rsync wszystkie z tych no-* -opcje zgodnie z opisem w mężczyzna powinien być bezpieczny. W szczególności no-pty w połączeniu z z to dobry początek, aby zwiększyć bezpieczeństwo. Przykład: from="the_pulling_hostname_or_IP",no-pty,...
user569825
1

Można to osiągnąć za pomocą list ACL. Nadal potrzebujesz skryptu działającego jako root, który zmienia uprawnienia każdego pliku. Zobacz strony podręcznika ACL, setfacl i getfacl, jeśli jesteś zainteresowany.

Kim
źródło
1

Istnieje inny sposób tworzenia tego bez użycia list ACL. Ale musisz tu ćwiczyć ostrożnie. Najpierw utwórz grupę, na przykład o nazwie roroot (root tylko do odczytu). Następnie zastosuj ten identyfikator grupy do wszystkich katalogów. Ustaw uprawnienia dla bitów grupowych na r-- lub 400 ósemkowe, a następnie możesz utworzyć konto użytkownika tak jak zwykły użytkownik, na przykład rorootusr, z następnym ustawieniem identyfikatora na cokolwiek, co jest w systemie członek grupy roroot tylko , nie sprawiaj, aby była częścią koła, kosza itp., w zależności od tego, jakie są twoje grupy na instalacji. Następny kawałek będzie niezgrabny. Otwórz plik / etc / passwd, używając vim / nano / emacs / joe / cokolwiek edytora, który zatka twoją łódź, i poszukaj identyfikatora, który właśnie utworzyłeś, tj. rorootusr, plik passwd będzie wyglądał następująco

root:x:0:0::/root:/bin/sh

Czytanie od lewej do prawej rozdzielone dwukropkami masz nazwę użytkownika, hasło (zaszyfrowane + shadowed), identyfikator użytkownika, identyfikator grupy, komentarz, katalog domowy i powłokę. Z podanego powyżej przykładu

rorootusr:x:512:450:Root User RO:/home/rorootusr:/bin/bash

To trzecie pole (512), które zmienisz na 0. 450 będzie identyfikatorem grupy dla roroot. Zapisz sesję edycji i gotowe. Teraz rorootusr będzie miał dostęp do roota, ale jest wyłącznie członkiem grupy roroot i ma dostęp tylko do systemu.

Mam nadzieję że to pomoże, Z poważaniem, Tomek.

t0mm13b
źródło