Loading...

File oscam.user di OScam: Impostare correttamente gli account client (Guida 2026)

Se hai mai fissato un'entrata di log di un cliente che dice "connesso" mentre il loro ricevitore mostra zero canali, già sai il dolore di cui parla questo articolo. Ottenere il file oscam.user di OScam: impostare correttamente gli account client riguarda principalmente la comprensione di una regola che quasi nessuno spiega chiaramente: come l'autenticazione e l'autorizzazione siano due passaggi separati e come una discrepanza tra di essi produca un accesso che "funziona" ma non fornisce nulla.

Ho ricostruito questo file più volte di quanto mi piacerebbe ammettere, su server che migrano da CCcam e su nuove installazioni di OScam da sorgente. La sintassi stessa è semplice. Ciò che confonde le persone è la relazione tra oscam.user e oscam.server — ed è esattamente dove questa guida trascorre la maggior parte del suo tempo.

Cosa fa realmente il file oscam.user

Pensa a oscam.user come a due lavori impilati uno sopra l'altro. Il primo lavoro è l'autenticazione: questa combinazione utente/password esiste, non è scaduta, non è disabilitata? Il secondo lavoro è l'autorizzazione: supponendo che il login sia valido, quali gruppi, CAID, identità, ID canali e servizi questo account è effettivamente autorizzato a toccare? La maggior parte dei ticket di supporto che ho visto provengono da persone che hanno risolto il primo lavoro e non hanno mai controllato il secondo.

Il file è in testo semplice. Un[account] blocco per cliente, i commenti iniziano con#, e OScam legge tutto dall'alto verso il basso all'avvio. Le modifiche apportate tramite SSH richiedono un riavvio o un SIGHUP per avere effetto — le modifiche apportate tramite la scheda Utenti di WebIf si applicano immediatamente perché il WebIf scrive nello stesso file e attiva un ricaricamento da solo.

Le posizioni predefinite variano a seconda della build:

  • /usr/local/etc/oscam.user — standard per installazioni compilate da sorgente
  • /etc/tuxbox/config/oscam.user o/etc/tuxbox/config/oscam/oscam.user — comune sulle immagini Enigma2
  • Qualsiasi directory tu abbia passato conoscam -c /path/to/config — questo prevale sempre su qualsiasi percorso "predefinito"

Imposta i permessi su 600 per questo file. Le password sono in chiaro e su una macchina multi-utente non c'è motivo per cui qualsiasi altro account dovrebbe essere in grado di leggerle:chmod 600 /usr/local/etc/oscam.user.

Ecco un blocco minimo funzionante per ancorare il resto di questo articolo:

[account]

user epwd sono le credenziali di accesso che il ricevitore del cliente o CCcam.cfg invieranno.group = 1 significa che questo account può essere instradato solo a lettori il cuigroup riga in oscam.server include il gruppo 1.au = 1 consente che gli EMM vengano inoltrati per aggiornare automaticamente la scheda.uniq = 1 significa che è consentita solo una connessione attiva alla volta — un secondo accesso disconnette il primo. Questo è tutto lo scheletro. Tutto il resto in questo file è un affinamento su di esso.

OScam valuta una richiesta in un ordine fisso: controlla il login contro oscam.user, poi incrocia il gruppo dell'account con i lettori disponibili, poi applica filtri CAID/ident/chid/class, poi sceglie un lettore e richiede l'ECM. oscam.server definisce i lettori e i loro gruppi; oscam.services definisce pacchetti di servizi nominati a cui puoi fare riferimento da oscam.user. oscam.conf semplicemente dice a OScam quali protocolli di rete ascoltare in primo luogo. Nessuno di questi file fa qualcosa da solo — il blocco dell'account è l'articolazione tra di essi.

Scrivere un Blocco [account] Corretto: Ogni Parametro Che Conta

Ecco un blocco più completo con i parametri di cui le persone hanno effettivamente bisogno in produzione, annotato:

[account]

user, pwd — obbligatorio. Nessun account è valido senza entrambi. Un blocco mancantepwd non è "senza password", è inutilizzabile — OScam semplicemente non può autenticarlo.

group — un elenco di numeri separati da virgole da 1 a 64. Questo è il parametro più frainteso dell'intero file, e lo tratterò adeguatamente nella prossima sezione perché merita un esempio pratico. Versione breve: questo numero non significa nulla da solo. Conta solo in relazione algroup= riga su un lettore in oscam.server.

au — controlla l'inoltro EMM.au = 1 consente agli aggiornamenti di andare a qualsiasi lettore che il gruppo dell'account può raggiungere.au = readername fissa gli aggiornamenti a un lettore specifico per nome, che è la scelta più sicura su una scheda condivisa — non vuoi che gli EMM di tre diversi clienti si sfidino contro la stessa smartcard. Lasciaau vuoto per disabilitare completamente l'inoltro EMM per quell'utente, che è ciò che raccomanderei per impostazione predefinita per chiunque si connetta tramite il protocollo CCcam, poiché l'AU lato CCcam è sempre stato instabile in pratica.

caid, ident, chid, class — filtri di restringimento.caid=0500,1810 limita quali CAID l'account può richiedere.ident= scende un livello più profondo con coppie CAID:provid, ad es.0500:007800.chid= filtra per ID canale,class= filtra per classe ECM. Lasciare uno di essi vuoto e quel filtro semplicemente non viene applicato — l'account eredita qualsiasi cosa offra il lettore corrispondente.

services — fa riferimento a un blocco nominato da oscam.services invece di elencare coppie CAID/provid grezze. Trattato con un esempio nella prossima sezione.

uniq — valori da 0 a 4, controllando i login simultanei.uniq = 0 disabilita il controllo.uniq = 1 è una connessione singola rigorosa: un nuovo login interrompe il precedente.uniq = 3 consente più connessioni concorrenti ma solo dalla stessa IP sorgente — corretto per una casa che utilizza due o tre ricevitori dietro un router.

sleep / sleepsendsleep = 90 disconnette un client inattivo dopo 90 minuti senza richieste ECM.sleepsend = 255 è la versione educata — dice ai client del protocollo CCcam di smettere di bombardare il server una volta che il timer di sonno scatta, invece di continuare a richiedere e venire ignorati silenziosamente.

cccmaxhops, cccreshare — controlli della topologia per le catene di condivisione delle schede.cccmaxhops limita quanti salti una condivisione può fare prima che la scheda di questo account venga esclusa dalla condivisione di qualcun altro;cccreshare controlla se la condivisione di questo account può essere inoltrata ulteriormente lungo la catena.

monlevel — livello di accesso per il monitor/WebIf, non correlato all'accesso alla scheda.disabled = 1 è il modo più sicuro per sospendere temporaneamente un account — eliminare un blocco perde la configurazione, disabilitarlo mantiene tutto intatto e reversibile.expdate = YYYY-MM-DD scade automaticamente l'account a quella data, utile per accessi a tempo limitato senza un follow-up manuale.

allowedprotocols — fissa l'account a protocolli di ascolto specifici (ad es.cccam,cs378x), quindi anche se le credenziali trapelano, non possono essere utilizzate per connettersi tramite newcamd o qualsiasi altro listener abilitato.

Group Mapping: Collegare oscam.user a oscam.server

Questa è la parte che separa una configurazione funzionante da una "connessa ma vuota", ed è la parte che la maggior parte dei tutorial salta completamente. La regola è semplice da enunciare e facile da sbagliare:il gruppo di un client in oscam.user deve condividere almeno un numero con il gruppo di un lettore in oscam.server. Nessun numero condiviso, nessun ECM, non importa quanto sia corretta la password.

Diciamo che stai utilizzando due lettori. Il lettore A è una smartcard locale. Il lettore B è un lettore proxy/CCcam remoto che preleva da altrove. In oscam.server:

[reader]

Ora definisci tre livelli di client in oscam.user:

[account]

basic può essere instradato solo a reader_local.full può raggiungere uno dei due lettori a seconda di ciò che è necessario.proxy_only è bloccato su reader_proxy e non toccherà mai la smartcard locale, anche se è proprio lì e inattiva.

Ecco la modalità di errore che vedo costantemente: qualcuno creagroup = 3 su un nuovo account e dimentica che nessun lettore da nessuna parte hagroup = 3 in oscam.server. Il login ha successo — OScam non ha problemi ad autenticare un utente/pwd valido — ma nel momento in cui un canale viene sintonizzato, il log mostra qualcosa comenon trovato (nessun lettore corrispondente). Il cliente presume che la scheda sia morta. La scheda è a posto. Non c'è solo nessun lettore mappato a quel numero di gruppo.

Una volta che capisci questo, diventa ovvio perché impostaregroup = 1,2,3,4,5 su ogni account "per essere al sicuro" annulla completamente il senso di avere gruppi. Se ogni cliente può raggiungere ogni lettore, hai costruito un elenco di controllo degli accessi che non controlla nulla — tanto vale non avere affatto gruppi, e hai perso la capacità di isolare la tua scheda locale da un lettore proxy remoto quando ne hai effettivamente bisogno.

Per il controllo a livello di canale sotto il livello gruppo/CAID, usa oscam.services. Definisci un blocco nominato:

[sports]

Poi riferisciti ad esso da un account invece di ripetere coppie CAID/provid grezze:

[account]

Prefissa con! per mettere in blacklist invece di whitelist —services = !sports consente tutto tranne quel blocco. Lasciaservices= vuoto e non ci sarà alcuna restrizione a livello di servizio; l'account tornerà a ciò che i filtri gruppo/CAID/ident già consentono.

Impostazione dell'account specifica per protocollo: CCcam, camd35, cs378x, newcamd, MGcamd

Ecco la cosa che sorprende molte persone che migrano da CCcam: lo stesso[account] blocco serve ogni protocollo contemporaneamente. oscam.user stesso non sa né si preoccupa se il cliente si connette tramite CCcam, newcamd o cs378x — questo è deciso interamente da quale listener in oscam.conf il cliente punta.

oscam.conf abilita i listener:

[cccam]

Dalla parte del cliente, ogni protocollo ha bisogno della propria riga che punta al tuo server. Per CCcam.cfg su un ricevitore:

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

Per MGcamd's newcamd.list:

CWS = your.server.tld 34001 clientname SomeStrongPassword2026 0102030405060708091011121314

Per cs378x su un client Wicardd o basato su Enigma2, è la stessa struttura host/port/user/pass di camd35 ma su TCP invece di UDP — camd35 è UDP sulla porta 34000, cs378x è TCP sullo stesso numero di porta per convenzione (non è necessario che corrispondano, ma la maggior parte delle configurazioni lo fa in quel modo per mantenerlo memorabile).

newcamd merita un avviso specifico: quella stringa esadecimale di 28 caratteri è una chiave DES di 14 byte, e deve corrispondere byte per byte tra ilkey = riga in oscam.conf e l'entry della chiave sul client. Se sbagli un carattere, il handshake fallisce silenziosamente — a livello di log predefinito non vedrai un errore utile, solo un cliente che non completa mai il login. Nota anche che newcamd associa una porta a una specifica coppia CAID:provid, quindi un cliente che ha bisogno di diversi CAID potrebbe aver bisogno di diverse porte newcamd definite, una per coppia, a meno che tu non stia usando una build che supporta il binding multi-CAID su una porta.

Una volta che l'account è in servizio, bloccalo conallowedprotocols = cccam,cs378x se sai che è l'unico protocollo che questo particolare cliente utilizza. È un piccolo passo che impedisce che le credenziali trapelate vengano riutilizzate su un protocollo diverso che non ti aspettavi.

Verifica e Debugging: Log, WebIf e gli Errori che Vedrai Effettivamente

Prima di toccare un ricevitore, aumenta il logging. In oscam.conf:

[global]

Aumentalivello di log a 255 temporaneamente se hai bisogno della massima verbosità mentre esegui il debug di un account specifico, poi riduci — a 255 il log si riempie rapidamente. Seguilo in tempo reale contail -f /var/log/oscam/oscam.log mentre il client tenta di connettersi.

Ecco cosa significano realmente le stringhe comuni:

  • nome utente/password errati — controlla uno spazio in più o, più spesso di quanto le persone si aspettino, un terminatore di riga CRLF di Windows in un file che è stato modificato su una macchina Windows e caricato tramite FTP. OScam può bloccarsi sul finale\r e non riuscire a analizzare correttamente la riga.
  • account scadutoexpdate è passato. Controlla anche l'ora del server — un orologio che è avanzato può far scadere un account in anticipo.
  • utente disabilitatodisabled = 1 è impostato su quel blocco.
  • non trovato (nessun lettore corrispondente) — mismatch di gruppo tra oscam.user e oscam.server, esattamente come trattato sopra.
  • client rifiutato (ip non valido) — una restrizione di whitelist IP sull'account o sul listener sta bloccando l'indirizzo sorgente del client.
  • CW non trovato — il lettore è stato raggiunto, ma la scheda non ha realmente diritto a quel provider. Questo è un problema di scheda/abbonamento, non un problema di oscam.user.
  • Tempo ECM costantemente superiore a 1000ms — questa è latenza upstream o proxy, non qualcosa che puoi risolvere in oscam.user.

Conferma che il binario sta effettivamente leggendo la directory di configurazione che pensi sia:oscam -b -c /usr/local/etc. Il WebIf si trova suhttp://your-server-ip:8888 per impostazione predefinita (impostato tramitehttpport in oscam.conf), e rifiuterà silenziosamente di caricarsi sehttpallowed non include la subnet da cui stai navigando — nessuna pagina di errore, solo una connessione che non si completa mai.

Dopo qualsiasi modifica manuale, conferma che il ricaricamento sia effettivamente avvenuto piuttosto che presumere che sia successo. Il comportamento SIGHUP e il pulsante Riavvia del WebIf non si comportano in modo identico in ogni build — controlla il timestamp del log in alto dopo il riavvio e conferma che il nuovo account o quello modificato appaia sotto la scheda Utenti del WebIf prima di considerarlo completato.

Rafforzare gli account client e errori comuni

Alcune abitudini operative risparmiano molto debugging in seguito. Un account per persona o per abbonamento — non dare le stesse credenziali a tre famiglie diverse e fare affidamento suuniq per risolverlo. Impostauniq = 3 per una famiglia che gestisce diversi box dietro una singola connessione NAT, euniq = 1 per un account rigorosamente su un singolo dispositivo. Nota che un client su CGNAT il cui IP pubblico cambia a metà sessione può attivareuniq = 1 e causare loop di disconnessione/riconnessione ripetuti che sembrano un difetto della scheda ma sono in realtà un problema uniq/IP.

Esegui il backup di oscam.user prima di ogni modifica. Un singolo errore di sintassi in un blocco può impedire l'analisi dell'intero file, il che interrompe ogni account, non solo quello che stavi modificando. Mantieni i permessi a 600 — le password in chiaro in un file leggibile da tutti sono un rischio non necessario su qualsiasi server condiviso.

Un duplicatouser = il nome in due blocchi non genera un errore — il blocco successivo nel file vince silenziosamente e quello precedente smette semplicemente di funzionare, senza nulla nel log che ti dica perché. Allo stesso modo, fai attenzione agli spazi attorno alle virgole nelle versioni più vecchie digroup/caid liste — alcune versioni analizzanogroup = 1, 2 in modo diverso dagroup = 1,2.

Fai attenzione ai casi limite che sono facili da perdere: un account che necessita sia di una smartcard locale che di un lettore proxy remoto ha bisogno di appartenenza a più gruppi (group = 1,2) più filtri CAID/ident separati se le due fonti portano CAID diversi. Una smartcard riemessa con un nuovo provid può silenziosamente interrompere unident= filtro che funzionava, quindi se un account precedentemente funzionante improvvisamente riceveCW non trovato, controlla se la scheda dietro di esso è stata scambiata. E se stai eseguendo più istanze di OScam su un host con diverse-c directory di configurazione, ricontrolla quale oscam.user stai effettivamente modificando prima di concludere che una correzione "non ha funzionato" — potrebbe essere finita nel file dell'istanza sbagliata.

Prima di consegnare un account a chiunque, segui questa lista di controllo:

  • La sintassi del blocco è valida — nessun CRLF errante, nessun duplicatouser=
  • group interseca almeno un lettore'sgroup in oscam.server
  • caid/ident i filtri corrispondono effettivamente a ciò che quel lettore porta
  • au è impostato intenzionalmente, non lasciato suau=1 di default
  • uniq esleep corrisponde al reale modello di utilizzo del cliente
  • Testato con una richiesta ECM reale e confermato il successo nel log, non solo un accesso riuscito

Ottieni il file oscam.user di OScam: impostando correttamente gli account dei clienti in questa fase della checklist, spenderai molto meno tempo in seguito a gestire messaggi "la mia scheda ha smesso di funzionare" che sono in realtà solo un numero di gruppo che non ha mai corrisposto a un lettore.

Dove si trova il file oscam.user?

Il predefinito è/usr/local/etc/oscam.user per le build compilate da sorgente. Su immagini Enigma2 è solitamente/etc/tuxbox/config/oscam.user o/etc/tuxbox/config/oscam/oscam.user. La risposta autorevole è qualunque directory sia stata passata conoscam -c — controlla il processo in esecuzione conps o la scheda WebIf Files, che mostra e modifica direttamente il percorso live.

Il mio cliente si connette ma non riceve canali — cosa c'è di sbagliato?

Quasi sempre un disallineamento di gruppo. Ilgroup= valore nell'[account] blocco del cliente deve condividere almeno un numero con ilgroup= valore su un lettore in oscam.server. Se non si intersecano, OScam autentica l'accesso ma non ha lettori a cui instradare l'ECM, e il log mostranessun lettore corrispondente. Seconda causa più probabile: uncaid= oident= filtro sull'account che esclude il CAID che il canale utilizza effettivamente.

Qual è la differenza tra uniq=1 e uniq=3?

uniq controlla le connessioni simultanee.uniq=1 consente solo una connessione per account e disconnette quella precedente quando arriva un nuovo accesso — corretto per account a dispositivo singolo rigorosi.uniq=3 consente connessioni simultanee multiple solo se provengono dallo stesso indirizzo IP — corretto per una famiglia con diversi ricevitori dietro un singolo router NAT.uniq=0 disabilita completamente il controllo.

Dovrei impostare au=1 per ogni account cliente?

No.au=1 consente agli EMM di quell'utente di raggiungere qualsiasi lettore nel loro gruppo, che può scrivere aggiornamenti indesiderati su una scheda condivisa. Preferisciau=readername per legare AU a un lettore specifico, o lasciareau vuoto per disabilitare l'inoltro EMM per quell'utente. I clienti sul protocollo CCcam in particolare gestiscono AU in modo inaffidabile, quindi lasciare AU disattivato per loro è di solito la scelta più sicura.

Ho bisogno di un account separato per ciascuno dei miei ricevitori?

Non necessariamente, ma è una pratica migliore. Account separati ti permettono di impostare diversicaid/ident filtri, individuare quale box sta generando carico nel WebIf e disabilitare una box senza interrompere le altre. Se condividi un account tra box sulla stessa connessione, impostauniq=3 in modo che OScam consenta i login simultanei dallo stesso IP.

Perché il mio client newcamd non riesce a connettersi quando CCcam funziona bene?

Newcamd richiede una chiave DES di 14 byte (28 caratteri esadecimali) che deve corrispondere esattamente tra il[newcamd] chiave in oscam.conf e la chiave nella lista newcamd del client / riga CWS. Una discrepanza fallisce durante il handshake, spesso senza nulla di informativo nel log al livello di log predefinito. Newcamd lega anche una porta per coppia CAID/provid (port = 34001@0500:007800), quindi il client deve connettersi alla porta assegnata al CAID di cui ha bisogno.

OScam ricarica automaticamente oscam.user dopo che l'ho modificato?

Non in modo affidabile su tutte le versioni. La modifica tramite la scheda Utenti del WebIf si applica immediatamente. Se modifichi il file tramite SSH, riavvia OScam o invia SIGHUP, quindi conferma il ricaricamento controllando il timestamp del log o che il nuovo utente appaia nel WebIf. Verifica anche che il file utilizzi terminazioni di riga Unix (LF) — un file salvato da Windows con CRLF può non essere analizzato correttamente e silenziosamente eliminare account.