我可以更改特定用户的所有文件的所有权吗?

我可以更改特定用户的所有文件的所有权吗?

有没有办法在 Gnu/Linux 中递归查找用户拥有的所有文件并将其更改为另一个用户/组?

我认为一定有一些神奇的一行代码,但我的命令行魔法技能还达不到那个程度:)

谢谢!

答案1

使用find-user选项的命令。例如:

find / -user john

最终将显示用户“john”拥有的所有文件。

如果你想改变他们的所有权(我会运行find不执行命令来确保你有你想要的列表),然后类似:

find / -user john -exec chown harry {} \;

会做的。

答案2

这已经很晚了,但是今天我偶然发现了这个问题,因为我的rsync没有这个--usermap选项。

我的chown(v. chown(GNU coreutils)8.13)提供了内置的递归(-R)和一个--from选项,因此您的(和我)的问题也可以使用来解决

chown -R --from=john harry /


更具体地说,我正在将服务器从 OpenSuse 迁移到 Debian,而 apache2 的用户和组在发行版之间有所不同。在 OpenSuse 中,它的用户和组为wwwrun (id:30)www (id:8)在 Debian 中www-data (id: 33)为 。在我使用以下方法复制文件后

rsync -az /path/to/files me@debian:/path/to/

我用了

chown -R --from=30 33 /path/to/files/
chown -R --from=:8 :33 /path/to/files/

在目标(debian)机器上。


注意:rsync version 3.1.0 protocol version 31有上面提到的--usermap内容,如果我有的话,我可以在源机器上使用一个命令完成所有三个步骤:

rsync -az --usermap=30:33 --groupmap=8:33 /path/to/files root@debian:/path/to/

相关内容