Przez przypadek pobiegłem chmod -u filename
i to usunęło wszystkie uprawnienia, które miałem filename
.
Strona podręcznika nie odwołuje się do -u
opcji. Eksperymentując, doszedłem do wniosku, że nie usuwa wszystkich uprawnień, ale po prostu odczytuje i wykonuje dostęp, pozostawiając nienaruszony dostęp do zapisu.
Co to dokładnie robi?
Mój wniosek powyżej jest błędny, teraz myślę, że to, co robi, to usuwa uprawnienia, które właściciel ma ze wszystkich kategorii.
Myślę, że zachowanie jest analogiczne a=u
, tylko że jest -
zamiast =
i a
może zostać porzucone tak jak na przykład z a+x
.
permissions
chmod
y_wc
źródło
źródło
[ugoa...][[-+=][perms...]...]
, gdzieperms
jest zero lub więcej liter z zestawurwxXst
, lub jednej litery z zestawuugo
” (strona man chmod GNU); POSIX jest dość niejasny, ale definiuje produkcję „permcopy” dla tego samego efektu.u
), uprawnienia przyznane innym użytkownikom, którzy są członkami grupy plików (g
) , oraz uprawnienia przyznane użytkownikom, którzy nie należą do żadnej z dwóch poprzednich kategorii (o
). ”u
, będę określać uprawnienia przyznane użytkownikowi, który jest właścicielem pliku. Ale nie mówi, co robi. Co oznacza nawet określenie?Odpowiedzi:
To nie jest opcja, ale standardowy (ale niezbyt często) sposób określania uprawnień. Oznacza to usunąć (
-
) uprawnienia związane z właścicielem pliku (u
) dla wszystkich użytkowników (bez poprzednichu
,g
lubo
). Jest to udokumentowane na stronie man.Strona podręcznika GNU chmod dokumentuje to jako:
i później
Tak więc
-u
środki do usuwania (-
) niezależnie od uprawnienia są obecnie włączone do właściciela (u
) dla każdego (równoważnie abya-u
oprócz uhonorowania bieżący umask). Chociaż często nie będzie to bardzo przydatne, analogicznechmod +u
czasami będzie kopiowanie uprawnień od właściciela do innych, na przykład podczas działania rekurencyjnego.Jest to również udokumentowane w POSIX , ale bardziej niejasno zdefiniowane: specyfikacja uprawnień jest ogólnie
who[+-=]perms
(lub liczbą), a ich wpływ jest bardziej szczegółowo określony:i wtedy
źródło
perms
może byću
, że mam. Tak,u
określa uprawnienia lub właściciela. Ale jak to wynika, że-u
usuwa uprawnienia właściciela (modułumask
) od wszystkich użytkowników?-
zawsze się dzieje: usuwa określone uprawnienia z określonej klasy użytkowników.-u
jest dokładnie analogiczny-w
lub (bliższy) dougo-u
.chmod
pytaniem dotyczącym dokumentacji? Daj mi znać, jeśli uważasz, że to zasługuje na osobne pytanie. „i = powoduje ich dodanie i usunięcie niewymienionych bitów, z wyjątkiem tego, że nie ma to wpływu na niewymienione bity identyfikatora użytkownika i grupy w katalogu.” To, według mnie, mówi, że biorąc pod uwagę katalog, którego właściciel ma tylko prawo do zapisu,chmod u=rx directory
pozostawi uprawnienia właściciela jakorwx
. Ale tak się nie dzieje, zamiast tego stają się oczekiwaniamir-x
. Czy coś źle interpretuję?s
bity setuid / setgid ( ) są pozostawione same sobie, jeśli o nich nie wspominasz, a wszystko, czego nie określiłeś, jest usuwane.Odpowiedź jest trochę podobna do /unix//a/429424/255251 .
nie usuwa wszystkich uprawnień, ale uwzględnia
umask
wartość.Teraz zmień wartość umask
źródło