Wpadłem w duże kłopoty, gdy zmieniłem uprawnienia folderu, myfolder
w którym się znajduje /
. Wydałem polecenie
sudo chown -R luca:luca /myfolder/.*
Moim zamiarem była zmiana własności wszystkich ukrytych plików w /myfolder
.
Niestety zdałem sobie sprawę, że /
zmieniła się także własność , co oczywiście pozostawiło mi zepsuty system. Myślę, że tak się stało, ponieważ ..
pasuje .*
, ale nadal wydaje mi się dziwne.
Czy zmiana katalogu nadrzędnego jest prawidłowym zachowaniem, czy powinienem zgłosić błąd?
Jeśli to był mój błąd w używaniu Chown, jakie są najlepsze praktyki, aby zapobiec zmianie własności folderów i plików systemowych?
permissions
filesystem
chown
hidden-files
lucacerone
źródło
źródło
..
mecze.*
.*
oznacza dowolny plik, który kończy się na.
*.
oznacza dowolny plik, który zaczyna się od.
/
bezpośrednio (tworzenie folderów, usuwanie itp.), Chyba że jest to absolutnie konieczne (otwórz pytanie o to, co chcesz osiągnąć). Jest to również niebezpieczne przy użyciu symboli wieloznacznych + uprawnień roota, ponieważ najczęściej nie masz 100% pewności, na co wpływ ma symbol wieloznaczny.chmod
ichown
są podobnymi poleceniami, oba zaczynają się odch
, zawierająo
i mają dwie inne podobne litery (n
im
). </ literal> Poważnie, są one zarówno w postaci:[cmd] -R [mode or user] [one or more files]
. Niektóre rozwiązania oferowane w przypadku tego pytania działają również w przypadku Twojej sprawy, na przykład to Sean Reifschneider (w środku). Ta odpowiedź dotyczy także plików ukrytych tylko poprzez usunięcie wzorca globalnego dla plików nie ukrytych.Odpowiedzi:
Pamiętaj, że linia poleceń jest rozszerzana (interpretowana) przez powłokę przed wykonaniem
interpretowane jest najpierw jako:
zwróć uwagę na
/myfolder/..
w linii poleceńchown -R luca:luca /myfolder/..
jest równoważne zchown -R luca:luca /
tym, że chown działa „do tyłu”
Użyj,
echo /myfolder/.*
gdy używasz „*” do weryfikacji.źródło
/myfolder
.find
Komenda jest zbędny i przerwy z nazwy plików zawierające spacje. (jeśli chcesz rekurencyjnie zmieniać pliki,find /myfolder | xargs chown luca:luca
jest podobny dochown -R luca:luca /myfolder
).Dobrze. Wiersz poleceń jako root jest bardzo potężny. Przeczytaj niektóre z tych klasyków. I tak,
.*
dopasowanie do..
jest dokładnie tym, co jest zamierzone. Kropka nie jest znakiem specjalnym. To konwencja. Zgodnie z konwencją, pliki zaczynające się od kropki są ukryte w widoku domyślnym podczas wyświetlania katalogu - nic więcej i nic więcej. Zgodnie z konwencją i-węzeł prowadzący do bieżącego katalogu otrzymuje.
nazwę, a i-węzeł prowadzący do katalogu nadrzędnego otrzymuje..
nazwę.Powinieneś był to zrobić
Czy wspomniałem, że w nazwach plików rozpoczynających się od kropki nie ma nic specjalnego? Recursive
chown
tak nie uważa.W tej chwili możesz odzyskać część funkcji, zmieniając własność z powrotem na root. Jednak na dłuższą metę prawdopodobnie będziesz musiał ponownie zainstalować system.
Z reguły:
echo .*
).źródło
chown -R luca:luca /myfolder/.[^.]*
myślę, żeecho .*
jest dobrym sposobem na wypróbowanie rozszerzenia. Pokaże ci dokładnie to, co widzi muszla.ls .*
może być nieco bardziej skomplikowane, jak będzie ona zejść katalogów (ls -d .*
mogłoby być lepsze, ale równie dobrze może po prostu użyćecho .*
)