nie można uzyskać dostępu do / dev / null: Odmowa uprawnień, chociaż crw-rw-rw- 1 root root 1, 3 21 września 12:05 / dev / null

11

Na postgres użytkownika:

$ ls -l /dev/null
ls: cannot access /dev/null: Permission denied

Uprawnienia użytkownika root są poprawne:

# ls -l /dev/null
crw-rw-rw- 1 root root 1, 3 Sep 21 12:05 /dev/null

Próbowałem go odtworzyć:

# rm /dev/null && mknod -m 0666 /dev/null c 1 3

Ale wynik jest taki sam. Jestem na VPS z debian 7 i jądrem 2.6.32 na x86_64

lalebarde
źródło

Odpowiedzi:

18

Problem pochodzi z uprawnień do / dev:

# ls -ld /dev
drwx------ 3 root root 4096 Sep 21 12:12 /dev

Tak więc / dev nie był dostępny dla użytkowników.

# chmod a+x /dev
# chmod a+r /dev

Rozwiązać problem.

lalebarde
źródło
Chcę wiedzieć, dlaczego miał te uprawnienia. Możesz ponownie zainstalować. Wszystko w / dev jest zarządzane przez jądro i dziwne, że ma złe uprawnienia.
cripto
nie, wszystko w / dev nie jest „zarządzane przez jądro”.
tlund
@tlund proszę przejrzeć swoją ulubioną książkę o jądrze. „Katalog / dev odzwierciedla aktualny stan jądra” doc.opensuse.org/products/draft/SLES/SLES-admin_sd_draft/…
cripto
@ user1048138: Chciałbym też wiedzieć. Zacząłem od automatycznej konfiguracji Debiana 7 od mojego dostawcy VPS. Następnie zaktualizowałem, zaktualizowałem, użyłem tylko apt-get. Plus jeden pakiet „ręka” z wget some_domain / some_package.deb ; dpkg -i some_package.deb; apt-get -f install. W pewnym momencie zmieniono / dev / null na standardowy plik i zmieniono uprawnienia / dev. Nie mogę powiedzieć więcej.
lalebarde
1

Miałem podobny problem i przyjechałem tutaj, szukając objawów, ale rozwiązanie nie pasowało do mojego przypadku. Chciałbym więc dodać kolejny możliwy powód, nawet jeśli nie pasuje dokładnie do OP.

W moim specjalnym przypadku użyłem proot (miły chroot obwoluta). Ale uprawnienia były poprawne /dev/null i /dev samo.

Tak się złożyło, że to góra chroot katalog, który zrobiłem przez thunar jako zwykły użytkownik. W tym przypadku mount nie miał poprawnych uprawnień.

Nie możesz tego znaleźć, ponieważ nie widzisz tych uprawnień, tylko patrząc na pliki.

Ogólną ścieżką rozwiązania byłoby rozpoczęcie sprawdzania warunków w lokalizacji problemu ( /dev/null ) i przejdź do następnego poziomu (poziomów) ( /dev ), następnie mount, system plików itp., cokolwiek będzie dalej.

Na każdym kroku możesz mieć kilka warunków wstępnych, z których każdy ma własne poziomy zewnętrzne. Na przykład. użytkownik może znajdować się w niewłaściwej grupie, co prowadzi do pliku konfiguracyjnego grupy, który może mieć nieprawidłowe uprawnienia itp.

Oczywiście, musisz podążać za rodzajem drzewa w ogóle.

Harald
źródło
0

Sam nie mogłem rozwiązać tego, więc to właśnie zrobiłem:

mycommand.sh | echo -n

The echo polecenie nie zwraca uwagi na standardowe wejście, więc zostanie odrzucone. I -n jest tak, że niepotrzebny znak nowej linii nie jest drukowany na standardowe wyjście.

Mark Stewart
źródło
1
Chociaż może to odpowiedzieć na pytanie, byłoby lepszą odpowiedzią, gdybyś mógł podać jakieś wyjaśnienie czemu to robi.
DavidPostill
1
Tak, ale jak to odpowie na pytanie „nie można uzyskać dostępu do / dev / null: Odmowa uprawnień, chociaż crw-rw-rw- 1 root root 1, 3 września 21 12:05 / dev / null”?
DavidPostill
1
Nie odpowiada na pytanie. Ale zapewnia obejście. Czasami nie ma idealnej bezpośredniej odpowiedzi.
Mark Stewart
0
chmod a+rw /dev/null /dev/random /dev/urandom /dev/ptmx /dev/tty /dev/zero /dev/full /dev/fuse /dev/net/tun

to właśnie rozwiązuje mój problem na VPS. Zauważ, że po ponownym uruchomieniu serwera ponownie uruchomiłeś to polecenie

zore
źródło