¿Cómo bloquear el comando, digamos mkdirpara un usuario específico?
Lo que acabo de crear creó la función de solo lectura y la almacené en el perfil de los usuarios ~/.bashrc
/bin/mkdir() {
echo "mkdir command not allow for you"
}
mkdir() {
echo "mkdir command not allow for you"
}
./mkdir() {
echo "mkdir command not allow for you"
}
readonly -f /bin/mkdir
readonly -f mkdir
readonly -f ./mkdir
Prueba:
rahul@ubuntu:~$ cd /bin/
rahul@ubuntu:/bin$ ./mkdir /home/rahul/ggg
mkdir command not allow for you
rahul@ubuntu:/bin$ cd
rahul@ubuntu:~$ mkdir testing
mkdir command not allow for you
rahul@ubuntu:~$ /bin/mkdir testing
mkdir command not allow for you
Entonces mi pregunta es ¿Cuál debería ser la forma de lograr esto? ¿Hay alguna herramienta para esto?
Actualización 1 # Pero si el usuario es inteligente, podría copiar el binario mkdir y cambiarle el nombre y usarlo. Entonces, ¿cómo lograr esto?
linux
security
account-restrictions
restricted-shell
Rahul Patil
fuente
fuente

mkdiry renombrarlo, o incluso simplemente copiar y renombrar el binario existente. Además, hay un shell incorporado para anular alias y funciones.cp /bin/mkdir mkdir2luego usarlo :(cp -r /usr/local/lib gggcreará un directorio llamadoggg(que contiene una copia del contenido de/usr/local/lib, si lo hay, que el usuario puede eliminar). Puede usarfind / -type d -emptypara encontrar un directorio vacío para copiar.Respuestas:
No sé cómo hacerlo con bash, pero sé de otro shell que restringe el entorno del usuario: lshell (shell limitado) .
Una descripción rápida de la configuración
Lshell se configura a través de un archivo INI. Por defecto, contiene una lista blanca de comandos permitidos, pero se puede configurar fácilmente para prohibir al usuario usar un comando específico.
Esta configuración (configuración predeterminada
/etc/lshell.conf) prohíbe al usuariofoousarmkdir:Para configurar una cuenta de usuario para usar lshell de manera predeterminada, debe:
Lshell puede hacer más, como:
|).Y más.
Actualización 1 # Resultado de prueba agregado:
fuente
allowed = 'all' - ['mkdir'], ¿no puedes simplemente ejecutarbashy no tener restricciones otra vez?dd if=$(which bash) of=my_bash && chmod u+x my_bash && ./my_bash. Creo que el problema es la falta de una política predeterminada restrictiva, es decir, en este escenario, usted OTORGA permisos por defecto, luego NEGA los permisos basados en una lista, cuando debería ser al revés: DENY por defecto, luego GRANT según la política .cpun binario a su RUTA (rootdirectorio propio,rxpara el usuario), yrbashevita que se ejecute./executables. ¿Responde tu pregunta?La forma en que suelo implementar este tipo de restricciones requiere que se cumplan varias condiciones; de lo contrario, la restricción se puede eludir fácilmente:
wheelgrupo, el único autorizado para usarsu(impuesto a través de PAM).Al usuario se le proporciona una seguridad adecuada
rbashcon una RUTA de solo lectura que apunta a un privado~/bin, este~/bin/directorio contiene enlaces a utilidades simples:al usuario se le da una, de sólo lectura entorno restringido (pensar en cosas por el estilo
LESSSECURE,TMOUT,HISTFILElas variables).staff_uy se le otorgan derechos para ejecutar comandos como otro usuario según sea necesario a través desudo.del usuario
/home,/tmpy posiblemente/var/tmpestán poliinstantiados a través de/etc/security/namespace.conf:Además,
/etc/security/namespace.inithace que todos los archivos esqueléticos sean de solo lectura para el usuario y de su propiedadroot.De esta forma, puede elegir si
$USERpuede ejecutarlomkdiren su propio nombre (a través de un enlace en el~/bindirectorio privado , provisto a través de/etc/skel, como se explicó anteriormente), en nombre de otro usuario (a través desudo) o ninguno.fuente
Agregue un grupo ficticio, agregue el usuario a ese grupo
chown root:somegroup /bin/mkdir,,chmod g-x /bin/mkdir. Tenga en cuenta que esto depende de que el usuario no pueda modificar sus grupos. IIRC esto es cierto en GNU / Linux pero no en algunos otros Unices.fuente
Lo mejor que he probado es usar Profile.d de la manera mejor y más segura
Paso # 1 (Crear un archivo de alias)
Añadir líneas debajo:
Guardar y salir
Paso # 2 (Crear cargador de perfil)
/etc/profile.d/ esta ubicación contiene archivos para completar bash
Agregue las líneas debajo de los archivos, estas líneas bloquearán los comandos mencionados para los usuarios a continuación
guardar y Salir
Ahora salga y vuelva a iniciar sesión
Saludos, -Mansur
fuente
/etc/profile.d/no es parabashcompletar , es donde colocar las personalizaciones de sesión de inicio de sesión para los usuarios que usan shells de inicio de sesión tipo POSIX, por lo que generalmente no es dondebashirían las personalizaciones de alias (que preferirían entrar/etc/bash.bashrc) y debería tener una sintaxis de shell POSIX (por lo general, en su.lugar , desourcey en=lugar de==).instale sudoers e intente configurar allí qué usuarios y qué comando.
fuente
sudo.