Dlaczego chmod 644 uniemożliwia dostęp do katalogów?

8

Mam kilka plików multimedialnych (wystarczy 644), które były mieszanką różnych uprawnień. Niektóre z nich można zapisywać w grupach lub na całym świecie, więc pomyślałem, że dla bezpieczeństwa, przeskoczę je wszystkie z powrotem do 644.

Problem polega na tym, że istnieje hierarchia katalogów i dla wszystkich katalogów, które zostały przechwycone, ls -lwyświetla je jako:

d????????? ? ? ? ?            ? Dirname

Jeśli przeskoczę do 744, to zostanie naprawione.

Moje pytanie brzmi: co się tutaj dzieje? Czy katalogi muszą być wykonywalne?

Oli
źródło

Odpowiedzi:

7

Jak zauważono na stronie podręcznika dotyczącej chmoduprawnień:

Litery rwxXst wybierają bity trybu pliku dla dotkniętych użytkowników: odczyt (r), zapis (w), wykonanie (lub wyszukiwanie katalogów) (x), wykonanie / wyszukiwanie tylko wtedy, gdy plik jest katalogiem lub ma już uprawnienia do wykonywania dla niektórych użytkownik (X)

Bit wykonywalny w folderze wyjaśniono powyżej jako uprawnienie do „przeszukiwania”; tzn. bit wykonawczy pozwala jedynie uzyskać dostęp do folderu w przeglądarce plików lub przejść do folderu z terminala, uruchamiając cdpolecenie lub uruchamiając, ls ~/folderaby wyświetlić listę plików w folderze.

Folder musi być wykonywalny dla właściciela , chociaż administrator będzie nadal mógł uzyskać do niego dostęp, tak jak podczas korzystania z sudodowolnego pliku lub katalogu można uzyskać do niego dostęp lub go usunąć. Ponadto uprawnienia do katalogów i plików wyjaśniono w dalszej części tego przydatnego artykułu na Stackoverflow .

Ważne jest również, aby pamiętać, że „wykonanie” folderu nie oznacza, że ​​faktycznie uruchamiasz dowolny kod lub polecenia, na przykład podczas uruchamiania wykonywalnego pliku binarnego lub skryptu.

Dla domowego użytkownika pulpitu (choć być może nie dla twojego serwera) większość folderów $HOMEma ustawione uprawnienia do wykonywania dla użytkownika, grupy i innych, jeśli są przeglądane za pomocą stat ~/myfolder(fragment poniżej):

Access: (0755/drwxr-xr-x)  Uid: ( 1000/    mike)   Gid: ( 1000/    mike)

Standardowe uprawnienia do folderów w obrębie $HOME to 755 lub 775, a dla plików - 644. Jednak reszta systemu plików będzie się różnić. Ponownie, foldery muszą mieć bit wykonania dla właściciela, w przeciwnym razie nie będą mogły być przez niego otwierane. Ważne jest, aby zachować ostrożność chmodprzy zmianie uprawnień, a zwłaszcza w przypadku rekurencji, ponieważ sytuacja może szybko się zepsuć.

Więcej informacji można znaleźć man chmodna stronach internetowych Ubuntu lub w tym artykule na stronie Superuser .

deser
źródło
0

Katalogi wymagają xustawienia bitu (dla katalogu ten bit jest postrzegany jako bit wyszukiwania), aby otworzyć. Wiele osób odkrywa, że ​​po usunięciu bitu wykonywalnego z chmod -Rcałego folderu nie ma już do niego dostępu. Aby to naprawić, używam, treeaby uzyskać tylko zestaw folderów i uniknąć koszmaru ustawiania wszystkich plików jako plików wykonywalnych (opcja dla drzewa to -d List directories only.):

sudo tree -faid dirname | xargs -L1 -I{} sudo chmod +x "{}"

jeśli nie masz tree:

find  dirname -type d -exec chmod +x {} 

Ostrzeżenie!!! powinieneś wziąć to pod uwagę:

  • użycie chmod lub chown rekursywnego w /katalogu głównym lub katalogach systemowych zniszczy Twój system operacyjny (w rzeczywistości wszystko, co rekurencyjne w /katalogu lub katalogach systemowych jest niebezpieczne)

  • nie jest dobrą praktyką bezpieczeństwa ustawiać takie uprawnienia zbiorcze

Eduard Florinescu
źródło
@Melebius Ok dzięki, cieszę się, że doszliśmy do porozumienia
Eduard Florinescu