GNU/Linux >> Tutoriales Linux >  >> Linux

¿Crear un archivo como un usuario y grupo diferente?

Tengo un script bash que tiene que rsync para descargar archivos escribiéndolos localmente, y luego necesito configurar el propietario en apache y el grupo en un grupo de usuarios en particular (del que apache no es miembro).

¿Hay alguna manera de crear esos archivos con esas propiedades a medida que los escribe el proceso rsync, sin tener que revisarlos y cambiarlos después usando chmod? Hay tantos archivos que el tiempo que lleva revisarlos después es prohibitivo.

Tengo que hacer esto para varios grupos de usuarios, por lo que no debería agregar Apache a estos grupos, y ciertamente no puedo convertirlos a todos en el grupo predeterminado.

En otras palabras:¿hay alguna manera de que root pueda crear un archivo como usuario X y grupo Y cuando X no es miembro de Y?

Intenté usar runuser, pero no puedo configurar el grupo (probablemente porque apache no pertenece al grupo).

Sé que puede usar chmod para cambiar los permisos y agregar cualquier combinación de usuario/grupo. Lo que estoy preguntando es si hay una forma de abrir un archivo para escribir y usar cualquier combinación de usuario/grupo mientras lo crea.

Intenta usar sudo:

[[email protected] tmp]# groups angelo
angelo : angelo wheel
[[email protected] tmp]# groups apache
apache : apache
[[email protected] tmp]# sudo -u angelo -g apache touch angelo-file
Sorry, user root is not allowed to execute '/bin/touch angelo-file' as angelo:apache on centos7
[[email protected] tmp]# ls -ld angelo-file
ls: cannot access angelo-file: No such file or directory
[[email protected] tmp]# sudo -u angelo -g angelo touch angelo-file
[[email protected] tmp]# ls -ld angelo-file
-rw-r--r-- 1 angelo angelo 0 Nov 12 03:13 angelo-file

Respuesta aceptada:

Si desea crear un archivo como un usuario y grupo específico sin usar chown , puedes usar sudo y especifique el usuario y el grupo:

sudo -u #49 -g #58 touch /tmp/something

Tenga en cuenta que el usuario que especifique debe tener permiso para escribir en el directorio donde intenta esto.

O bien, puede iniciar un shell como el usuario actual, con el grupo establecido en otra cosa:

sudo runuser "$USER" -g somegroup

Intenté esto en una caja de Vagrant con éxito:

[[email protected] ~]$ sudo runuser "$USER" -g floppy
[[email protected] ~]$ touch testfile
[[email protected] ~]$ ls -l testfile
-rw-r--r--. 1 vagrant floppy 0 Nov  9 15:57 testfile
[[email protected] ~]$ 

Esto es a pesar de que el usuario "vagabundo" no forma parte del grupo "disquete".

Relacionado:Php:image2wbmp — Imagen de salida al navegador o archivo
Linux
  1. Crear una base de datos MySQL y un usuario en cPanel

  2. Crear y editar usuarios en MySQL

  3. Crear y eliminar archivos de intercambio en Ubuntu

  4. Cómo administrar permisos/propiedades de archivos y directorios en Linux

  5. Guía para principiantes de administración de usuarios y grupos en Linux

Comando Chown en Linux (propiedad del archivo)

Comando id de Linux - Imprimir información de ID de usuario e ID de grupo

Cómo crear y usar un archivo de intercambio en Linux

Cómo crear un usuario Sudo en Ubuntu y Debian

Crear y configurar un usuario en MSSQL

¿Qué es diferente entre root y sudo?