How to take ownership of files from the command line?

Solution 1:

You're looking for "TAKEOWN.EXE", which was first in Windows Server 2003 as a standard component, and I believe a resource-kit item prior. It is available on Windows 7, and perhaps newer systems.

takeown /f <some-file-or-folder> /r

/r performs the operation recursively on all children of the specified folder. Unlike subinacl, you must log in as the user you are trying to take ownership with; or, you can simply assign ownership to the "Administrators" group.

Here's a copy of its documentation, as preserved on SS64:

Syntax TAKEOWN [/s Computer [/u [Domain]UserName [/p [Password]]]] /f FileName [/a] [/r [/d {Y|N}]]

Key /s Computer The name or IP address of a remote computer (do not use backslashes). default = local computer. This parameter applies to all of the files and folders specified in the command.

/u [Domain]UserName Run the script with the permissions of the specified user account. default = system permissions.

/p [Password] The password of the user account that is specified in the /u parameter.

/f FileName The file name, UNC path or directory name pattern. Accepts the wildcard character *

/a Give ownership to the Administrators group instead of the current user.

/r Perform a recursive operation on all files in the specified directory and subdirectories.

/d {Y | N} Suppress the confirmation prompt that is displayed when the current user does not have the "List Folder" permission on a specified directory, and instead use a default value: Y: Take ownership of the directory. N: Skip the directory. Note that you must use this option in conjunction with the /r option. If the /a parameter is not specified, file ownership is given to the user who is currently logged on to the computer.

Mixed patterns using (? and *) are not supported by the takeown command.

After changing the owner for a file/folder, you can then assign full permissions to the files and subsequently read or delete them.

Solution 2:

subinacl is a Windows sysadmin's power tool for doing everything to do with ownership and ACLs. You can change the ownership to anyone other than just you (you can't do this with the GUI).

subinacl /file test.txt /setowner=domain\foo

This lets you set the permission to any user you like, without having to be an administrator (as I believe takeown.exe requires).


Solution 3:

Take ownership and full rights of folder and everything inside:

takeown /F somedir /A /R
icacls somedir /grant:r User:F /T

Make sure to start the Command Prompt as Administrator!

I had to start a Command Prompt as Administrator, it worked for me in Windows 8.1. With Windows 8.1 awkwardness, I had to search for "command", right click on the Command Prompt icon. For me in order to see the "Run as Administrator" option. I had a Command Prompt pinned to my Taskbar, but right clicking on it would not show the "run as Administrator" option.

In Windows 10, "Run as Administrator" should be available to you as a right click option.

Takeown Syntax:

takeown [/s <Computer> [/u [<Domain>\]<User name> [/p [<Password>]]]] /f <File name> [/a] [/r [/d {Y|N}]]

takeown Reference.

Icacls Syntax:

icacls <FileName>[/GRANT [: r] <Sid>: <Perm> [...]] [/ Denegar <Sid>: <Perm> [...]] [/Remove [:g|:d]] <Sid> [...]] [/ t] [/ c] [/ l] [/ q] [/ setintegritylevel <Level>: <Policy> [...]]Icacls <Directory>[/ sustituir <SidOld><SidNew>[...]] [/ restore <ACLfile>[/ c] [/ l] [/q]]

icacls Reference.


Solution 4:

I know this is a really old post, but there is a way built into Windows 7 and newer (may be in Windows Vista, but I am not sure). Run the following from an escalated command prompt in the folder that you want reset. /t tells icacls to perform the operation recursively.

icacls .\* /setowner %UserDomain%\%UserName% /t
icacls .\* /reset /t

The first command resets the owner to who ever is logged on via the environment variables. Of course, a specific name can be used instead.

The second command then forces the permissions to be reinherited down the tree to all of the child folders and files.

Hope this helps someone in the future.


Solution 5:

You might want to take a look at SetACL, the swiss army knife of permission management. Here is an example of how to assign ownership of all files on drive C: to "Administrators" and remove protection of inheritance from all child objects in one go:

SetACL.exe -on "C:\\" -ot file -actn setprot
           -op "dacl:np;sacl:nc"
           -rec cont_obj
           -actn setowner -ownr "n:S-1-5-32-544;s:y"

You can also add -silent.