Loading...

Archivo oscam.user de OScam: Configuración Correcta de Cuentas de Cliente (Guía 2026)

Si alguna vez has mirado una entrada de registro de un cliente que dice "conectado" mientras su receptor muestra cero canales, ya sabes el dolor del que trata este artículo. Obtener el archivo oscam.user de OScam: configurar cuentas de cliente correctamente se trata principalmente de entender una regla que casi nadie explica claramente: cómo la autenticación y la autorización son dos pasos separados, y cómo una discrepancia entre ellos produce un inicio de sesión que "funciona" pero no entrega nada.

He reconstruido este archivo más veces de las que me gustaría admitir, en servidores que migran de CCcam y en nuevas instalaciones de OScam desde el código fuente. La sintaxis en sí es simple. Lo que confunde a la gente es la relación entre oscam.user y oscam.server, y ahí es exactamente donde esta guía pasa la mayor parte de su tiempo.

Lo que realmente hace el archivo oscam.user

Piensa en oscam.user como dos trabajos apilados uno encima del otro. El primer trabajo es la autenticación: ¿existe esta combinación de usuario/contraseña, no ha expirado, no está deshabilitada? El segundo trabajo es la autorización: asumiendo que el inicio de sesión es válido, ¿a qué grupos, CAIDs, idents, IDs de canal y servicios se le permite realmente acceder a esta cuenta? La mayoría de los tickets de soporte que he visto provienen de personas que resolvieron el primer trabajo y nunca verificaron el segundo.

El archivo es texto plano. Un[account] bloque por cliente, los comentarios comienzan con#, y OScam lee todo de arriba a abajo al inicio. Los cambios realizados a través de SSH requieren un reinicio o un SIGHUP para tener efecto; las ediciones realizadas a través de la pestaña de Usuarios de WebIf se aplican inmediatamente porque el WebIf escribe en el mismo archivo y activa una recarga por sí mismo.

Las ubicaciones predeterminadas varían según la compilación:

  • /usr/local/etc/oscam.user — estándar para instalaciones compiladas desde el código fuente
  • /etc/tuxbox/config/oscam.user o/etc/tuxbox/config/oscam/oscam.user — común en imágenes de Enigma2
  • Cualquier directorio que hayas pasado conoscam -c /path/to/config — esto siempre tiene prioridad sobre cualquier ruta "predeterminada"

Establece permisos a 600 en este archivo. Las contraseñas están en texto plano, y en una caja de múltiples usuarios no hay razón para que ninguna otra cuenta pueda leerlas:chmod 600 /usr/local/etc/oscam.user.

Aquí hay un bloque mínimo de trabajo para fundamentar el resto de este artículo:

[account]

user ypwd son las credenciales de inicio de sesión que el receptor del cliente o CCcam.cfg enviará.group = 1 significa que esta cuenta solo puede ser dirigida a lectores cuyo propiogroup línea en oscam.server incluye el grupo 1.au = 1 permite que los EMMs sean reenviados para actualizar la tarjeta automáticamente.uniq = 1 significa que solo se permite una conexión activa a la vez; un segundo inicio de sesión desconecta el primero. Ese es el esqueleto completo. Todo lo demás en este archivo es un refinamiento sobre eso.

OScam evalúa una solicitud en un orden fijo: verifica el inicio de sesión contra oscam.user, luego intersecta el grupo de la cuenta con los lectores disponibles, luego aplica filtros de CAID/ident/chid/clase, luego elige un lector y solicita el ECM. oscam.server define los lectores y sus grupos; oscam.services define paquetes de servicios nombrados que puedes referenciar desde oscam.user. oscam.conf simplemente le dice a OScam qué protocolos de red escuchar en primer lugar. Ninguno de estos archivos hace nada por sí solo: el bloque de cuenta es la bisagra entre ellos.

Escribiendo un Bloque [account] Correcto: Cada Parámetro Que Importa

Aquí hay un bloque más completo con los parámetros que la gente realmente necesita en producción, anotado:

[account]

user, pwd — obligatorio. Ninguna cuenta es válida sin ambos. Un bloque que faltapwd no es "sin contraseña", es inutilizable: OScam simplemente no puede autenticarlo.

group — una lista de números separados por comas del 1 al 64. Este es el parámetro más malinterpretado en todo el archivo, y lo cubriré adecuadamente en la siguiente sección porque merece su propio ejemplo trabajado. Versión corta: este número no significa nada por sí solo. Solo importa en relación con elgroup= línea en un lector en oscam.server.

au — controla el reenvío de EMM.au = 1 permite que las actualizaciones vayan a cualquier lector que el grupo de la cuenta pueda alcanzar.au = readername fija las actualizaciones a un lector específico por nombre, que es la opción más segura en una tarjeta compartida: no quieres que los EMM de tres clientes diferentes compitan entre sí contra la misma tarjeta inteligente. Dejaau en blanco para deshabilitar completamente el reenvío de EMM para ese usuario, que es lo que recomendaría por defecto para cualquiera que se conecte a través del protocolo CCcam, ya que el AU del lado de CCcam siempre ha sido inestable en la práctica.

caid, ident, chid, class — filtros de restricción.caid=0500,1810 restringe qué CAIDs puede solicitar la cuenta.ident= va un nivel más profundo con pares CAID:provid, p. ej.0500:007800.chid= filtra por ID de canal,class= filtra por clase de ECM. Deja cualquiera de ellos en blanco y ese filtro simplemente no se aplica: la cuenta hereda lo que el lector coincidente ofrece.

services — referencia un bloque nombrado de oscam.services en lugar de listar pares CAID/provid en bruto. Cubierto con un ejemplo en la siguiente sección.

uniq — valores de 0 a 4, controlando inicios de sesión simultáneos.uniq = 0 desactiva la verificación.uniq = 1 es una conexión única estricta: un nuevo inicio de sesión elimina el antiguo.uniq = 3 permite múltiples conexiones concurrentes pero solo desde la misma IP de origen — correcto para un hogar que ejecuta dos o tres receptores detrás de un enrutador.

sleep / sleepsendsleep = 90 desconecta a un cliente inactivo después de 90 minutos sin solicitudes de ECM.sleepsend = 255 es la versión educada — le dice a los clientes del protocolo CCcam que realmente dejen de presionar el servidor una vez que se active el temporizador de sueño, en lugar de continuar solicitando y ser ignorados silenciosamente.

cccmaxhops, cccreshare — controles de topología para cadenas de intercambio de tarjetas.cccmaxhops limita cuántas saltos puede recorrer un intercambio antes de que la tarjeta de esta cuenta sea excluida de la re-compartición de otra persona;cccreshare controla si el propio intercambio de esta cuenta puede ser re-enviado más abajo en la cadena.

monlevel — nivel de acceso para el monitor/WebIf, no relacionado con el acceso a la tarjeta.disabled = 1 es la forma más segura de suspender temporalmente una cuenta — eliminar un bloque pierde la configuración, deshabilitarlo mantiene todo intacto y reversible.expdate = YYYY-MM-DD expira automáticamente la cuenta en esa fecha, útil para acceso limitado en el tiempo sin un seguimiento manual.

allowedprotocols — fija la cuenta a protocolos de escucha específicos (por ejemplo,cccam,cs378x), así que incluso si las credenciales se filtran, no se pueden usar para conectarse a través de newcamd o cualquier otro oyente habilitado.

Group Mapping: Conectando oscam.user a oscam.server

Esta es la parte que separa una configuración funcional de una "conectada pero vacía", y es la parte que la mayoría de los tutoriales omiten por completo. La regla es simple de enunciar y fácil de equivocarse:el grupo de un cliente en oscam.user debe compartir al menos un número con el grupo de un lector en oscam.server. Sin número compartido, no hay ECM, no importa cuán correcta sea la contraseña.

Supongamos que estás ejecutando dos lectores. El lector A es una tarjeta inteligente local. El lector B es un lector proxy/CCcam remoto que obtiene información de otro lugar. En oscam.server:

[reader]

Ahora define tres niveles de cliente en oscam.user:

[account]

basic solo puede ser dirigido a reader_local.full puede alcanzar cualquiera de los lectores dependiendo de lo que se necesite.proxy_only está bloqueado a reader_proxy y nunca tocará la tarjeta inteligente local, incluso si está justo allí e inactiva.

Aquí está el modo de falla que veo constantemente: alguien creagroup = 3 en una nueva cuenta y olvida que ningún lector en ninguna parte tienegrupo = 3 en oscam.server. El inicio de sesión tiene éxito — OScam no tiene problemas para autenticar un usuario/pwd válido — pero en el momento en que se sintoniza un canal, el registro muestra algo comono encontrado (sin lector coincidente). El cliente asume que la tarjeta murió. La tarjeta está bien. Simplemente no hay un lector asignado a ese número de grupo.

Una vez que entiendes esto, se vuelve obvio por qué establecergrupo = 1,2,3,4,5 en cada cuenta "para estar seguro" derrota todo el propósito de tener grupos. Si cada cliente puede acceder a cada lector, has construido una lista de control de acceso que no controla nada — más vale que no tengas grupos en absoluto, y has perdido la capacidad de aislar tu tarjeta local de un lector proxy remoto cuando realmente lo necesitas.

Para el control a nivel de canal por debajo de la capa de grupo/CAID, usa oscam.services. Define un bloque nombrado:

[sports]

Luego refiérete a él desde una cuenta en lugar de repetir pares CAID/provid en bruto:

[account]

Prefijo con! para poner en la lista negra en lugar de en la lista blanca —services = !sports permite todo excepto ese bloque. Dejaservices= vacío y no hay ninguna restricción a nivel de servicio; la cuenta vuelve a lo que los filtros de grupo/CAID/ident ya permiten.

Configuración de Cuenta Específica de Protocolo: CCcam, camd35, cs378x, newcamd, MGcamd

Aquí está la cosa que sorprende a muchas personas que migran de CCcam: el mismo[account] bloque sirve para cada protocolo a la vez. oscam.user en sí no sabe ni le importa si el cliente se conecta a través de CCcam, newcamd o cs378x — eso se decide completamente por qué listener en oscam.conf apunta el cliente.

oscam.conf habilita los listeners:

[cccam]

En el lado del cliente, cada protocolo necesita su propia línea apuntando a tu servidor. Para CCcam.cfg en un receptor:

C: your.server.tld 12000 clientname SomeStrongPassword2026 { 0:0:0 }

Para MGcamd's newcamd.list:

CWS = your.server.tld 34001 clientname SomeStrongPassword2026 0102030405060708091011121314

Para cs378x en un cliente Wicardd o basado en Enigma2, es la misma estructura de host/puerto/usuario/contraseña que camd35 pero sobre TCP en lugar de UDP — camd35 es UDP en el puerto 34000, cs378x es TCP en el mismo número de puerto por convención (no están obligados a coincidir, pero la mayoría de las configuraciones lo hacen de esa manera para que sea memorable).

newcamd merece una advertencia específica: esa cadena hexadecimal de 28 caracteres es una clave DES de 14 bytes, y debe coincidir byte por byte entre elkey = línea en oscam.conf y la entrada de clave en el cliente. Si te equivocas en un carácter, el apretón de manos falla silenciosamente — en el nivel de registro predeterminado no verás un error útil, solo un cliente que nunca completa el inicio de sesión. También ten en cuenta que newcamd vincula un puerto a un par específico de CAID:provid, por lo que un cliente que necesita varios CAIDs diferentes puede necesitar varios puertos newcamd definidos, uno por par, a menos que estés usando una versión que soporte la vinculación multi-CAID en un solo puerto.

Una vez que la cuenta esté en servicio, ciérrala conallowedprotocols = cccam,cs378x si sabes que ese es el único protocolo que utiliza este cliente en particular. Es un pequeño paso que evita que las credenciales filtradas se reutilicen a través de un protocolo diferente que no esperabas.

Verificación y Depuración: Registros, WebIf y los Errores que Realmente Verás

Antes de tocar un receptor, aumenta el registro. En oscam.conf:

[global]

Aumentarnivel de registro a 255 temporalmente si necesitas la máxima verbosidad mientras depuras una cuenta específica, luego redúcelo — en 255 el registro se llena rápido. Míralo en vivo contail -f /var/log/oscam/oscam.log mientras el cliente intenta conectarse.

Esto es lo que significan realmente las cadenas comunes:

  • nombre de usuario/contraseña incorrectos — verifica si hay un espacio adicional o, más a menudo de lo que la gente espera, un final de línea CRLF de Windows en un archivo que fue editado en una máquina Windows y subido a través de FTP. OScam puede fallar con el final \r y no analizar la línea correctamente.
  • cuenta expiradaexpdate ha pasado. Verifica también la hora del servidor — un reloj que se ha adelantado puede hacer que una cuenta expire antes de tiempo.
  • usuario deshabilitadodisabled = 1 está configurado en ese bloque.
  • no encontrado (sin lector coincidente) — desajuste de grupo entre oscam.user y oscam.server, exactamente como se cubrió arriba.
  • cliente rechazado (ip inválida) — una restricción de lista de permitidos de IP en la cuenta o el oyente está bloqueando la dirección de origen del cliente.
  • CW no encontrado — se alcanzó el lector, pero la tarjeta realmente no tiene derecho para ese proveedor. Este es un problema de tarjeta/suscripción, no un problema de oscam.user.
  • Tiempo de ECM consistentemente superior a 1000ms — eso es latencia de upstream o proxy, no algo que se soluciona en oscam.user.

Confirma que el binario está leyendo el directorio de configuración que crees que está:oscam -b -c /usr/local/etc. La WebIf vive enhttp://your-server-ip:8888 por defecto (configurado a través dehttpport en oscam.conf), y se negará silenciosamente a cargar sihttpallowed no incluye la subred desde la que estás navegando — sin página de error, solo una conexión que nunca se completa.

Después de cualquier edición manual, confirma que la recarga realmente ocurrió en lugar de asumir que lo hizo. El comportamiento de SIGHUP y el botón Reiniciar de la WebIf no se comportan de manera idéntica en cada compilación — verifica la marca de tiempo del registro en la parte superior después del reinicio y confirma que la nueva cuenta o la cuenta cambiada aparece en la pestaña Usuarios de la WebIf antes de darlo por terminado.

Fortalecimiento de cuentas de cliente y errores comunes

Unos pocos hábitos operativos ahorran mucho tiempo de depuración más tarde. Una cuenta por persona o por suscripción — no entregues las mismas credenciales a tres hogares diferentes y confíes enuniq para resolverlo. Configurauniq = 3 para un hogar que ejecuta varias cajas detrás de una única conexión NAT, yuniq = 1 para una cuenta estrictamente de un solo dispositivo. Tenga en cuenta que un cliente en CGNAT cuyo IP público cambia a mitad de sesión puede activaruniq = 1 y causar bucles de desconexión/reconexión repetidos que parecen un fallo de tarjeta pero en realidad son un problema de uniq/IP.

Haga una copia de seguridad de oscam.user antes de cada edición. Un solo error de sintaxis en un bloque puede detener el análisis de todo el archivo, lo que afecta a cada cuenta, no solo a la que estaba editando. Mantenga los permisos en 600: contraseñas en texto plano en un archivo legible por todos son un riesgo innecesario en cualquier servidor compartido.

Un duplicadousuario = nombre en dos bloques no genera un error: el bloque posterior en el archivo gana silenciosamente y el anterior simplemente deja de funcionar, sin nada en el registro que le diga por qué. De manera similar, esté atento a los espacios alrededor de las comas en las listas degrupo/caid — algunas versiones analizangrupo = 1, 2 de manera diferente agrupo = 1,2.

Esté atento a casos extremos que son fáciles de pasar por alto: una cuenta que necesita tanto una tarjeta inteligente local como un lector proxy remoto necesita membresía de múltiples grupos (grupo = 1,2) más filtros CAID/ident separados si las dos fuentes llevan diferentes CAIDs. Una tarjeta inteligente reemitida con un nuevo provid puede romper silenciosamente unident= filtro que solía funcionar, así que si una cuenta que antes estaba bien de repente recibeCW no encontrado, verifique si la tarjeta detrás de ella fue cambiada. Y si está ejecutando múltiples instancias de OScam en un host con diferentes-c directorios de configuración, verifique dos veces qué oscam.user está editando realmente antes de concluir que una solución "no funcionó": puede haber ido al archivo de la instancia equivocada por completo.

Antes de entregar una cuenta a alguien, revise esta lista de verificación:

  • La sintaxis del bloque es válida: sin CRLF sueltos, sin duplicadosusuario=
  • grupo interseca al menos con el grupo de un lector enoscam.servercaid
  • /ident los filtros coinciden realmente con lo que lleva ese lectorau
  • está configurado intencionadamente, no dejado enau=1 por defecto by default
  • uniq ydormir coincide con el patrón de uso real del cliente
  • Probado con una solicitud ECM real y confirmado el éxito en el registro, no solo un inicio de sesión exitoso

Obtén el archivo oscam.user de OScam: configurando correctamente las cuentas de cliente en esta etapa de la lista de verificación y gastarás mucho menos tiempo luego manejando mensajes de "mi tarjeta dejó de funcionar" que en realidad son solo un número de grupo que nunca coincidió con un lector.

¿Dónde se encuentra el archivo oscam.user?

El predeterminado es/usr/local/etc/oscam.user para compilaciones desde el código fuente. En imágenes de Enigma2, generalmente es/etc/tuxbox/config/oscam.user o/etc/tuxbox/config/oscam/oscam.user. La respuesta autoritativa es cualquier directorio que se pasó conoscam -c — verifica el proceso en ejecución conps o la pestaña de Archivos de WebIf, que muestra y edita la ruta en vivo directamente.

Mi cliente se conecta pero no recibe canales — ¿qué está mal?

Casi siempre es un desajuste de grupo. Elgroup= valor en el[account] bloque del cliente debe compartir al menos un número con elgroup= valor en un lector en oscam.server. Si no se intersectan, OScam autentica el inicio de sesión pero no tiene un lector para enrutar el ECM, y el registro muestrasin lector coincidente. Segunda causa más probable: uncaid= oident= filtro en la cuenta que excluye el CAID que el canal realmente utiliza.

¿Cuál es la diferencia entre uniq=1 y uniq=3?

uniq controla las conexiones simultáneas.uniq=1 permite solo una conexión por cuenta y desconecta la anterior cuando llega un nuevo inicio de sesión — correcto para cuentas de dispositivo único estrictas.uniq=3 permite múltiples conexiones simultáneas solo si provienen de la misma dirección IP — correcto para un hogar con varios receptores detrás de un solo enrutador NAT.uniq=0 desactiva la verificación por completo.

¿Debo establecer au=1 para cada cuenta de cliente?

No.au=1 permite que los EMMs de ese usuario lleguen a cualquier lector en su grupo, lo que puede escribir actualizaciones no deseadas en una tarjeta compartida. Prefiereau=readername para vincular AU a un lector específico, o dejaau vacío para desactivar el reenvío de EMM para ese usuario. Los clientes en el protocolo CCcam en particular manejan AU de manera poco confiable, por lo que dejar AU desactivado para ellos suele ser la opción más segura.

¿Necesito una cuenta separada para cada uno de mis receptores?

No necesariamente, pero es una mejor práctica. Las cuentas separadas te permiten establecer diferentescaid/ident filtros, identificar qué caja está generando carga en el WebIf y desactivar una caja sin afectar a las otras. Si compartes una cuenta entre cajas en la misma conexión, estableceuniq=3 para que OScam permita los inicios de sesión concurrentes desde la misma IP.

¿Por qué mi cliente newcamd no se conecta cuando CCcam funciona bien?

Newcamd requiere una clave DES de 14 bytes (28 caracteres hexadecimales) que debe coincidir exactamente entre el[newcamd] clave en oscam.conf y la clave en la línea CWS de newcamd.list del cliente. Una discrepancia falla durante el apretón de manos, a menudo sin nada informativo en el registro con el nivel de registro predeterminado. Newcamd también vincula un puerto por par CAID/provid (port = 34001@0500:007800), por lo que el cliente debe conectarse al puerto asignado al CAID que necesita.

¿OScam recarga oscam.user automáticamente después de que lo edito?

No de manera confiable en todas las versiones. La edición a través de la pestaña de Usuarios del WebIf se aplica de inmediato. Si editas el archivo a través de SSH, reinicia OScam o envía SIGHUP, luego confirma la recarga verificando la marca de tiempo del registro o que el nuevo usuario aparezca en el WebIf. También verifica que el archivo use finales de línea Unix (LF): un archivo guardado desde Windows con CRLF puede fallar al analizar y eliminar cuentas silenciosamente.