Puedo configurar sudo (a través del archivo sudoers) para permitir que un usuario ejecute los comandos chowny chmoden cualquier archivo o directorio en el sistema. Sin embargo, solo quiero otorgarle a un usuario permiso para ejecutar estos comandos en archivos que residen debajo del /var/www/htmldirectorio.
¿Cómo puedo restringir comandos privilegiados para que el usuario solo pueda ejecutarlos en un directorio especificado previamente?
Por ejemplo: el siguiente comando otorga 777 permisos para index.htmlarchivar.
sudo chmod 777 /var/www/html/index.html
Ahora quiero realizar dos acciones
Restrinja de
sudomodo que el usuario solo pueda ejecutarchmodychowndesde/var/www/htmlNo permita que el usuario ejecute estos comandos en otra parte del sistema (por ejemplo, los comandos no pueden ejecutarse en
/var/wwwo/var/ftp)

www-datagrupo que elimina la necesidad dechmod/chownalgo?chown. Aparte de eso, no veo ninguna razón por lachmodque deba ejecutarse como root.Respuestas:
Lo que estás preguntando es difícil, si no imposible. Incluso si lo hizo restringir la aplicación de
chownychmodpara los archivos bajo un directorio específico, alguien todavía podría pasar un enlace simbólico y por lo tanto afecta a los archivos en cualquier lugar que les gusta.Afortunadamente, es muy probable que lo que intentas hacer no sea la solución correcta para tu problema real, y hay otro método que funciona.
Por lo general, los usuarios que necesitan permisos adicionales para crear y modificar archivos
/var/wwwse agregan a un grupo (a menudowww-data, o puede tener diferentes grupos para diferentes partes del sitio). Puede usar la propiedad del grupo y los directorios setgid:chgrp www-data /var/www/html; chmod g+ws /var/www/htmlpermite que todos en elwww-datagrupo escriban en el/var/www/htmldirectorio, y los archivos creados en ese directorio serán propiedad delwww-datagrupo en lugar del grupo primario del usuario que creó el archivo. Sin embargo, esto no es muy flexible.Lo que probablemente debería hacer es configurar listas de control de acceso para archivos en
/var/www. Primero, asegúrese de que las ACL estén habilitadas: el sistema de archivos que/var/wwwestá encendido debe montarse con laaclopción. Consulte Hacer que todos los archivos nuevos en un directorio sean accesibles para un grupo para obtener ayuda sobre eso. Instale también las utilidades de ACL (getfaclysetfacl). Luego otorgue permisos adicionales al árbol debajo/var/www/htmlde los usuarios que deberían tenerlos. Puede establecer las ACL por usuario, pero a menudo es más fácil colocar a los usuarios que deberían tener los mismos derechos en una parte del sistema de archivos en un grupo y establecer las ACL para ese grupo. Por ejemplo, si los usuarios del grupohtml-writersdeberían tener acceso de lectura y escritura al árbol bajo/var/www/html:fuente
Puede restringir el comando para que "myuser" lo use con todos los argumentos en el
/etc/sudoersarchivo con el comandovisudoadd:habilitar el registro para cada operación agregando:
salida de muestra:
Cuando usa sudo, la premisa debe ser que "myuser" es una persona de confianza. Tenga cuidado con los permisos de archivo, no hay una manera simple de evitar que un usuario malicioso de sudo vincule un archivo desde un recurso externo y lo cambie.
fuente
su - prashantosu prashant?sudo /bin/chmod 666 /var/www/html/../../../etc/passwdY si de alguna manera arreglar eso,ln -s /etc /var/www/html/foo/etc; sudo /bin/chmod 666 /var/www/html/foo/etc/passwdEn realidad, hay una manera bastante simple de hacer esto, creando un script Bash (o shell de su elección) para restringir las modificaciones realizadas a un archivo o directorio en particular.
En su ejemplo, se vería así:
Luego, cambiaría el archivo sudoers para permitir que www-data ejecute / usr / local / bin / mychmod.
Sin embargo, tenga en cuenta que permitir la entrada del usuario (por ejemplo, permitir que un usuario cambie qué archivo o directorio está modificado) en este espacio es extremadamente peligroso, y necesita saber cómo filtrar los ataques de inyección si desea hacer algo como ese. Un atacante podría ejecutar fácilmente cualquier comando como root de esta manera, comprometiendo efectivamente la seguridad de su sistema.
fuente