He usado deluser
sin el parámetro --remove-all-files
:
$ deluser 'user'
¿Hay alguna otra forma que no sea rm -r /home/user
eliminar todos los archivos propiedad de un usuario ahora (ya que he ejecutado deluser)?
fuente
He usado deluser
sin el parámetro --remove-all-files
:
$ deluser 'user'
¿Hay alguna otra forma que no sea rm -r /home/user
eliminar todos los archivos propiedad de un usuario ahora (ya que he ejecutado deluser)?
Tendrá que buscar manualmente los archivos, que probablemente fue lo deluser
que haría.
Tenga en cuenta --remove-all-files
que no es lo mismo que rm -r /home/user
. El último solo elimina el homedir (que puede incluir archivos que no pertenecen a ese usuario, aunque no es habitual), el primero elimina todos los archivos que posee ese usuario del sistema. Al menos si la página de manual es de confianza .
GNU find
tiene una -user
prueba, por lo que puede hacer find / -user xxx
para encontrar todos los archivos propiedad del usuario xxx
. xxx
sería el nombre de usuario y puede (y en este caso tendrá que serlo, ya que el usuario ya no existe) ser la ID numérica del usuario. find
también tiene una -delete
opción, entonces
find / -user xxx -delete
Debería hacerlo, aunque no he probado el comando con todas las opciones al mismo tiempo.
EDITAR: ID numérica: la razón por la que dije que debe usar una ID numérica es porque, como ya eliminó al usuario, /etc/passwd
se eliminó su entrada (tenía, junto con otras cosas, la ID de usuario, junto con su nombre de usuario) .
Entonces, si no eliminó su homedir, una de las formas más fáciles es simplemente consultar la identificación del propietario de ese homedir:
stat -c %u /home/user/
( stat
es una herramienta para leer datos del sistema de archivos. -c %u
Indica stat
cómo escribir su salida, aquí le pido que simplemente envíe la ID de usuario)
Si te gustan las frases sencillas, incluso puedes encadenar ambos comandos:
find / -user $(stat -c %u /home/user/) -delete
(Por supuesto, es posible que prefiera ejecutarlo primero con un no -delete
para asegurarse de que no hay nada que desee conservar y para detectar cualquier error que haya cometido al escribir el resto del comando. Los errores al realizar operaciones de eliminación recursivas /
no son para los débiles de corazón.)
-exec
opción de buscar para ejecutar un comando rm personalizado si desea un poco más de control sobre sus eliminaciones, pero nunca lo he intentado, así que YMMV.rm
usoxargs
(pero esto probablemente alcanzará los límites de los argumentos si hay demasiados resultados), pero mire-depth
, citando el manual de información: "Si su comando 'find' elimina directorios, puede encontrar que aparece un mensaje de error falso cuando 'find' intenta volver a aparecer en un directorio que ahora se ha eliminado. El uso de la opción '-depth' normalmente resolverá este problema ". (y más adelante en la misma sección, "(` -delete 'implica `-depth' de todos modos)")find: 'user' is not the name of a known use
/etc/passwd
que enumere el usuario y su identificación. Tendrás que encontrar la identificación numérica. Hazlostat -c %u /home/user/
, debería darte la identificación de usuario numérica, úsala como sexxx
indica arriba.Otra opción sería volver a agregar al usuario con
adduser
, especificando el UID anterior, y luegodeluser
volver a ejecutarlo , esta vez con la--remove-all-files
bandera.Supongamos, por ejemplo, que el usuario tiene nombre de usuario
alice
y UID1001
:fuente
gnu find tiene las opciones -nouser y -nogroup, búscalo en
man find
. Con estas opciones, puede encontrar todos los archivos en su (s) sistema (s) de archivos que no tienen un usuario correspondiente en / etc / passwd. Si no ha creado un nuevo usuario con los antiguos uid de sus usuarios eliminados, esta es una posibilidad de encontrar estos archivos huérfanos.Sin embargo, es posible que encuentre más archivos, no solo aquellos que pertenecieron a su archivo eliminado.
fuente