Я случайно все это
drwxr-xr-x 4 imaan rayhawkpasscom 4096 May 9 14:59 imaan
drwxr-xr-x 4 kimessite rayhawkpasscom 4096 Mar 15 2011 kimessite
drwxr-xr-x 4 kineticimaging rayhawkpasscom 4096 Apr 4 15:56 kineticimaging
drwxr-xr-x 4 lynbrookmed rayhawkpasscom 4096 Jul 18 11:51 lynbrookmed
drwxr-xr-x 5 marcop rayhawkpasscom 4096 Sep 6 15:39 marcop
drwxr-xr-x 5 mesachiro rayhawkpasscom 4096 Sep 9 13:21 mesachiro
drwxr-xr-x 4 paramount rayhawkpasscom 4096 Jun 7 10:39 paramount
drwxr-xr-x 4 paramountco rayhawkpasscom 4096 Jun 16 13:50 paramountco
drwx------ 2 rayhawk rayhawkpasscom 4096 Jul 13 15:30 rayhawk
Я по ошибке изменил группы всех этих каталогов на неправильную группу.
Имя группы должно совпадать с именем владельца (3-й столбец) или папки (последний столбец).
Есть ли способ автоматически chgrp
рекурсивно на основе имени владельца / каталога?
Из указанного каталога я бы запустил: for i in *; do chown -R $i:$i $i; done
("-R" в chown, только если вы изначально выполнили рекурсивный chgrp
)
Мне это кажется правильным, но ваш YMMV может продать вашего первенца для донорства органов, поэтому будьте осторожны:
find . -type d -maxdepth 1 -exec chgrp -R {} {};
Используйте опцию group или gid в find и измените результат поиска. Вот пример со списком каталогов, принадлежащих mySQL
[root@kvm0001 ~]# find /var/ -type d -group mysql -exec ls -la {} \; | more
total 12
drwxr-xr-x. 2 mysql mysql 4096 Oct 9 17:09 .
drwxr-xr-x. 25 root root 4096 Oct 10 03:52 ..
-rw-rw----. 1 mysql mysql 5 Oct 9 17:09 mysqld.pid
total 20500
drwxr-xr-x. 5 mysql mysql 4096 Oct 9 17:09 .
drwxr-xr-x. 33 root root 4096 Oct 4 21:01 ..
drwx------. 2 mysql mysql 4096 Oct 4 21:23 cacti
-rw-rw----. 1 mysql mysql 10485760 Oct 9 17:06 ibdata1
-rw-rw----. 1 mysql mysql 5242880 Oct 9 17:09 ib_logfile0
-rw-rw----. 1 mysql mysql 5242880 Oct 4 20:19 ib_logfile1
drwx------. 2 mysql mysql 4096 Oct 4 20:19 mysql
srwxrwxrwx. 1 mysql mysql 0 Oct 9 17:09 mysql.sock
drwx------. 2 mysql mysql 4096 Oct 4 20:19 test
В этом случае вы хотите изменить найденные каталоги для другого пользователя группы. В этом случае вы бы сделали это:
find /path/to/directory -type d -group rayhawkpasscom -exec chgrp -Rv {}\;
Если имя каталога отличается от имени владельца, и вы хотите изменить владельца группы в зависимости от владельца, попробуйте следующее:
# ls -d */ | while read d; do chgrp -R $(stat -c %U "$d") "$d"; done