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


9

有没有一种方法可以递归地查找用户拥有的所有文件,然后将它们更改为Gnu / Linux中的另一个用户/组?

我认为必须有一些魔术师,但是我的命令行巫术技能还不具备:)

谢谢!

Answers:


14

find命令与-user选项一起使用。就像是:

find / -user john

最终将打开用户“ john”拥有的所有文件。

如果您想更改其所有权(我将find不执行命令以确保您拥有所需的列表),那么类似:

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

会做的。


1
我通常使用UID并在chown harry:harry需要确保组成员身份正确的情况下运行。但这在很大程度上取决于此处的应用程序。
ewwhite 2012年

除非我使用UID,否则它实际上对我不起作用。该UID可以在/ etc / passwd中找到
user222054

7

这很晚,但是今天我偶然遇到了这个问题,因为我rsync没有--usermap选择。

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

chown -R --from=john harry /


更具体地说,我正在将服务器从OpenSuse迁移到debian,并且apache2的用户和组在发行版之间有所不同。在OpenSuse中,它的user wwwrun (id:30)和group都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/

我更喜欢这个,尤其是对于更改组的选项。一个find -exec一个衬垫对我来说是一个不得已而为之,只是手工做的事情了。(而且,我讨厌写作{} \;,但这是个人的)
Tomasz Gandor
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.