Protección de los usuarios y los procesos en Oracle® Solaris 11.2

Salir de la Vista de impresión

Actualización: Julio de 2014
 
 

Cómo resolver problemas de las asignaciones de derechos

Varios factores pueden afectar el motivo por el que los derechos no se evalúan y se aplican correctamente. Este procedimiento lo ayuda a depurar por qué los derechos asignados podrían no estar disponibles para usuarios, roles o procesos. Muchos de los pasos están basados en Orden de búsqueda para derechos asignados.

Antes de empezar

Debe asumir el rol root. Para obtener más información, consulte Uso de sus derechos administrativos asignados.

  1. Verifique y compruebe el servicio de nombres.
    1. Verifique que las asignaciones de seguridad para el usuario o el rol estén en el servicio de nombres que esté activado en el sistema.
      # svccfg -s name-service/switch
      
      svc:/system/name-service/switch> 
      listprop config
      
      config                      application
      config/value_authorization  astring  solaris.smf.value.name-service.switch
      config/default              astring  files ldap
      config/host                 astring  "files dns mdns ldap"
      config/netgroup             astring  ldap
      config/printer              astring  "user files"

      En esta salida, todos los servicios que no se mencionan explícitamente heredan el valor del predeterminado, files ldap. Por lo tanto, passwd y sus bases de datos de atributos relacionados, user_attr, auth_attr y prof_attrse buscan primero en los archivos y luego en LDAP.

    2. Reinicie la caché del servicio de nombres, svc:/system/name-service/cache.

      El daemon nscd puede tener un intervalo de tiempo de vida prolongado. Mediante el reinicio del daemon, actualiza el servicio de nombres con los datos actuales.

      # svcadm restart name-service/cache
  2. Determine cuándo se asigna un derecho al usuario ejecutando el comando userattr -v.

    Por ejemplo, los siguientes comandos indican qué atributos de seguridad se asignan y cuándo se creó la asignación para el usuario jdoe. Ninguna salida indica que jdoe está utilizando los valores predeterminados.

    % userattr -v access_times jdoe
    % userattr -v access_tz jdoe
    % userattr -v auth_profiles jdoe
    % userattr -v defaultpriv jdoe
    % userattr -v limitpriv jdoe
    % userattr -v idlecmd jdoe
    % userattr -v idletime jdoe
    % userattr -v lock_after_retries jdoe
    % userattr -v pam_policy jdoe
    
    % userattr -v auths jdoe Output indicates authorizations from rights profiles
    Basic Solaris User :solaris.mail.mailq,solaris.network.autoconf.read,
    solaris.admin.wusb.read
    Console User :solaris.system.shutdown,solaris.device.cdrw,
    solaris.device.mount.removable,solaris.smf.manage.vbiosd,solaris.smf.value.vbiosd
    % userattr -v audit_flags jdoe
    user_attr: fw:no Output indicates jdoe is individually assigned audit flags
    # userattr -v profiles jdoe
    user_attr: Audit Review,Stop Output indicates two assigned rights profiles
    # userattr roles jdoe 
    user_attr : cryptomgt,infosec Output indicates two assigned roles

      La salida indica que jdoe tiene asignado directamente indicadores de auditoría, dos perfiles de derechos y dos roles. Las autorizaciones asignadas son de perfiles de derechos predeterminados en el archivo policy.conf.

    • Debido a que jdoe tiene asignados indicadores de auditoría directamente, no se utilizará ningún valor de indicador de auditoría en los perfiles de derechos.

    • Los perfiles de derechos se evalúan en orden, en primer lugar, el perfil de derechos de revisión de auditoría y, a continuación, el perfil de detención.

    • Todos los demás derechos se asignan a jdoe en los roles cryptomgty infosec. Para ver esos derechos, jdoe debe asumir cada rol y, a continuación, mostrar los derechos.

    Si el derecho no está directamente asignado al usuario, continúe con las siguientes comprobaciones.

  3. Compruebe que las autorizaciones asignadas estén escritas correctamente.

    El origen de una asignación de autorización no es importante, ya que las autorizaciones se acumulan para los usuarios. Sin embargo, una autorización mal escrita produce un error sin notificación.

  4. Para perfiles de derechos que ha creado, compruebe que ha asignado los atributos de seguridad adecuados a los comandos en ese perfil.

    Por ejemplo, algunos comandos necesitan uid=0 en lugar de euid=0 para que el proceso se realice con éxito. Revise la página del comando man para el comando para determinar si el comando o cualquiera de sus opciones requieren autorizaciones.

  5. Revise los derechos en los perfiles de derechos de los usuarios.
    1. En orden, compruebe los derechos en la lista de perfiles de derechos autenticados.

      El valor del atributo en el primer perfil de derechos de la lista es el valor en el núcleo. Si este valor es incorrecto, cambie el valor de ese perfil de derechos o vuelva a asignar los perfiles en el orden correcto. Consulte Cómo volver a ordenar derechos asignados.

      Para comandos con privilegios, compruebe que los privilegios no se eliminen de la contraseña defaultpriv o limitpriv.

    2. En orden, compruebe los derechos en la lista de perfiles de derechos normales.

      Siga las mismas comprobaciones que realizó para los perfiles de derechos autenticados.

    3. Si los derechos que está buscando no se muestran, compruebe los roles asignados al usuario.

      Si el atributo está asignado a un rol, el usuario debe asumir el rol para obtener los derechos.

  6. Compruebe si un comando que falló requiere autorizaciones para ejecutarse correctamente.
    1. Compruebe si un perfil de derechos existente incluye la autorización necesaria.

      Si el perfil existe, utilícelo. Asígnelo al usuario como un perfil de derechos autenticado o un perfil de derechos regular. Ordene antes que cualquier otro perfil de derechos que incluya el comando que requiere que esta autorización se realice correctamente.

    2. Compruebe si una opción para el comando necesita autorización.

      Asigne el privilegio al comando que lo requiere, agregue las autorizaciones necesarias, coloque el comando y las autorizaciones en un perfil de derechos y asigne el perfil al usuario.

  7. Si un comando falla para un usuario, verifique que el usuario esté ejecutando el comando en un shell de perfil.

    Los comandos administrativos se deben ejecutar en un shell de perfil. Example 7–1 muestra cómo probar un shell de perfil.

      Para reducir la probabilidad de error de usuario, puede intentar lo siguiente:

    • Asigne al usuario un shell de perfil como el shell de inicio de sesión.

    • Indique a los usuarios que deben preceder a los comandos con privilegios con el comando pfexec.

    • Recuerde al usuario que ejecute comandos administrativos en un shell de perfil.

    • Si su sitio está usando roles, recuerde al usuario que debe asumir el rol antes de ejecutar los comandos administrativos. Para ver un ejemplo de la ejecución del comando como un rol en lugar de como un usuario, consulte Example 7–3.

  8. Si un comando falla para un rol, asuma el rol y realice los mismos pasos que se realizó cuando la comprobó los derechos de un usuario.
Ejemplo 7-1  Determine si está utilizando un shell de perfil

Cuando un comando con privilegios no funciona, el usuario realiza las pruebas para el indicador PRIV_PFEXEC y, a continuación, ejecuta el comando. El mensaje de error puede no indicar que el problema es un problema de privilegio.

% praudit 20120814200247.20120912213421.example-system
praudit: Cannot associate stdin with 20120814200247.20120912213421.example-system: 
Permission denied

% ppriv $$
107219: bash
flags = <none>
...

% pfbash
# ppriv $$
1072232: bash
flags = PRIV_PFEXEC
...

# praudit 20120814200247.20120912213421.example-system 
/** Command succeeds **/
Ejemplo 7-2  Determinación de comandos con privilegios de un rol

En este ejemplo, un usuario asume un rol asignado y enumera los derechos que se incluyen en uno de los perfiles de derechos. Los derechos se truncan para enfatizar los comandos.

% roles
devadmin

% su - devadmin
Password: xxxxxxxx

# profiles -l
Device Security
        ...      
	profiles=Service Configuration
          /usr/sbin/add_drv          uid=0
          /usr/sbin/devfsadm         uid=0
                                     privs=sys_devices,sys_config,
                                           sys_resource,file_owner,
                                           file_chown,file_chown_self,
                                           file_dac_read
          /usr/sbin/eeprom           uid=0
          /usr/bin/kbd 
          /usr/sbin/list_devices     euid=0
          /usr/sbin/rem_drv          uid=0
          /usr/sbin/strace           euid=0
          /usr/sbin/update_drv       uid=0
          /usr/sbin/add_allocatable  euid=0
          /usr/sbin/remove_allocatable   euid=0
Service Configuration
          /usr/sbin/svcadm 
          /usr/sbin/svccfg
Ejemplo 7-3  Ejecución de los comandos con privilegios en su rol

En el siguiente ejemplo, el rol admin puede cambiar los permisos en el archivo useful.script.

% whoami
jdoe
% ls -l useful.script
-rwxr-xr-- 1 elsee eng 262 Apr 2 10:52 useful.script

% chgrp admin useful.script
chgrp: useful.script: Not owner

% su - admin
Password: xxxxxxxx

# chgrp admin useful.script
# chown admin useful.script
# ls -l useful.script
-rwxr-xr-- 1 admin admin 262 Apr 2 10:53 useful.script