Перемещение ряда файлов из каталога в другой по явной ошибке

I have a device I want to mount for root with full permissions and for everyone else as readonly.

  • sudo mkdir /root/mnt/foo
  • sudo mkdir /mnt/fooReadOnly
  • mount -oro /dev/sdaX /mnt/foo
    • Esto asegura que el dispositivo /dev/sdaX esté montado solo lectura en /mnt/foo. Configuré esto primero, porque no es posible crear un montaje de enlace de solo lectura -en un solo paso. No quiero permitir que los usuarios accedan a un montaje de vinculación de escritura -de lectura, ni siquiera por un instante.
  • ls -ld /root-doble -compruebe que esto muestra el modo dr-xr-x---y el propietario root root.
  • sudo mount --bind /mnt/fooReadOnly /root/mnt/foo
  • sudo mount -oremount,rw /root/mnt/foo

Pruebe los comandos anteriores. Después de cada comando de montaje, puede ejecutar grep foo /proc/self/mountinfo, que muestra los indicadores por sistema de archivos -y por punto de montaje -en columnas separadas.

Para entender esto, sepa quemount -oremount,rw(omount -oremount,ro)cambia tanto el indicador del sistema de archivos -como el indicador del punto de montaje -al mismo tiempo. Pero no afecta el indicador de punto de montaje per -del otro punto de montaje (s ).


No es posible probar los comandos anteriores dentro de un espacio de nombres de usuario (unshare -rm), incluso si cambia a montar un tmpfs en lugar de sdaX. Falla con "permiso denegado" en mount -oremount,rw. En su lugar, tendría que usar la siguiente secuencia:

  • mount tmp -ttmpfs /root/mnt/foo
  • mount --bind /root/mnt/foo /root/mnt/fooReadOnly
  • mount -oremount,bind,ro /root/mnt/fooReadOnly
  • mount --bind /root/mnt/fooReadOnly /mnt/fooReadOnly

Also, how do I add this to /etc/fstab so that it will automatically remount on boot?

Recomendaría no adaptar la primera secuencia a fstab, porque es demasiado complicado. Puede adaptar el segundo orden en su lugar.

/dev/sdaX /root/mnt/foo...
/root/mnt/foo /root/mnt/fooReadOnly none bind,ro
/root/fooReadOnly /mnt/fooReadOnly none bind
1
31.08.2017, 17:30
2 ответа

Ваша ошибка возникает из-за того, что ваш find] находит . , текущий рабочий каталог, и передает его в mv.

Если вы просто перемещаете файлы (не каталоги), добавьте -type fк команде find:

find . -type f ...(as before)...

Это отфильтрует каталоги, включая . каталог .

Вы также можете полностью избавиться от xargs:

find . -type f -newermt 20170829 -not -newermt 20180101 \
    -exec mv -t /backup/desktop/books/Python/ML-demos/ {} +
2
27.01.2020, 23:18

Вы пытаетесь двигаться . , который является текущим каталогом. Вы можете удалить это, добавив -mindepthк вашей команде find. Попробуйте сначала без передачи в xargs, чтобы увидеть, получите ли вы желаемый результат.

2
27.01.2020, 23:18

Теги

Похожие вопросы