Gdy chodzi o podejmowanie plik wykonywalny Jaka jest różnica między chmod 755
i chmod +x
a kiedy użyłbym który? Do tej pory tylko użyłem chmod +x
i po prostu coś przeczytałem i wykorzystałem chmod 755
i nie mogłem powiedzieć, czy lepiej użyć, chmod 755
czy nie chmod +x
.
command-line
permissions
chmod
Darth4212
źródło
źródło
chmod +x
ustawia wszystkie flagi wykonywalne bez zmiany innych uprawnień.chmod 755
ustawia rwxr-xr-xOdpowiedzi:
Krótka wersja:
Aby móc je porównać, powinniśmy spojrzeć na nie z tej samej perspektywy, więc:
chmod +x
jest równachmod ugo+x
(na podstawieumask
wartości)chmod 755
jest równechmod u=rwx,go=rx
Wyjaśnienie:
Po pierwsze powinieneś wiedzieć, że:
+
oznacza dodanie tego uprawnienia do innych uprawnień, które już ma plik.=
oznacza zignoruj wszystkie uprawnienia, ustaw je dokładnie tak, jak podaję.odczyt = 4, zapis = 2, wykonanie = 1
Oto logika binarna (jeśli jesteś zainteresowany):
Za pomocą
+x
komendy dodajesz (+
) bit wykonywalny (x
) do właściciela, grupy i innych osób.ugo+x
lubu+x,g+x,o+x
x
weźmie pod uwagę wszystkie z nich. I jak zauważył @Rinzwind, opiera się naumask
wartości, dodaje bit do tych, na któreumask
pozwala. pamiętać, jeśli określić cel jako+r
wtedyumask
nie ma już żadnego wpływu.u+x
aby dodać tylko bit wykonywalny do właściciela.Za pomocą
755
określasz:u=rwx
(4 + 2 + 1 dla właściciela)g=rx
(4 + 1 dla grupy)o=rx
(4 + 1 dla innych)Tak
chmod 755
jest jak:chmod u=rwx,g=rx,o=rx
lubchmod u=rwx,go=rx
.źródło
chmod 755
ustawiasz te bity ORAZ usuwasz wszystkie bity suid / sgid / sticky (które mogły tam być) (na przykład: NIGDYchmod 755 /tmp
). 755 należy zawsze uważać za 0755, tzn. Pierwszy ósemkowy zestaw bitów jest również ustawiony na 0.chmod +x
dodaje uprawnienia wykonywania dla wszystkich użytkowników do istniejących uprawnień.chmod 755
ustawia755
uprawnienia do pliku.755
oznacza pełne uprawnienia właściciela oraz odczytywanie i wykonywanie uprawnień dla innych.źródło
Innym sposobem spojrzenia na to (co wydaje mi się łatwiejsze do zrozumienia)
chmod +x
jest ustawienie względnych uprawnień , achmod 755
ustawienie ich absolutnie .Po
chmod 755
uruchomieniu na pliku jego uprawnienia będą wynosić 755 lubrwxr-xr-x
.chmod +x
po prostu weźmie istniejące uprawnienia i doda uprawnienia do wykonania pliku.źródło
Polecam przejrzenie strony podręcznika użytkownika chmod w celu uzyskania szczegółowych informacji. Widzisz tylko dwa różne tryby działania dostępne za pomocą komendy chmod, aby wykonać to samo zadanie zmiany uprawnień.
Tryb ósemkowy używa liczb i ustawia całe uprawnienia do pliku. Tryb znaków korzysta z liter i zwykle służy do modyfikowania istniejących uprawnień.
chmod 755
ustawia,rwxr-xr-x
a jednocześniechmod +x
dostosowuje uprawnienia, aby właściciel, grupa i świat mieli dodane uprawnienia do plików wykonywalnych. Zakładając, że domyślne uprawnienia do plikurwxr--r--
dostosują go do tych samych uprawnień, co 755 zrwxr-xr-x
.źródło
Różnica polega na tym, jakie uprawnienia są ustawione i jakiego trybu używasz, aby je ustawić.
Po
chmod +x
ustawieniu bitu wykonywalnego dla wszystkich - właściciela, grupy właścicieli i innych użytkowników. Jest to znane jako tryb symboliczny. Cytującman chmod
:Gdy
chmod 755
używasz liczb ósemkowych, których binarna reprezentacja służy do ustawiania określonych bitów uprawnień. Pierwsze (lewe) 3 bity odpowiadają uprawnieniom właściciela, środkowe 3 uprawnienia grupowe, a ostatnie (skrajne prawe) odpowiadają uprawnieniom wszystkich innych użytkowników. Kolejność bitów jest zawsze taka sama,read,write,execute
arwx
zatem właśnie dlatego, że kolejność jest taka sama, indywidualna liczba po przekształceniu w reprezentację binarną ustawi bity uprawnień, dla których odpowiadającym bitowi pozycyjnemu w liczbie jest 1, i odznacza wartość 0 . Konkretnie:7
to 111 w formacie binarnym, więc ustawiasz wszystkie bity do odczytu, zapisu i wykonywania dla właściciela;rwx
jest ustawiony.5
to 101 w formacie binarnym, więc ustawiasz odczyt i wykonanie, ale wyłączasz zapisywanie bitów, a ponieważ jest to 5 dla grupy i innych użytkowników, te dwie kategorie będą miały te same uprawnienia. Takr-x
jest ustawione.Oto małe demo:
źródło
Jedną ważną różnicą jest to, że chmod + podlega ograniczeniom umask, a chmod <octal> nie.
Rozważ następujący przykład:
Jeśli więc chcesz zmienić różnicę w uprawnieniach w sposób odpowiedni dla twoich ustawień umask, użyj składni „+”. Ale jeśli chcesz ustawić to absolutnie bez względu na umask, użyj formatu <octal> i zdaj sobie sprawę, że musisz podać wszystkie bity, a nie tylko różnicę.
źródło
Oprócz tych pięknych odpowiedzi chcę wspomnieć o małej, ale prawdopodobnie ważnej różnicy. Polecenie
chmod 755 file
jest równoważne zchmod 0755 file
. Jeśli uruchomimy to polecenie na pliku, który ma ustawiony bit SETUID lub SETGID, usunie bit SETUID / SETGID.chmod +x file
pozostawi bit SETUID / SETGID nietknięty. Widzimy to w następującym przykładzie:źródło