如何递归地将文件夹的所有者更改为当前用户?

如何递归地将文件夹的所有者更改为当前用户?

sudo nautilus创建了一些文件夹,我想删除这些文件夹的 root 权限。但我有很多文件夹,我想对整个目录及其包含的文件夹执行此操作。

那么如何允许当前用户读/写特定目录内的所有文件和文件夹/home

答案1

要恢复造成的损害,sudo nautilus您应该使自己成为 root 拥有的任何目录(及其内容)的所有者。

您可以使用find它来执行此操作,因为它有一个测试可以仅查找特定用户拥有的文件。

这将找到你主目录中所有由 root 拥有的目录:

sudo find ~ -type d -user root

然后,您可以重复该find命令并添加要执行的操作 - 递归地将所有找到的目录及其内容的所有权更改为当前用户:

sudo find ~ -type d -user root -exec sudo chown -R $USER: {} +

解释:

  • ~主目录
  • -type d仅查找目录
  • -user root仅查找属于根目录的内容
  • -exec对找到的内容执行以下命令
  • sudo chown -R递归更改所有者
  • $USER当前用户
  • :还可以将组更改为特定用户

更有效地,你可以省略-type d查找属于 root 的任何类型的文件,也可以省略-Rasfind将通过对所有文件进行操作来为你执行递归

sudo find ~ -user root -exec sudo chown $USER: {} +

答案2

运行 GUI 工具(例如nautilusroot由于这个原因被认为是有害的,其中包括(隐藏功能、能够从谁知道的地方默默运行程序片段,...)。

您没有“许可”问题,而是“所有权”问题。

root要查找所有由(实际上由其他人拥有) 拥有的文件,请执行以下操作:

sudo find $HOME \! -user $USER

要将所有权改回给您,您可以

sudo chown -R $(id -u):$(id -g) $HOME

但这会改变以下所有文件的所有权$HOME

sudo find $HOME \! -user $USER >/tmp/list-of-files
# edit the list of files, and delete file files you don't want to chown
nano /tmp/list-of-files 
xargs sudo chown $(id -u):$(id -g) </tmp/list-of-files

让您有机会调整非您拥有的文件列表,这些文件的所有权将改回给您。

答案3

您需要做的是从用户(和组)更改文件夹的所有权您想要的其他用户(和组)。

想象一下,你想从事/home/随机文件夹,并且您要处理所有权的用户是维托尔阿贝拉,您需要做的只是以 root 身份执行此操作:

chown -R vitor-abella:vitor-abella /home/randomFolder

如果有很多文件和子文件夹,则可能需要一段时间,但之后您应该就可以顺利完成了。

干杯。

相关内容