Jaka jest różnica między chmod u+xi sprawiedliwy chmod +x? Widziałem mnóstwo samouczków, które mówią, aby używać u+xskryptów do wykonywania. Jednak pominięcie unie wydaje się mieć żadnego efektu.
Jaka jest różnica między chmod u+xi sprawiedliwy chmod +x? Widziałem mnóstwo samouczków, które mówią, aby używać u+xskryptów do wykonywania. Jednak pominięcie unie wydaje się mieć żadnego efektu.
Odpowiedzi:
Strona chmodpodręcznika użytkownika obejmuje to.
Oznacza to, że chmod u+x somefileprzyzna tylko właścicielowi uprawnień do wykonywania tego pliku, ale chmod +x somefilejest taki sam jak chmod a+x somefile.
Strona podręcznika użytkownika chmod mówi:
Format trybu symbolicznego to
[ugoa...][[+-=][rwxXstugo...]...][,...]. Można podać wiele operacji symbolicznych, oddzielonych przecinkami.Kombinacja liter „ugoa” kontroluje dostęp użytkowników do pliku zostanie zmieniony: użytkownik, który jest jego właścicielem (u), inni użytkownicy w grupie plików (g), inni użytkownicy spoza grupy plików (o), lub wszyscy użytkownicy (a). Jeśli nie podano żadnego z nich, efekt jest taki, jakby podano „a”, ale nie wpływa to na bity ustawione w umask.
chmod +x fileróżni się od chmod a+x file- szczegóły patrz odpowiedź Ravexiny.
Po prostu +xzastosuje to do wszystkich flag: [u] ser, [g] roup, [o] thers.
Wpisz man chmodwięcej informacji.
Przede wszystkim proponuję przeczytać poniższe pytania i odpowiedzi, do których łącza znajdują się poniżej:
Pomaga zrozumieć wszystkie niezbędne części, które musisz znać.
chmod +xjest równa chmod ugo+x(na podstawie umaskwartości)chmod a+xjest równa chmod ugo+x(bez uwzględnienia umaskwartości)Wynikiem chmod a+xjest ustawienie bitu wykonywalnego dla wszystkich (Właściciel, Grupa, Inni), łatwe, prawda?
Jednak chmod +xjest to trochę trudne, mówi umaskwartość użytkowa i na podstawie tej wartości dodaj xkażdemu, kto jest dozwolony.
Jeśli więc umaskmoim środowiskiem jest 0002:
$ umask
0002
$ umask -S
u=rwx,g=rwx,o=rx
Zostanie dodany xdo użytkownika (właściciela), grupy i innych, w tej sytuacji (która jest sytuacją domyślną dla większości systemów) jest dokładnie taka chmod ugo+xsama lub taka sama chmod a+x, lub w bardziej szczegółowej formie:
chmod u+x,g+x,o+x
Czy potrafisz dostrzec związek pomiędzy chmod u+x,g+x,o+xi wyjściem umask -S?
Teraz zmieńmy umaskbieżącą powłokę na 0003:
$ umask 0003
$ umask
0003
$ umask -S
u=rwx,g=rwx,o=r
Jak widać teraz tylko właściciel i grupa otrzymają bit wykonywalny, a nie pozostali. Oznacza chmod +xto, że jest teraz równe chmod u+x,g+xlub chmod ug+x.
Co się stanie, jeśli uruchomię chmod +wplik po ustawieniu umaskna 0003?
Tak samo jak przedtem, to wpływa tylko useri grouppliku bo 3 usuwa również uprawnienie write (2).
Ma taki sam efekt, gdy usuwasz trochę chmod -w:
$ mkdir test
$ stat -c %A test
drwxrwxr-x
$ umask
0002
$ chmod +w test
$ stat -c %A test
drwxrwxr-x
$ chmod a+w test
$ stat -c %A test
drwxrwxrwx
$ chmod -w test
chmod: test/: new permissions are r-xr-xrwx, not r-xr-xr-x
$ stat -c %A test
dr-xr-xrwx
chmod u+x sprawi, że plik będzie wykonywalny dla twojego użytkownika (doda go tylko dla twojego użytkownika, chociaż może być już wykonywalny przez właściciela grupy lub „inny”).
chmod +xlub chmod a+x(„bit wykonywalny plus”) powoduje, że plik jest wykonywalny przez wszystkich.
Jeśli zrobisz to w katalogu, katalog będzie można przeszukiwać. To znaczy, możesz wyświetlić zawartość katalogu, na którym masz uprawnienia + x.
chmod u+x fileoznacza dodanie bitu wykonywalnego do właściciela pliku, ignorując umask(Twój mod zostanie ustawiony, bez wątpienia).
chmod +x fileoznacza dodanie bitu wykonywalnego do właściciela, grupy i innych osób, biorąc pod uwagę umask(Najpierw sprawdź, a umasknastępnie zastosuj mody, może to mieć różne efekty w zależności od wartości umask).
stwórzmy dwa pliki:
$ touch file1 file2
$ ls -l file1 file2
-rw-rw-rw- 1 ravexina ravexina 0 Aug 5 01:45 file1
-rw-rw-rw- 1 ravexina ravexina 0 Aug 5 01:45 file2
Teraz mogę ustawić umaskna „111”, aby usunąć bitów wykonywalnych: umask 111.
$ chmod u+x file1
$ chmod +x file2
$ ls -l file1 file2
-rwxrw-rw- 1 ravexina ravexina 0 Aug 5 01:47 file1
-rw-rw-rw- 1 ravexina ravexina 0 Aug 5 01:47 file2
Jak widać, chmodzignorowano umaski plik1 otrzymał bit wykonywalny dla swojego właściciela, jednak drugi nie zrobił nic, ponieważ rozważa wartość umask.