I dostać pozwolenie odrzucone podczas próby przenieść folderu Music
poprzez mv
choć właściciel katalogu jest ustawiona na moich uprawnieniach użytkowników i użytkowników są ustawione do 7. Co się dzieje?
(Wiem, że mógłbym użyć sudo, ale chcę dowiedzieć się, co jest nie tak. Coś tu pachnie podejrzanie). Ps: Jestem na Mac OS X El Capitan.
Odpowiedzi:
Zwróć uwagę, że
a
przechodzącb
do folderu , przechodząc doc
, uprawnienia do folderua
określają, co możesz zrobić.W tym przypadku
.
najważniejsze będą uprawnienia .Zauważ, że uprawnienia są bardziej złożone niż po prostu
rwx
. Twójmusic
folder ma@
na końcu,.
folder ma+
na końcu.xattr -h
do określania złożonych uprawnień dla symbolu @.getfacl
do określania listy ACL dla symbolu +.źródło
man xattr
może być dobrym punktem wyjścia.ls -la@e
. Najprawdopodobniej były tamdeny delete
listy ACL, które również zapobiegają zmianie nazwy.Korzystałem z podsystemu Windows dla systemu Linux. Miałem otwarty katalog w innej instancji bash. Zamknięcie go pozwoli mi przenieść katalog.
źródło
Wydaje się, jakby gdzieś głęboko w tym katalogu znajdował się co najmniej 1 plik, który nie miał odpowiednich uprawnień.
Więc to, co zrobiłem, to:
Teraz działa.
źródło
chmod 755
usunięcie specjalnych uprawnień „@” w folderze Muzyka?chmod -a 'everyone deny delete' Music
tego. W El Capitan może być inaczej.Problem tutaj prawdopodobnie dotyczy listy kontroli dostępu (ACL) folderu Music. ACL to oddzielny system uprawnień niż zwykłe systemy POSIX, które zwykle są wymienione przez
ls -l
. Niektóre inne katalogi w folderze domowym i gdzie indziej również zawierają listy ACL.Aby zobaczyć listy ACL w katalogu domowym, użyj:
Prawdopodobnie zobaczysz regułę podobną
0: group:everyone deny delete
do katalogu Muzyka. Jak zauważyłeś, możesz zastąpić problem zsudo
. Jeśli nie chcesz tego robić (lub nie możesz), masz inne opcje, biorąc pod uwagę, że jesteś właścicielem pliku. Możesz usunąć obraźliwy wpis z listy ACL katalogu Music na podstawie jego indeksu (0 w podanym powyżej przykładzie):Lub możesz usunąć wszystkie wpisy z listy ACL:
Teraz możesz przenosić katalog (z zastrzeżeniem zwykłych uprawnień POSIX). Jeśli chcesz przywrócić listę ACL po przeniesieniu, możesz użyć:
I użyj
/bin/ls -le
ponownie, aby potwierdzić, że lista ACL jest taka, jak chcesz. Sprawdź przykłady ACL w,man chmod
aby uzyskać więcej informacji. W szczególności to wprowadzenie jest pomocne:Zamówienie ACL
Nie sądzę, że strona podręcznika wyjaśnia zasady dotyczące zamawiania, ale ta strona wyjaśnia zasady porządkowania list ACL. W szczególności wyraźna
deny
reguła zostanie zastosowana przed wyraźnąallow
regułą. Tak długo, jakgroup:everyone deny delete
wpis jest na swoim miejscu, nie można dać użytkownikowi pozwolenia na usunięcie za pomocąallow
reguły. Wynika to z tegoeveryone
, że grupie odmawia się pozwolenia , które obejmuje ciebie, i ta reguła zostanie zastosowana jako pierwsza.źródło
everyone deny delete
Wpis ACL na domyślnych katalogów domowych MacOS”jest rzeczywisty powód katalogi mogą być ani przeniesiony, ani usunięta. (Należy również pamiętać, że system operacyjny może je ponownie utworzyć w dowolnym momencie.)Miałem ten problem, gdy zestaw programów działał w katalogu, który próbowałem usunąć. Aby przenieść katalog, musiałem najpierw zabić wszystkie działające programy z tego katalogu.
W poniższych poleceniach bardzo ostrożnie wybieraj nazwę swojego programu. W celach informacyjnych użyłem następujących poleceń:
Ogólna procedura to:
kill -9
z dużą ostrożnością ) wszystkich programów z kataloguźródło
grep
i sprawdzeniu ich. Cokolwiek wprowadzisz do tego pierwszegogrep
, wybierze z puli wszystkich uruchomionych programów ikill
to z uprawnieniami roota ...Może się tak również zdarzyć, gdy jeden z plików w środku jest chroniony przed zapisem. Miałem dzisiaj przypadek na krawędzi, kiedy
access.log
był chroniony przed zapisem na Apache, który został już zatrzymany. Właśnie usunąłem ten plik, więc mogłem przenieść katalog nadrzędny.źródło