Które jest szerzej stosowane: chmod 777 lub chmod a + rwx [zamknięte]


20

Z dwóch opcji zmiany uprawnień:

  • chmod 777 file.txt
  • chmod a+rwx file.txt

Piszę dokument, w którym szczegółowo użytkownicy muszą zmienić uprawnienia do określonego pliku. Chcę szczegółowo opisać to jako najczęstszy sposób zmiany uprawnień do plików.

Obecnie mówi:

- Set permissions on file.txt as per the example below:
    - chmod 777 /tmp/file.txt

To tylko przykład i nie zmieni plików, aby mieć pełne uprawnienia dla wszystkich.


6
pierwsze rozwiązanie jest krótsze i szerzej stosowane, nigdy nie widziałem drugiego.
Archemar

2
ustawianie uprawnień do odczytu, zapisu i wykonywania dla wszystkich nie jest dobrym pomysłem pod względem bezpieczeństwa. Zamiast tego powinieneś użyć chmod 773.
Martin Erhardt,

1
@MartinErhardt Zwykle używałbym 775lub tylko 755dla plików wykonywalnych.
Kevdog777

3
chmod 777jest jak chmod a=rwxnie chmod a+rwx.
Stéphane Chazelas

1
777lub 666jest prosty i znacznie łatwiejszy do zapamiętania niż ugo+rwx, a+rwxlub ugo+rwco jest bardzo mylące, ponieważ ojest dwuznaczne i może oznaczać dla ciebie albo właściciela, albo innych, których wybierzesz. Dlatego zamiast popełnić wielki błąd, sprawdzasz, manktóry z nich jest, lub po prostu korzystasz z liczb.
kenorb

Odpowiedzi:


29

Google daje:

chmod 777 jest około 3 razy bardziej popularny.

To powiedziawszy, wolę używać długich opcji w dokumentacji i skryptach, ponieważ są one samo-dokumentujące. Jeśli podążasz za instrukcjami za pomocą polecenia „Uruchom ls -l | grep file.txti zweryfikuj uprawnienia”, możesz użyć, chmod a+rwxponieważ w ten sposób ls wyświetli uprawnienia.


Dzięki za to. Sądzę, że napisanie go w całości (alfanumerycznie) zapobiegnie pytaniu ludzi, co to 7znaczy, itp.
Kevdog777

1
Myślę, że powód chmod 777jest bardziej popularny (jak przypuszczano, zanim zobaczysz swoje liczby), po prostu wpisujesz 2 znaki mniej :)
Ángel

Jeśli chcesz dodać wskazówki do swojej dokumentacji, możesz dodać wskazówkę, która chmod 777jest przydatnym skrótem do osiągnięcia tego samego efektu. Twoi czytelnicy docenią element edukacyjny w twojej dokumentacji. 777 jest bardziej popularny, ponieważ trzykrotnie łatwiej i szybciej jest trafić 7, ale gdy nowy użytkownik zobaczy 777 po raz pierwszy, może nie wiedzieć, co to dokładnie znaczy. Dlatego jest to zły wybór jako podstawowa dokumentacja. Ale zdecydowanie warto wspomnieć o tym jako wskazówkę.
ADTC

Jako styczna mój brat i jego przyjaciele zastosowaliby tę technikę, aby zezwolić na słowa Scrabble. Mieli pewien próg liczby trafień w Google, zanim słowo zostało uznane za „prawdziwe”
Wayne Werner

Myślę, że jest popularny, ponieważ jest starszy (notacja symboliczna została dodana później), więc kiedy ktoś wybierze, wyszukuje w Google lub jakikolwiek inny odpowiednik czasu i idzie z tłumem. Wydaje mi się, że łatwiej jest używać symboli, ponieważ zanim opracowałem liczby, mogłem wpisywać symbole, również mam tendencję do poprawnego za pierwszym razem.
ctrl-alt-delor

26

[Edytuję, aby dodać najlepszą praktykę, postępując zgodnie z sugestią Dotancohen w jego odpowiedzi. Mam nadzieję, że to nie wyjaśnia tego, i że przyjęto dobry nawyk]

Ważne informacje dodatkowe: nie są równoważne.

chmod a+rwx: ustaw ostatnie 3 oktale na 777, więc upewnij się, że Właściciel, Grupa i Użytkownicy mają ustawiony „rwx”. Jeśli w pierwszej ósemce są dodatkowe bity (setuid, setgid i / lub Sticky bit), pozostawia je nietknięte. Pomyśl o tym jako o pliku binarnym „lub 00777”.

chmod 777 : ustaw prawa na 00777, aby zapewnić, że Właściciel, Grupa i Użytkownicy mają ustawione „rwx”, I NIC WIĘCEJ. Upewnij się również, że dodatkowe bity (setuid, setgid i / lub Sticky bit) są ustawione na 0.

Więc skorzystaj z pierwszego formularza, jeśli chcesz tylko zapewnić dostęp wszystkim (i upewnij się, że jest on podwójny, potrójny, że jest wymagany ... otwiera drzwi do wszelkiego rodzaju problemów bezpieczeństwa, niektóre dość nieoczekiwanie szeroko pozwalają na to złośliwy użytkownik)

Skorzystaj z formularza 777, jeśli chcesz również zresetować dowolny bit setuid / setgid / sticky, tj. Jeśli plik musi mieć wartość „00777”, co prawdopodobnie jest bardziej prawdopodobne w twoim przypadku (prawo do pliku jest znane i powinno być : 00777). Również tutaj potrójnie upewnij się, że jest naprawdę potrzebny ...

Zwykle najlepiej jest zachować dostęp do właściciela (a czasem do grupy): następnie użyj grup, aby udzielić dostępu określonym użytkownikom do pliku / katalogu. a + rwx jest zarówno łatwym, jak i zwykle niewłaściwym sposobem udzielania dostępu (oczywiście są bardzo rzadkie przypadki, gdy jest to jedyny sposób ...)

http://en.wikipedia.org/wiki/Chmod to dobra lektura, ponieważ wyjaśnia, co oznacza każda liczba lub litera (w tym setuid / setgid / sticky)


1
Ponadto chmod a + w (który zawiera + rwx) w pliku suid jest bardzo niebezpieczny. Czy muszę opracowywać chmod a + w *?
Joshua

Po co ustawiać otherspozwolenie? Jeśli jesteś zalogowany na komputerze jako użytkownik, to z pewnością możesz po prostu użyć usersuprawnienia?
Kevdog777

@ Kevdog777: Inni są dla ludzi, którzy nie są właścicielami ani w grupie, czyli wszyscy inni w systemie
Olivier Dulac

1
@ Kevdog777: jeśli tylko root i użytkownik potrzebuje dostępu: chmod 00600 (jeśli nie ma potrzeby wykonywania pliku) lub chmod 00700 (jeśli konieczne jest wykonanie pliku -lub- to katalog). lub chmod 00400, aby dodać (niewielką, łatwą do zastąpienia) ochronę przed modyfikacją / zapisem do pliku (00500 dla katalogu). Wtedy inni (i ludzie w grupie, ale nie użytkownik) nie będą mogli uzyskać dostępu do pliku / katalogu. (po notatce dotandcohen dodam tam czwarty ósemek + „0” przed nim: nie robi różnicy dla powłoki, ale pomaga, jeśli ustawisz za pomocą perl / C / etc, a czwarty ósemek jest rodzajem przypomnienia, że ​​istnieje i że jest również ustawiony)
Olivier Dulac

4
chmod 777jest jak chmod a=rwx.
Stéphane Chazelas

1

Zwykle myślę o różnicy polegającej na tym, że ustawienie uprawnień na 0777 jawnie ustawia je na 0777. Jak wspomniano wcześniej, wiodące 0 zostanie wywnioskowane, jeśli po prostu wpiszesz 777. Podczas gdy a + rwx dodaje odczyt / zapis / wykonanie, pozostawiając setuid / sticky nieco nietknięty.

Załóżmy, że chcesz mieć pewność, że plik jest wykonywalny, możesz użyć znaku + x, aby zmodyfikować uprawnienia do wykonywania bez martwienia się o inne uprawnienia lub modyfikowania ich. Jeśli użyłeś reprezentacji ósemkowej, musisz wiedzieć, jakie uprawnienia są obecnie ustawione, aby mieć pewność, że nie zmodyfikujesz uprawnień w inny sposób niż zamierzałeś.


0

Powiedziałbym, że podawanie wartości liczbowych jest znacznie bardziej powszechne w „prostych przewodnikach dla ludzi”, takich jak te opracowane dla użytkowników niedrogiego hostingu. Pamiętaj jednak, aby podać je jako wartości ósemkowe , a nie dziesiętne:

$ chmod 0777 some_dir

Uwaga wiodący 0w 0777. Chociaż Bash i inne środowiska CLI robią to dobrze, używając niepakowanych 777, wiele języków programowania, takich jak PHP i Perl, ma podobne funkcje, które wymagają wiodącej roli 0. Polecam więc również jego użycie w Bash, aby pamiętać, że powinien tam być.

Uwaga dla downvoterów: Jak wyjaśniono w komentarzach, chmodpolecenie faktycznie przekazuje dyrektywę jako ósemkową, nawet jeśli podano zapis dziesiętny. Jednak nie wszystkie środowiska obsługują to, dlatego najlepszą praktyką jest przyzwyczajenie się do jawnego określania tego.


10
chmodnigdy nie traktuje liczby jako dziesiętnej. chmod 777 filei chmod 0777 filesą całkowicie równoważne.
celtschk

3
@ Kevdog777: „ósemkowy” oznacza po prostu base-8. Ale nie musisz się tym przejmować, jeśli chodzi o użycie chmodpolecenia powłoki; możesz po prostu myśleć o tych trzech cyfrach jako o niezależnych od siebie, z których każda mówi ci jeden zestaw uprawnień.
celtschk

3
Dla chmod 0 w 0777 oznacza „wyczyść setuid, setgid i lepkie bity”. Jest to równoważne 777, ponieważ argument jest zawsze dopełniany zerami wiodącymi do czterech cyfr. Z tego samego powodu chmod 77jest równoważne z chmod 077.
Emil Jeřábek wspiera Monikę

1
chmodKomenda interpretuje swój argument tryb, w ósemkowym. Musisz zwrócić uwagę, jeśli używasz większości języków programowania (C, Perl,…), ale w skrypcie powłoki jest to ósemkowe chmod.
Gilles „SO- przestań być zły”

1
+1 dla twojej notatki, ponieważ rzeczywiście dobrze jest zawsze wstawiać 0 (nawet jeśli ustawisz wszystkie 4 ósemki, na przykład 01777), ponieważ nie ma to znaczenia dla powłoki, ale upewnij się, że C, perl i inni interpretują ją jako ósemkową
Olivier Dulac
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.