Puedo configurar sudo (a través del archivo sudoers) para permitir que un usuario ejecute los comandos chown
y chmod
en 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/html
directorio.
¿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.html
archivar.
sudo chmod 777 /var/www/html/index.html
Ahora quiero realizar dos acciones
Restrinja de
sudo
modo que el usuario solo pueda ejecutarchmod
ychown
desde/var/www/html
No permita que el usuario ejecute estos comandos en otra parte del sistema (por ejemplo, los comandos no pueden ejecutarse en
/var/www
o/var/ftp
)
www-data
grupo que elimina la necesidad dechmod
/chown
algo?chown
. Aparte de eso, no veo ninguna razón por lachmod
que 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
chown
ychmod
para 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/www
se 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/html
permite que todos en elwww-data
grupo escriban en el/var/www/html
directorio, y los archivos creados en ese directorio serán propiedad delwww-data
grupo 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/www
está encendido debe montarse con laacl
opció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 (getfacl
ysetfacl
). Luego otorgue permisos adicionales al árbol debajo/var/www/html
de 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-writers
deberí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/sudoers
archivo con el comandovisudo
add: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 - prashant
osu prashant
?sudo /bin/chmod 666 /var/www/html/../../../etc/passwd
Y si de alguna manera arreglar eso,ln -s /etc /var/www/html/foo/etc; sudo /bin/chmod 666 /var/www/html/foo/etc/passwd
En 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