¿Cómo bloquear el comando, digamos mkdir
para 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
mkdir
y renombrarlo, o incluso simplemente copiar y renombrar el binario existente. Además, hay un shell incorporado para anular alias y funciones.cp /bin/mkdir mkdir2
luego usarlo :(cp -r /usr/local/lib ggg
creará 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 -empty
para 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 usuariofoo
usarmkdir
: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 ejecutarbash
y 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 .cp
un binario a su RUTA (root
directorio propio,rx
para el usuario), yrbash
evita 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:
wheel
grupo, el único autorizado para usarsu
(impuesto a través de PAM).Al usuario se le proporciona una seguridad adecuada
rbash
con 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
,HISTFILE
las variables).staff_u
y se le otorgan derechos para ejecutar comandos como otro usuario según sea necesario a través desudo
.del usuario
/home
,/tmp
y posiblemente/var/tmp
están poliinstantiados a través de/etc/security/namespace.conf
:Además,
/etc/security/namespace.init
hace que todos los archivos esqueléticos sean de solo lectura para el usuario y de su propiedadroot
.De esta forma, puede elegir si
$USER
puede ejecutarlomkdir
en su propio nombre (a través de un enlace en el~/bin
directorio 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 parabash
completar , 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 dondebash
irí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 , desource
y en=
lugar de==
).instale sudoers e intente configurar allí qué usuarios y qué comando.
fuente
sudo
.