재귀 적으로 소유자 창 7 변경


95

어떻게 든 실수로 하위 폴더의 모든 파일을 "소유자 없음"으로 설정했는데 모든 권한을 변경할 수없는 것 같습니다. 소유자를 변경 한 다음 권한을 설정하여 수동으로 하나씩 변경할 수 있지만 모든 파일의 소유자를 변경하는 방법 이 디렉토리에 한 번에?

답변:


92

사용 takeown소유권을 폴더, 재귀 적으로 모든 하위 폴더와 파일을 명령 프롬프트에서 :

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

이것은 잘 작동하지만 관리자 권한으로 명령 줄 콘솔을 실행하지 않으면 소유하지 않은 파일에 대해 실패 할 수 있습니다.


105

실제로 깨진 권한을 수정하려면 다음 두 명령을 차례로 실행하는 것이 가장 좋습니다.

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

첫 번째 파일은 모든 파일에 대한 소유권을 제공하지만 모든 파일에 읽기 / 쓰기 / 실행 권한이 "거부"로 설정된 경우 충분하지 않을 수 있습니다. 파일을 소유하고 있지만 여전히 아무것도 할 수 없습니다.

이 경우 두 번째 명령을 실행하면 깨진 권한이 수정됩니다.


3
훌륭한 기술 조언 ... 귀하의 솔루션은 효과가있는 유일한 솔루션이었습니다. 다시 감사합니다.
carrabino

4
최선의 조언은 테이크 타운과 icacl을 모두 사용해야합니다.
gnac December

2
/ A 옵션은 '현재 소유자 대신 관리자 그룹에 소유권을 부여하려는 경우에 유용합니다. 이를 위해서는 관리자 권한이 있어야합니다. ctrl-shift-enter를 사용하여 cmd 창을 열어야 할 수도 있습니다.
PeterVermont

4
/D Y매개 변수를 추가하여 takeown'list directory'권한이없는 재귀 디렉토리를 자동 확인합니다.
Jeroen Wiert Pluimers

3
@JeroenWiertPluimers, 그것은 좋은 조언이지만 편집이 현지화 된 매개 변수이기 때문에 편집을 제거했습니다. 영어 Windows에서는 /D Y프랑스어 /D O, 아마도 스페인어 /D S등이 될 것입니다 .
laurent

26

cacls는 더 이상 사용되지 않으며 (Windows Vista부터) 사용하는 것이 좋습니다 icacls.

이 명령은 폴더에 대한 권한을 재귀 적으로 재설정합니다.

icacls "C:\path\to\folder" /reset /T

5

cacls명령 프롬프트에서 사용할 수 있습니다 .

cacls "C : \ path \ to \ folder"/ E / T / C / G "관리자": F

/T스위치는 반복적으로 작동 할 수있다. Administrator권한을 부여하려는 사용자로 바꿉니다 .


1

경로가 매우 긴 파일 (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"

"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의 / DY는 프롬프트에 yes로 응답합니다. icacls의 경우 하위 폴더와 파일을 처리하는 / t, 자동 모드로 실행하는 / q를 사용하여 / grant를 사용하여 모든 사용자에게 액세스 권한을 부여했습니다 (죽은 PC에서 하드 드라이브의 데이터에 액세스하려고했을 때). 성공) 및 / c를 표시하여 오류를 표시합니다. 모든 파일 권한이 성공적으로 업데이트 될 때까지 폴더 이름을 바꾸면서 프로세스를 반복했습니다.

이 방법은 오래된 하드 드라이브에서 데이터에 액세스하려고 할 때 "컨테이너 액세스에서 개체를 열거하지 못했습니다"오류와 유사한 오류가 발생한 사람에게 도움이되기를 바랍니다.


0

/ reset 팁에 대해 @ this.lau_에게 감사드립니다. 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 변수를 확인하면 소스 경로 앞에 "\? \"가 추가됩니다. 이것을 앞에 추가하면 더 긴 파일 이름을 사용할 수 있습니다. 이것은 또한 내가 가진 문제이지만 이것이 해결되었습니다! 건배.

조롱


슈퍼 유저에 오신 것을 환영합니다! 그냥 당신이 "핑"사용자뿐만 아니라, 게시물에 의견 작동하는지 알려주 에서 실제 게시물. 유감스럽게도 50 세 이상의 평판 을 얻을 때까지 자신이 아닌 게시물이나 질문에 대한 답변에 댓글을 달 수 없습니다 . comment @replies는 어떻게 작동합니까?를 참조하십시오 . . 댓글에 사람을 핑할 수는 없습니다. 게시물의 작성자 및 이미 댓글을 작성한 다른 사용자 만
robinCTS
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.