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