Quiero encontrar todos los archivos y directorios que tienen un grupo diferente del propietario.
Entonces, si estos fueran los dos archivos en el directorio, me gustaría encontrar el primero:
$> ls -l
-rw-rw-r--. 1 user175 group192 866 Dec 12 2006 index.htm
-rw-r--r--. 1 user175 user175 921 Dec 14 2006 index2.html
He estado jugando con find, pero estoy empezando a pensar que voy a tener que darme por vencida y escribir algún tipo de guión (realmente preferiría no escribir un guión).
Gracias por adelantado.
linux
permissions
find
ownership
Jistanidiot
fuente
fuente
Respuestas:
Corre
stat
Por cada objeto, recupera su propietario y grupo.awk
luego regresa el estado de salida0
Sólo si difieren. En efecto solo se imprimen estos.Notas:
sh
,stat
yawk
. Tuve algunas ideas para mejorar esto (find . -exec stat … {} + | awk …
) pero no estoy seguro de poder hacer que sean lo suficientemente robustos para trabajar con posibles nombres de archivo con nuevas líneas, etc. Decidí jugar de forma segura. Puedes usar-print0
si es necesario. Este enfoque también le permite agregar más condiciones afind
.stat -c "%U %G"
devolucionesUNKNOWN
para UID (o GID) que no se pueden traducir a nombres. Si hay un usuarioUNKNOWN
o un grupoUNKNOWN
, esto va a interferir, creo. Un objeto regresandoUNKNOWN UNKNOWN
Se interpreta ingenuamente para tener propietario y grupo coincidentes.fuente
Bueno, encontré una solución diferente que usa
ls
yawk
en lugar de encontrar Y esto sin duda necesita y puede ser optimizado. Aquí va :Cómo funciona :
-alR
hace de man ls$3
&erio;$4
correspondientemente da 3 rd &erio; 4 th Columna en salida de ls que sonfile owner
ygroup
ese dueño es parte de$0
Da línea completa en salida ls.if ($3 != $4) print $0
interpreta a "Imprimir línea completa con todas las columnas en donde el valor es 3 rd columna no es igual a valor en 4 th columnaLimitación
A veces, da este error para algunos archivos:
Según tengo entendido, es un problema de permiso con el usuario desde el que se ejecuta el comando. El usuario no es propietario ni parte del grupo para ese archivo y, por lo tanto, no puede acceder a él.
Lo que quieras se puede hacer definitivamente con
find
comando, pero creo que esto también puede ser una solución y también seguirá habiendo este problema de permiso Si lo haces confind
mando.Siéntase libre de añadir más detalles.
fuente