usando root para mkdir en el directorio de inicio de otro usuario

27

teniendo dificultades para crear una carpeta debajo de la carpeta de otro usuario /home/devuser1/pubic_html. Estoy tratando de evitar usar sudoy buscar una alternativa. Los permisos en dicha carpeta se lee como:

drwxr-s--- 2 devuser1  www-data 4096 Apr 28 19:40 public_html

Alternativamente, suponiendo que use el sudoprefijo, ¿cuáles serían las implicaciones? He leído que es una mala práctica usar sudopara hacer una carpeta. Después de crear la nueva carpeta, sigo cambiando la propiedad del usuario en cuestión. Ejemplo:

chown -vR devuser1:www-data /home/devuser1/public_html/$vhost
maGz
fuente

Respuestas:

31

Con install, puede crear un directorio con un propietario, grupo y modo específicos:

install -d -o <user> -g <group> -m <mode> <path>
usuario2313838
fuente
29

sudo -u [username] mkdir /home/[username]/public_html/[folder_name] funciona bien.

Por lo que puedo ver, los permisos y la propiedad son los mismos si tuviera que iniciar sesión como el mismo usuario y crear la carpeta public_html.

Tambien puedes llamar su -c "mkdir /home/[username]/public_html/[folder_name]" [username]

maGz
fuente
2
Cuando ejecuta sudo -u USERNAME mkdir DIRNAME, está ejecutando el mkdircomando como usuario USERNAME. Esto no es exactamente equivalente a iniciar sesión como USERNAME, porque iniciar sesión también implica establecer variables de entorno, etc., pero es la parte que importa, es decir, ejecutar un proceso como un usuario en particular.
Gilles 'SO- deja de ser malvado'
1
Además, ese usuario podría no tener permiso.
mahemoff
1

Dados esos permisos, solo el propietario del directorio o el superusuario pueden crear subdirectorios.

La única forma de evitar el uso de privilegios adicionales para crear la carpeta es cambiar la propiedad a usted mismo (con sudo), crear el subdirectorio y finalmente devolver la propiedad al propietario, pero no me parece una buena solución.

RSFalcon7
fuente
sí, uno duro este. Esta es una pregunta tonta, pero ¿cuáles son mis opciones?
maGz
¿Qué pasa con (como root) ejecutar el comando como ese usuario ?: sudo -u devuser1 mkdir /home/devuser1/public_html/test. Eso no es lo mismo que crear la carpeta sudo, ¿verdad? ls -alrevela:drwxr-sr-x 2 devuser1 www-data 4096 Apr 28 23:49 test
maGz
Tal vez estoy siendo ingenuo, pero realmente no veo ningún mal en crear una carpeta sudosiempre y cuando cambie la propiedad después de eso.
RSFalcon7
Por lo que lsrevela sobre el contenido del usuario public_html, parece que no es necesario cambiar la propiedad, aunque quizás los permisos.
maGz
Creo que también soy ingenuo al pensar esto: no estoy creando la carpeta su, sino que la estoy usando para autenticarme como el usuario que va a crear la carpeta ... ¿tiene sentido?
maGz
0

Traté de hacer un mkdir -p /srv/postgres/data/mydirpero porque

drwxr-xr-x 3 root root 4.0K Apr 7 08:26 srv tiene dueño root

ni install -d -o <user> -g <group> -m <mode> <path> @ usuario2313838

ni sudo -u postgres mkdir -p /srv/postgres/data/mydirfunciona @maGz

Entonces tengo que dividirlo en dos comandos:

sudo mkdir -p /srv/postgres/data/mydir
sudo chown postgres:postgres /srv/postgres -R
hannes ach
fuente