Necesito permitir que el usuario martin
cambie a usuario martin-test
sin contraseña
su - martin-test
Creo que esto se puede configurar en /etc/pam.d/su
. Ya hay algunas líneas en ese archivo que pueden ser descomentadas. Sin embargo, no me gusta la idea de agregar usuarios martin
al grupo wheel
. No quiero dar martin
más privilegios que poder cambiar martin-test
. Tampoco quiero usar sudo
.
¿Cuál sería la mejor manera de hacerlo, manteniendo los privilegios del usuario al martin
mínimo?
users
password
authentication
pam
Martin Vegter
fuente
fuente
sudo
ejemplosudo -u martin-test -i
. ¿Hay alguna razón por la que pregunte específicamentesu
?sudo
solo por esto (normalmente no lo usosudo
y no me gusta especialmente). Y creo que usarpam
es una forma más limpia y transparente de hacerlo.sudo
estaba destinado. Además de no usarlo normalmente, ¿cuáles son las objeciones?pam
, preferiría esosudo
. Sisudo
es la única posibilidad, entonces eso también está bien. Mis objecionessudo
son principalmente ideológicas: no me gusta la idea de que el usuario administresudo foo
. Cuando necesito hacer la administración, inicio sesión como root. De lo contrario, me conecto como usuario. Estos dos roles distintos no deberían mezclarse. Además, ya tengopam
infraestructura instalada. No quiero instalar otrosetuid
programa que posiblemente pueda introducir errores de seguridad.sudo foo
para comandos específicos. Sudo tienesudo -s
que lanzará un proyectil. sudo es una utilidad muy común, lo que significa que su seguridad ha sido examinada a fondo, mucho más de lo que será un truco de pam. También diría que obtener un shell raíz para tareas es mucho más inseguro que lanzar comandos específicos. Cuando inicia un shell, ejecuta todo como root. Si alguna de esas cosas (como una simplels
) tiene una vulnerabilidad de seguridad, entonces acaba de abrir un agujero de seguridad.Respuestas:
Agregue las siguientes líneas justo debajo de la
pam_rootok.so
línea en su/etc/pam.d/su
:Estas líneas realizan comprobaciones utilizando el
pam_succeed_if.so
módulo. Consulte también la sintaxis del archivo de configuración Linux-PAM para obtener más información sobre lasauth
líneas.martin-test
. Si es así, no sucede nada (success=ignore
) y continuamos en la siguiente línea para verificar el usuario actual . Si no es así, se omitirá la siguiente línea (default=1
) y continuaremos en las líneas posteriores con los pasos de autenticación habituales.martin
. Si es así, el sistema considera que el proceso de autenticación es exitoso y devuelve (sufficient
). Si no es así, no pasa nada y continuamos en las líneas posteriores con los pasos de autenticación habituales.También puede restringir
su
a un grupo, aquí el grupoallowedpeople
puedesu
sin una contraseña:fuente
Si no desea cambiar grupos o usar
sudo
, use un módulo pam llamadopam_exec
para ejecutar scripts externos en una etapa pam.Agregue una línea
/etc/pam.d/su
después de lapam_rootok.so
línea:/path/to/script
tiene los permisos 755 (rwxr-xr-x) y el siguiente contenido:Entonces este script existe con éxito si
su
:martin
ymartin-test
.Ver:
fuente
/etc/pam.d/su
para hacer uso depam_access
mi situación?pam_access
no puedo hacer esto. Cuandosu
pasa por la pila de pam, lo hace según el usuario al que está cambiando, no el usuario del que está cambiando. Entonces, si agrega una regla como+ : martin : ALL
, permitirá que cualquiera cambie amartin
. Incluso si cambiasmartin
amartin-test
, seguirá permitiendo que cualquiera lo haga. Debe analizar tanto el usuario de donde viene como el usuario al que se está cambiando. Realmente, esto es exactamente lo quesudo
es para ...Si no tiene acceso a la cuenta raíz, pero tiene la contraseña del usuario que desea usar para ejecutar un comando, puede hacer lo siguiente.
Simplemente instale su clave pública en claves_autorizadas de toto
fuente
Mi solución simple es:
Si desea evitar sudo a toda costa, creo que debería ser posible poner esto en un script:
Sin embargo, no puedo entender los bits
chown root
ychmod +s ToTest.sh
, para que esto realmente funcione:Todavía corro como mi usuario normal, como me dice el eco. Y todavía requiere contraseña sudo. Si se ejecutaba como root, se podría eliminar el
sudo
en la última línea ...fuente
bash
está, ¿por qué supone que sabe dóndeenv
está o si incluso existe? Pero al final, no sabes québash
será exactamente. Podría provenir del directorio del usuario que invoca y se ha compilado un minuto antes a partir de su código fuente. ¿Ves a dónde voy? O el usuario podría anularwhoami
...