рекурсивно сменить владельца windows 7

Как - то я случайно установил все файлы в подпапке "нет владельца", и я не могу изменить все разрешения. Я могу изменить один вручную, изменив владельца, а затем установив разрешения, но как я могу изменить владельца всех файлов в этом каталоге сразу?

27
задан this.lau_
19.12.2022 9:24 Количество просмотров материала 2471
Распечатать страницу

6 ответов

использовать takeown из командной строки, чтобы взять на себя ответственность папку, все ее подпапки и файлы рекурсивно:

takeown /f "c:\folder\subfolder" /r

это работает хорошо, но если вы не запускаете консоль командной строки от имени администратора, это может привести к сбою для файлов, которыми вы не владеете.

83
отвечен Kez 2022-12-20 17:12

чтобы исправить действительно сломанные разрешения, лучше всего запускать эти две команды одну за другой:

takeown /f "C:\path\to\folder" /r
icacls "C:\path\to\folder" /reset /T

первый даст вам право собственности на все файлы, однако этого может быть недостаточно, например, если все файлы имеют разрешения read/write/exec, установленные в "deny". Вы владеете файлами, но все равно ничего не можете с ними сделать.

в этом случае выполните вторую команду, которая исправит поврежденные разрешения.

94
отвечен this.lau_ 2022-12-20 19:29

обратите внимание, что cacls является устаревшим (начиная с Windows Vista?) и он советует вам использовать icacls.

эта команда рекурсивно сбросит разрешения для папки:

icacls "C:\path\to\folder" /reset /T
26
отвечен therefromhere 2022-12-20 21:46

можно использовать cacls из командной строки:

cacls "C:\path\to\folder" /E /T /C /G "Administrator":F

/T переключатель позволяет ему функцию рекурсивно. Заменить Administrator С пользователем, которому вы хотите дать разрешения.

5
отвечен John T 2022-12-21 00:03

у меня были проблемы с файлами с очень длинными путями (больше 256 символов). Две команды

takeown /f "C:\path\to\really_long_folder_name" /r
icacls "C:\path\to\really_long_folder_name" /reset /T

работало, кроме этих файлов с очень длинными путями и именами. В итоге я переименовал

"C:\path\to\really_long_folder_name"

to

"C:\path\to\r"

и потом работает

takeown /f "C:\path\to\r" /r /D Y
icacls "C:\path\to\r" /grant Everyone:(F) /t /c /q

после чего я мог бы переименовать папки на что-то более вразумительное. по takeown /Д Г ответы " да " на запрос. Для icacls я использовал / grant, чтобы предоставить полный доступ всем (поскольку я был просто попытка доступа к данным на жестком диске с мертвого ПК), с /t для обработки вложенных папок и файлов, /q для запуска в тихом режиме (скрыть успехи) и /c, чтобы показать ошибки. Я повторил процесс, переименовывая папки, пока все разрешения файлов не были успешно обновлены.

надеюсь, это поможет кому-то, кто столкнулся с ошибками, похожими на "не удалось перечислить объекты в контейнере доступ запрещен" ошибки, которые я получал при попытке получить доступ к данным со старого жесткого диска.

1
отвечен Thesle Williams 2022-12-21 02:20

Спасибо @это.lau_ для подсказки / reset, это именно то, что мне нужно, чтобы завершить мой сценарий, чтобы стать владельцем CSC и сделать его резервную копию. После принятия права собственности C:\Windows\CSC разрешения, как правило, становятся очень непоследовательными в отношении наследования - переключатель /reset исправил это прямо для меня.

Function Copy-CSCData {
    $Datetime = Get-Date -Format yyyyMMdd.hhmmss
    $LogPath = 'PATH TO LOG'
    $CSCSource = 'C:\Windows\CSC\v2.0.6\namespace'
    $Dest = 'DESTINATION PATH'
    $icaclsource = "\?\" + $CSCSource

    $CSCLogfile = "$LogPath\" + "$Datetime" + "_CSCRobocopy.log"

    icacls.exe $icaclsource /reset /T
    icacls.exe $icaclsource /grant :r "Everyone:(OI)(CI)F"

    Robocopy $CSCSource $Dest /Copy:DATSO /E /XO /Z /LOG+:$CSCLogfile /V /FP /NP /R:2 /W:2 /XF "~$*","*.tmp"
}

@Thesle Williams - если вы посмотрите переменную $icaclsource сверху, вы заметите, что я добавляю"\?\ "перед исходным путем. Путем добавлять это в фронте, оно принимает более длинные имена файлов. Это тоже проблема, которую я имел, но это исправили! Овации.

Josh

0
отвечен Joshua Biddle 2022-12-21 04:37

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх