Radzę, abyś po prostu używał konta root. Jeśli skonfigurujesz to w ten sposób:
- Skonfiguruj swój
sshd_configkomputer docelowy na PermitRootLogin without-password.
- Użyj
ssh-keygenna komputerze, który pobiera kopię zapasową, aby utworzyć klucz prywatny SSH (tylko jeśli nie masz jeszcze klucza SSH). Nie ustawiaj hasła. Google samouczek, jeśli potrzebujesz szczegółowych informacji na ten temat, powinno być dużo.
- Dołącz zawartość
/root/.ssh/id_rsa.pubkomputera kopii zapasowej do /root/.ssh/authorized_keyskomputera docelowego.
- Teraz twoja maszyna kopii zapasowej ma dostęp do roota na maszynie docelowej, bez konieczności używania uwierzytelniania hasłem.
wynikowa konfiguracja powinna być całkiem bezpieczna.
sudo, szczególnie w połączeniu z NOPASSWDzaleceniami zawartymi w komentarzach, nie ma żadnych korzyści w zakresie bezpieczeństwa, niż samo używanie konta root. Na przykład ta sugestia:
dodać następujące wpisy do /etc/sudoerspliku:rsyncuser ALL= NOPASSWD:/usr/bin/rsync
zasadniczo i tak daje rsyncuseruprawnienia roota. Ty pytasz:
@MartinvonWittich Łatwo uzyskać pełną powłokę roota, ponieważ jest rsyncwykonywana za pomocą sudo? Przejdź [m] e [przez] to proszę.
Cóż, proste. Przy zalecanej konfiguracji rsyncusermoże teraz działać rsyncjako root, nawet bez pytania o hasło. rsyncjest bardzo potężnym narzędziem do manipulowania plikami, więc teraz rsyncuserma bardzo potężne narzędzie do manipulowania plikami z uprawnieniami administratora. Znalezienie sposobu na wykorzystanie tego zajęło mi tylko kilka minut (przetestowane na Ubuntu 13.04, wymaga dash, bashnie działa):
martin@martin ~ % sudo rsync --perms --chmod u+s /bin/dash /bin/rootdash
martin@martin ~ % rootdash
# whoami
root
# touch /etc/evil
# tail -n1 /etc/shadow
dnsmasq:*:15942:0:99999:7:::
Jak widać, stworzyłem sobie powłokę roota; whoamiidentyfikuje moje konto jako root, mogę tworzyć pliki /etci czytać /etc/shadow. Moim wyczynem było ustawienie bitu setuid na plikudash binarnym; powoduje, że Linux zawsze uruchamia ten plik binarny z uprawnieniami właściciela, w tym przypadku root.
Posiadanie prawdziwego roota nie jest [zalecane] z dobrych powodów. - redanimalwar 15 godzin temu
Nie, niezdarne obejście konta roota w sytuacjach, w których absolutnie właściwe jest jego używanie, nie ma dobrych powodów. Jest to kolejna forma programowania kultowego ładunku - tak naprawdę nie rozumiesz koncepcji sudo kontra root, po prostu ślepo stosujesz przekonanie, że „root jest zły, sudo jest dobry”, ponieważ gdzieś to przeczytałeś.
Z jednej strony zdarzają się sytuacje, w których sudozdecydowanie jest odpowiednie narzędzie do pracy. Na przykład, gdy pracujesz interaktywnie na graficznym pulpicie Linuxa, powiedzmy Ubuntu, wtedy korzystanie z niego sudojest w porządku w tych rzadkich przypadkach, w których czasami potrzebujesz dostępu do roota. Ubuntu celowo ma wyłączone konto root i zmusza cię do sudodomyślnego używania , aby uniemożliwić użytkownikom korzystanie z konta root tylko po to, aby się zalogować. Gdy użytkownik chce tylko użyć np. Przeglądarki internetowej, zalogowanie się jako root byłoby niebezpieczne. , a zatem brak domyślnego konta root uniemożliwia głupcom to zrobić.
Z drugiej strony istnieją sytuacje takie jak Twoja, w których zautomatyzowany skrypt wymaga uprawnień roota do czegoś, na przykład do wykonania kopii zapasowej. Teraz korzystanie sudoz obejścia konta root jest nie tylko bezcelowe, ale także niebezpieczne: na pierwszy rzut oka rsyncuserwygląda jak zwykłe konto nieuprzywilejowane. Ale jak już wyjaśniłem, atakującemu bardzo łatwo byłoby uzyskać pełny dostęp do konta root, gdyby już uzyskał rsyncuserdostęp. Zasadniczo masz teraz dodatkowe konto root, które wcale nie wygląda jak konto root, co nie jest dobrą rzeczą.
rootkonta.sudo, szczególnie w połączeniu zNOPASSWDzaleceniami zawartymi w komentarzach, tak naprawdę nie poprawia bezpieczeństwa komputera.