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

Vit*_*lla 18 permissions ownership

使用sudo nautilus我创建了一些文件夹,我想摆脱对它们的 root 权限。但是我有很多,我想对整个目录及其包含的文件夹执行此操作。

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

Zan*_*nna 19

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

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

这将找到您家中 root 拥有的所有目录:

sudo find ~ -type d -user root
Run Code Online (Sandbox Code Playgroud)

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

sudo find ~ -type d -user root -exec sudo chown -R $USER: {} +
Run Code Online (Sandbox Code Playgroud)

解释:

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

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

sudo find ~ -user root -exec sudo chown $USER: {} +
Run Code Online (Sandbox Code Playgroud)


wal*_*tor 14

运行 GUI 工具,比如nautilus因为root这个原因被认为是有害的,等等(隐藏的功能,从谁知道在哪里静默运行程序片段的能力,......)。

你没有“权限”问题,你有“所有权”问题。

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

sudo find $HOME \! -user $USER
Run Code Online (Sandbox Code Playgroud)

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

sudo chown -R $(id -u):$(id -g) $HOME
Run Code Online (Sandbox Code Playgroud)

但这会改变所有文件的所有权 $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
Run Code Online (Sandbox Code Playgroud)

使人们有机会调整由非您拥有的文件列表,这些文件的所有权将更改回您。


Jav*_*lli 5

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

想象一下,您想要在/home/randomFolder 上工作,并且您想要处理所有权的用户是vitor-abella,您需要做的只是以 root 身份执行它:

chown -R vitor-abella:vitor-abella /home/randomFolder
Run Code Online (Sandbox Code Playgroud)

如果有很多文件和子文件夹,这可能需要一段时间,但之后您应该会走上正轨。

干杯。

  • 我使用 `$(id -u):$(id -g)`,而不是让 OP 想象,以及 `$HOME/randomFolder`。 (4认同)