2012-08-15 20:46:33 +0000 2012-08-15 20:46:33 +0000
58
58

Jak chown/chmod wszystkie pliki w bieżącym katalogu?

Próbuję zmienić własność i uprawnienia niektórych plików (i katalogów) w bieżącym katalogu. Próbowałem tego:

chown username:groupname .

…oczekując, że wpłynie to na wszystkie pliki w bieżącym katalogu, ale zamiast tego wpłynie tylko na katalog, w którym jestem (co jest przeciwieństwem tego, co chcę zrobić). Chcę go zmienić na wszystkich plikach bez wpływu na katalog, w którym się znajduję.

Jak mogę wyciąć i wyciąć wszystkie pliki z bieżącego katalogu?

Odpowiedzi (3)

98
98
98
2012-08-15 20:48:16 +0000

Chcesz użyć chown username:groupname * i pozwolić powłoce rozszerzyć * na zawartość bieżącego katalogu. To zmieni uprawnienia dla wszystkich plików/katalogów w bieżącym katalogu, ale nie zawartość katalogów.

Można też zrobić chown -R username:groupname ., które zmieniłoby uprawnienia w bieżącym katalogu, a następnie rekurencyjnie w dół wewnątrz niego i wszystkich podkatalogów, aby zmienić uprawnienia.

chown -R username:groupname * zmieni uprawnienia we wszystkich plikach i katalogach rekurencyjnie, pozostawiając bieżący katalog samemu sobie. Ten styl i pierwszy styl to to, czego najczęściej używam.

9
9
9
2012-08-15 20:48:05 +0000

Myślę, że chcesz tego:

chown username:groupname *

Jeśli chcesz także zmieniać podkatalogi, będziesz potrzebował przełącznika -R (-r jest przestarzały):

chown -R username:groupname *

0
0
0
2019-03-15 14:44:38 +0000

chown jest świetny, jeśli jesteś superużytkownikiem. Miałem problem z tym, że ktoś inny uruchomił make w moim katalogu, a teraz posiada pewne pliki, których nie mogłem zmodyfikować. Oto moje obejście, które zajmuje się plikami i katalogami, chociaż zostawia katalogi leżące wokół z przyrostkiem .mkmeowner, jeśli nie może ich usunąć.

  • Następujący skrypt zmienia własność plików i katalogów przekazanych do niego, aby były własnością obecnego użytkownika, próbując obejść problemy z uprawnieniami poprzez wykonanie nowej kopii każdego katalogu lub pliku nie będącego własnością obecnego użytkownika, usunięcie (lub próbę delete) oryginalnego pliku, oraz odpowiednią zmianę nazwy.
  • Zamiarem jest, aby był to skrót od “make me owner”. Nie używam podkreśleń, ponieważ są one bolesne w pisaniu.

Przykłady:

% mkmeowner .

% mkmeowner dirpath1 dirpath2
  • Wymaga następującego skryptu mkmeownerone, aby znaleźć się na twojej drodze.

mkmeowner:

#!/bin/bash
["x$1" == "x-h"] || ["x$1" == "x--help"] && cat << END && exit 0
Usage: $0 dirorfile [direorfile2 ...]:
    change ownership of directories or files to current user.
    Current user must have permissions to read those and write to owner directory.
END
mkmeownerone=`which mkmeownerone`
for d in $*; do
    find "$d" -not -user `whoami` -exec $mkmeownerone {} \;
done

mkmeownerone:

#!/bin/bash
# change ownership of one file or directory
f="$1"
expr match "${f}" '.*\.mkmeowner$' > /dev/null && exit 1 # already tried to do this one
if mv -f "$f" "${f}.mkmeowner"; then
    cp -pr "${f}.mkmeowner" "$f" && rm -rf "${f}.mkmeowner"
    exit 0
fi
exit 1