Как сменить владельца каталога

14

РЕДАКТИРОВАТЬ : проблема заключалась в том, что Apple использует разрешения для пометки резервных копий и не позволяет вам изменять их (вероятно, функция безопасности). При использовании chmod -RN <dir>я удалил данные ACL из всех папок с важными данными, и это позволило мне сделать себя владельцем и применить соответствующие разрешения.

Исходный вопрос
У меня очень большая резервная копия (> 700 ГБ), которая теперь имеет неправильные разрешения (мой UID изменился во время чистой установки, длинная история), и мне нужно изменить их. Опция, отнимающая много времени, состоит в том, чтобы вручную просматривать каждую папку и изменять разрешения, но это займет много лет.

Я хочу использовать, chownчтобы сделать себя владельцем всех моих важных данных, а затем использовать chmod 700все эти папки, чтобы дать rwxразрешения только мне.

Идеальным решением является некоторый метод использования findдля рекурсивного поиска папок, соответствующих регулярному выражению (мое текущее .*/[DCV].*|Pictures|M[ou].*), а затем присвоение моего UID владельцу и установка разрешений на 700.

Важный момент, который я не могу понять:
однако, когда я пытаюсь бежать, chown Me DirectoryNameя получаю chown: DirectoryName: Operation not permitted.

Все, что я нахожу, связано с изменением прав доступа к файлу, а не к каталогу. Может я смотрю на это не так?
Что-то говорит мне, что нет способа дать мой UID rwxи ---всем остальным.

Как мне этого добиться? Я использую Mac OS X 10.10.3.

Я знаю , что это форум UNIX / Linux (и я бегу Mac) , но этот вопрос намного больше об использовании оболочки, chown, chmod, и разрешения и любые решения , размещенные здесь , будут применимы к любой UNIX на основе операционной системы. Было бы предпочтительнее, если в результате опубликованных решений мои старые резервные копии снова появятся в Time Machine.

Спасибо всем, кто быстро ответил, но chownпочему-то не работает с каталогами. Имеет ли значение тот факт, что это .sparsebundleобраз диска на сетевом диске? Я предполагал, что это будет так же, как на любом внешнем диске.

Arc676
источник
Что за сетевой диск? Если это NFS, есть большая вероятность, что он будет экспортирован с root_squashвключенным, так что вы не сможете выполнять операции только с правами root, например, chownс клиента.
Тоби Спейт
Это жесткий диск внутри Apple Time Capsule. По сути это защищенный паролем диск внутри базовой станции WiFi. Разница лишь в том, что жесткий диск подключен к компьютеру через Ethernet. Там на самом деле есть порт USB, но я никогда не использовал его.
Arc676
В противном случае стандарт find . -user $other_uid -print0 | sudo xargs chown $USERдолжен работать.
Тоби Спейт
Какая сетевая файловая система? df -hT <dirname>должен сказать вам.
Тоби Спейт
@TobySpeight df -hT <dir>не дает никакого вывода для а) корневой каталог сетевого жесткого диска б) образ диска внутри сети HDD с) любую папку на сетевом жестком диске. Возможно, ваше поведение реализовано по-разному на Mac и Linux?
Arc676

Ответы:

23

Возможно, я неправильно понял. Но вы можете рекурсивно использовать chmod и chown, например.

chown -R username:username /path/directory

Для рекурсивного применения разрешения 700 вы можете использовать:

chmod -r 700 /path/directory

Конечно, вышесказанное относится к Linux, поэтому не уверен, что Mac OSX такой же.

РЕДАКТИРОВАТЬ: Да, извините, забыл упомянуть, что вы должны быть пользователем root, чтобы что-то набивать, я просто предположил, что вы знали это ... мой плохой.

Дакка
источник
1
Mac OS использует тот же синтаксис. Чтобы выполнить команду от имени пользователя root, самый простой способ для Mac состоит в том, чтобы поставить перед ним префикс sudo, поэтому sudo chmod(вам будет предложено ввести пароль с правами администратора).
mjturner
2

попробуй как root

 find wherever -type d -name ... -exec chown Me {} \;

где

  • -type d применяется только к директории
  • -name ... ваше регулярное выражение
  • -exec chown Me {} \; используйте chown on find dir.

ты должен быть root, чтобы chown.

Archemar
источник