Loading...

Plik OScam oscam.user: Poprawna konfiguracja kont klientów (Przewodnik 2026)

Jeśli kiedykolwiek patrzyłeś na wpis w logu klienta, który mówi "połączono", podczas gdy ich odbiornik pokazuje zero kanałów, już wiesz, o jakim bólu mówi ten artykuł. Uzyskanie pliku OScam oscam.user: poprawna konfiguracja kont klientów polega głównie na zrozumieniu jednej zasady, której prawie nikt nie wyjaśnia jasno — jak uwierzytelnienie i autoryzacja to dwa oddzielne kroki, a jak niezgodność między nimi produkuje logowanie, które "działa", ale nic nie dostarcza.

Odbudowałem ten plik więcej razy, niż chciałbym przyznać, na serwerach migrujących z CCcam oraz na świeżych instalacjach OScam z źródła. Sama składnia jest prosta. To, co myli ludzi, to relacja między oscam.user a oscam.server — i to właśnie tam ten przewodnik spędza większość swojego czasu.

Co właściwie robi plik oscam.user

Pomyśl o oscam.user jako o dwóch zadaniach nałożonych na siebie. Zadanie pierwsze to uwierzytelnienie: czy ta kombinacja użytkownika/hasła istnieje, czy nie jest przestarzała, czy nie jest wyłączona? Zadanie drugie to autoryzacja: zakładając, że logowanie jest ważne, do jakich grup, CAID-ów, identyfikatorów, identyfikatorów kanałów i usług to konto ma rzeczywiście dostęp? Większość zgłoszeń wsparcia, które widziałem, pochodzi od osób, które rozwiązały zadanie pierwsze i nigdy nie sprawdziły zadania drugiego.

Plik jest w formacie tekstowym. Jeden[konto] blok na klienta, komentarze zaczynają się od#, a OScam odczytuje całość od góry do dołu przy starcie. Zmiany dokonane przez SSH wymagają ponownego uruchomienia lub SIGHUP, aby weszły w życie — edycje dokonane przez zakładkę Użytkownicy w WebIf stosują się natychmiast, ponieważ WebIf zapisuje do tego samego pliku i sam wyzwala ponowne załadowanie.

Domyślne lokalizacje różnią się w zależności od wersji:

  • /usr/local/etc/oscam.user — standard dla instalacji skompilowanych ze źródła
  • /etc/tuxbox/config/oscam.user lub/etc/tuxbox/config/oscam/oscam.user — powszechne w obrazach Enigma2
  • Jakikolwiek katalog, który podałeś zoscam -c /ścieżka/do/konfiguracji — to zawsze wygrywa nad jakąkolwiek "domyślną" ścieżką

Ustaw uprawnienia na 600 dla tego pliku. Hasła są przechowywane w postaci tekstowej, a na serwerze wieloużytkownikowym nie ma powodu, dla którego jakiekolwiek inne konto powinno mieć do nich dostęp:chmod 600 /usr/local/etc/oscam.user.

Oto minimalny działający blok, aby ugruntować resztę tego artykułu:

[konto]

użytkownik ihasło to dane logowania, które odbiornik klienta lub CCcam.cfg wyśle.grupa = 1 oznacza, że to konto może być kierowane tylko do czytników, których własnagrupa w oscam.server zawiera grupę 1.au = 1 pozwala na przesyłanie EMM-ów w celu automatycznej aktualizacji karty.unikat = 1 oznacza, że dozwolone jest tylko jedno aktywne połączenie w danym czasie — drugie logowanie wylogowuje pierwsze. To cały szkielet. Wszystko inne w tym pliku to udoskonalenia na jego podstawie.

OScam ocenia żądanie w ustalonej kolejności: sprawdza login w oscam.user, następnie krzyżuje grupę konta z dostępnymi czytnikami, następnie stosuje filtry CAID/ident/chid/class, a następnie wybiera czytnik i prosi o ECM. oscam.server definiuje czytniki i ich grupy; oscam.services definiuje nazwane pakiety usług, które można odwołać z oscam.user. oscam.conf po prostu informuje OScam, na jakich protokołach sieciowych nasłuchiwać w pierwszej kolejności. Żaden z tych plików nie działa samodzielnie — blok konta jest zawiasem między nimi.

Pisanie poprawnego bloku [account]: każdy parametr, który ma znaczenie

Oto pełniejszy blok z parametrami, które ludzie rzeczywiście potrzebują w produkcji, z adnotacjami:

[account]

user, pwd — obowiązkowe. Żaden blok konta nie jest ważny bez obu. Blok, który nie zawierapwd nie jest "bez hasła", jest bezużyteczny — OScam po prostu nie może go uwierzytelnić.

group — lista liczb oddzielonych przecinkami od 1 do 64. To jest najczęściej źle rozumiany parametr w całym pliku, a omówię go dokładnie w następnej sekcji, ponieważ zasługuje na własny przykład. Krótsza wersja: ta liczba sama w sobie nic nie znaczy. Ma znaczenie tylko w odniesieniu dogroup= linii w czytniku w oscam.server.

au — kontroluje przekazywanie EMM.au = 1 pozwala na aktualizacje do każdego czytnika, do którego może dotrzeć grupa konta.au = readername przypina aktualizacje do jednego konkretnego czytnika po nazwie, co jest bezpieczniejszym wyborem w przypadku współdzielonej karty — nie chcesz, aby trzy różne EMM-y klientów ścigały się nawzajem na tej samej karcie inteligentnej. Pozostawau puste, aby całkowicie wyłączyć przekazywanie EMM dla tego użytkownika, co zalecałbym domyślnie dla każdego, kto łączy się przez protokół CCcam, ponieważ AU po stronie CCcam zawsze było w praktyce niestabilne.

caid, ident, chid, class — filtry zawężające.caid=0500,1810 ogranicza, które CAID-y konto może w ogóle żądać.ident= idzie o poziom głębiej z parami CAID:provid, np.0500:007800.chid= filtruje według ID kanału,class= filtruje według klasy ECM. Pozostaw dowolny z nich pusty, a filtr po prostu nie zostanie zastosowany — konto dziedziczy to, co oferuje dopasowany czytnik.

services — odnosi się do nazwanego bloku z oscam.services zamiast wymieniać surowe pary CAID/provid. Omówione z przykładem w następnej sekcji.

uniq — wartości od 0 do 4, kontrolujące jednoczesne logowania.uniq = 0 wyłącza sprawdzenie.uniq = 1 jest surowym połączeniem jednoczesnym: nowe logowanie zrywa stare.uniq = 3 pozwala na wiele równoczesnych połączeń, ale tylko z tego samego adresu IP — poprawne dla gospodarstwa domowego z dwoma lub trzema odbiornikami za jednym routerem.

sleep / sleepsendsleep = 90 rozłącza nieaktywny klienta po 90 minutach braku żądań ECM.sleepsend = 255 jest grzeczną wersją — informuje klientów protokołu CCcam, aby przestali bombardować serwer, gdy timer snu się uruchomi, zamiast kontynuować żądania i być cicho ignorowanym.

cccmaxhops, cccreshare — kontrola topologii dla łańcuchów udostępniania kart.cccmaxhops ogranicza, ile skoków może przejść udostępnienie, zanim karta tego konta zostanie wykluczona z ponownego udostępnienia przez kogoś innego;cccreshare kontroluje, czy własne udostępnienie tego konta może być dalej przekazywane w łańcuchu.

monlevel — poziom dostępu dla monitorowania/WebIf, niezwiązany z dostępem do kart.disabled = 1 jest bezpieczniejszym sposobem na tymczasowe zawieszenie konta — usunięcie bloku traci konfigurację, wyłączenie go zachowuje wszystko w nienaruszonym stanie i odwracalnym.expdate = YYYY-MM-DD automatycznie wygasa konto w tym dniu, przydatne do dostępu czasowego bez ręcznego śledzenia.

allowedprotocols — przypina konto do konkretnych protokołów nasłuchujących (np.cccam,cs378x), więc nawet jeśli dane uwierzytelniające wyciekną, nie można ich użyć do połączenia przez newcamd lub jakiegokolwiek innego włączonego nasłuchiwacza.

Mapowanie grup: Łączenie oscam.user z oscam.server

To jest część, która oddziela działającą konfigurację od "połączonej, ale pustej", i jest to część, którą większość samouczków całkowicie pomija. Zasada jest prosta do sformułowania i łatwa do pomylenia:grupa klienta w oscam.user musi dzielić przynajmniej jeden numer z grupą czytnika w oscam.server. Brak wspólnego numeru, brak ECM, niezależnie od tego, jak poprawne jest hasło.

Powiedzmy, że uruchamiasz dwóch czytników. Czytnik A to lokalna karta inteligentna. Czytnik B to zdalny proxy/CCcam czytnik pobierający z innego miejsca. W oscam.server:

[reader]

Teraz zdefiniuj trzy poziomy klientów w oscam.user:

[account]

basic może być kierowany tylko do reader_local.full może dotrzeć do dowolnego czytnika w zależności od potrzeb.proxy_only jest zablokowany na reader_proxy i nigdy nie dotknie lokalnej karty inteligentnej, nawet jeśli jest tuż obok i nieaktywna.

Oto tryb awarii, który widzę nieustannie: ktoś tworzygroup = 3 na nowe konto i zapomina, że żaden czytnik nigdzie nie magroup = 3 w oscam.server. Logowanie się udaje — OScam nie ma problemu z uwierzytelnieniem ważnego użytkownika/hasła — ale w momencie, gdy kanał jest dostrojony, log pokazuje coś takiego jaknie znaleziono (brak pasującego czytnika). Klient zakłada, że karta umarła. Karta jest w porządku. Po prostu nie ma czytnika przypisanego do tego numeru grupy.

Gdy to zrozumiesz, staje się oczywiste, dlaczego ustawieniegroup = 1,2,3,4,5 na każdym koncie "dla bezpieczeństwa" podważa cały sens posiadania grup. Jeśli każdy klient może uzyskać dostęp do każdego czytnika, zbudowałeś listę kontroli dostępu, która niczego nie kontroluje — równie dobrze mogłoby nie być grup wcale, a straciłeś zdolność do izolowania swojej lokalnej karty od zdalnego czytnika proxy, gdy naprawdę tego potrzebujesz.

Dla kontroli na poziomie kanału poniżej warstwy grup/CAID, użyj oscam.services. Zdefiniuj nazwany blok:

[sports]

Następnie odwołaj się do niego z konta zamiast powtarzać pary CAID/provid:

[account]

Prefiks z! aby zablokować zamiast zezwalać —services = !sports zezwala na wszystko oprócz tego bloku. Pozostawservices= puste, a nie ma żadnych ograniczeń na poziomie usług; konto wraca do tego, co już pozwalają filtry grup/CAID/ident.

Konfiguracja konta specyficznego dla protokołu: CCcam, camd35, cs378x, newcamd, MGcamd

Oto rzecz, która zaskakuje wielu ludzi migrujących z CCcam: ten sam[account] blok służy każdemu protokołowi jednocześnie. oscam.user sam w sobie nie wie ani nie obchodzi go, czy klient łączy się przez CCcam, newcamd, czy cs378x — to jest całkowicie decydowane przez to, który nasłuchiwacz w oscam.conf wskazuje klient.

oscam.conf włącza nasłuchiwacze:

[cccam]

Po stronie klienta każdy protokół potrzebuje swojej własnej linii wskazującej na twój serwer. Dla CCcam.cfg na odbiorniku:

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

Dla MGcamd's newcamd.list:

CWS = your.server.tld 34001 clientname SomeStrongPassword2026 0102030405060708091011121314

Dla cs378x na kliencie Wicardd lub opartym na Enigma2, to ta sama struktura host/port/użytkownik/hasło jak w camd35, ale przez TCP zamiast UDP — camd35 to UDP na porcie 34000, cs378x to TCP na tym samym numerze portu z konwencji (nie muszą się zgadzać, ale większość konfiguracji robi to w ten sposób, aby było to łatwe do zapamiętania).

newcamd zasługuje na szczególne ostrzeżenie: ten 28-znakowy ciąg szesnastkowy to klucz DES o długości 14 bajtów, i musi zgadzać się bajt po bajcie międzykey = linią w oscam.conf a wpisem klucza na kliencie. Jeśli jeden znak jest błędny, handshake kończy się cicho — przy domyślnym poziomie logowania nie zobaczysz użytecznego błędu, tylko klienta, który nigdy nie kończy logowania. Zauważ również, że newcamd przypisuje port do konkretnej pary CAID:provid, więc klient, który potrzebuje kilku różnych CAID, może potrzebować zdefiniować kilka portów newcamd, jeden na parę, chyba że używasz wersji, która obsługuje wielokrotne przypisanie CAID na jednym porcie.

Gdy konto jest w użyciu, zablokuj je za pomocąallowedprotocols = cccam,cs378x jeśli wiesz, że to jedyny protokół, z którego korzysta ten konkretny klient. To mały krok, który zapobiega ponownemu wykorzystaniu wyciekłych poświadczeń przez inny protokół, którego się nie spodziewałeś.

Weryfikacja i debugowanie: Logi, WebIf i błędy, które naprawdę zobaczysz

Zanim dotkniesz odbiornika, zwiększ poziom logowania. W oscam.conf:

[global]

Zwiększpoziom logowania do 255 tymczasowo, jeśli potrzebujesz maksymalnej szczegółowości podczas debugowania konkretnego konta, a następnie zmniejsz go — przy 255 log szybko się zapełnia. Śledź go na żywo za pomocątail -f /var/log/oscam/oscam.log podczas gdy klient próbuje się połączyć.

Oto, co oznaczają powszechne komunikaty:

  • błędna nazwa użytkownika/hasło — sprawdź, czy nie ma zbędnej spacji lub, częściej niż się spodziewasz, zakończenia linii CRLF w pliku, który był edytowany na maszynie z systemem Windows i przesłany przez FTP. OScam może mieć problem z końcowym \r i niepoprawnie zanalizować linię.
  • konto wygasłodata wygaśnięcia minęła. Sprawdź również czas serwera — zegar, który się spóźnia, może wygasić konto wcześniej.
  • użytkownik wyłączonywyłączony = 1 jest ustawione na tym bloku.
  • nie znaleziono (brak pasującego czytnika) — niezgodność grupy między oscam.user a oscam.server, dokładnie tak, jak opisano powyżej.
  • klient odrzucony (nieprawidłowy adres IP) — ograniczenie listy dozwolonych adresów IP na koncie lub nasłuchiwaczu blokuje adres źródłowy klienta.
  • CW nie znaleziono — czytnik został osiągnięty, ale karta rzeczywiście nie ma uprawnień do tego providera. To jest problem karty/subskrypcji, a nie problem oscam.user.
  • Czas ECM konsekwentnie powyżej 1000 ms — to opóźnienie w górę lub proxy, nie coś, co naprawisz w oscam.user.

Potwierdź, że binarka w ogóle odczytuje katalog konfiguracyjny, który myślisz, że to jest:oscam -b -c /usr/local/etc. WebIf znajduje się podhttp://your-server-ip:8888 domyślnie (ustawione przezhttpport w oscam.conf), a cicho odmówi załadowania, jeślihttpallowed nie zawiera podsieci, z której przeglądasz — brak strony błędu, tylko połączenie, które nigdy się nie kończy.

Po każdej ręcznej edycji potwierdź, że przeładowanie rzeczywiście miało miejsce, zamiast zakładać, że tak było. Zachowanie SIGHUP i przycisk Restart w WebIf nie działają identycznie w każdej wersji — sprawdź znacznik czasu logu na górze po restarcie i potwierdź, że nowe lub zmienione konto pojawia się w zakładce Użytkownicy WebIf, zanim uznasz to za zakończone.

Wzmacnianie kont klientów i powszechne błędy

Kilka nawyków operacyjnych oszczędza dużo debugowania później. Jedno konto na osobę lub subskrypcję — nie przekazuj tych samych danych logowania trzem różnym gospodarstwom domowym i polegaj nauniq aby to uporządkować. Ustawuniq = 3 dla jednego gospodarstwa domowego obsługującego kilka urządzeń za pomocą jednego połączenia NAT, auniq = 1 dla ścisłego konta na jednym urządzeniu. Zauważ, że klient na CGNAT, którego publiczny adres IP zmienia się w trakcie sesji, może spowodowaćuniq = 1 i spowodować powtarzające się pętle rozłączeń/ponownych połączeń, które wyglądają jak usterka karty, ale w rzeczywistości są problemem uniq/IP.

Zrób kopię zapasową oscam.user przed każdą edycją. Pojedynczy błąd składni w jednym bloku może zatrzymać cały plik przed analizą, co wyłącza każde konto, a nie tylko to, które edytowałeś. Utrzymuj uprawnienia na poziomie 600 — hasła w postaci czystego tekstu znajdujące się w pliku dostępnym dla wszystkich to niepotrzebne ryzyko na każdym współdzielonym serwerze.

Duplikatuser = nazwa w dwóch blokach nie generuje błędu — późniejszy blok w pliku cicho wygrywa, a wcześniejszy po prostu przestaje działać, bez niczego w logu, co by ci powiedziało dlaczego. Podobnie, zwracaj uwagę na spacje wokół przecinków w starszych wersjachgroup/caid list — niektóre wersje analizujągroup = 1, 2 inaczej niżgroup = 1,2.

Zwracaj uwagę na przypadki graniczne, które łatwo przeoczyć: konto, które potrzebuje zarówno lokalnej karty inteligentnej, jak i zdalnego czytnika proxy, potrzebuje członkostwa w wielu grupach (group = 1,2) oraz oddzielnych filtrów CAID/ident, jeśli dwa źródła mają różne CAID-y. Ponownie wydana karta inteligentna z nowym provid może cicho zepsućident= filtr, który wcześniej działał, więc jeśli wcześniej działające konto nagle otrzymujeCW not found, sprawdź, czy karta za nim została wymieniona. A jeśli uruchamiasz wiele instancji OScam na jednym hoście z różnymi-c katalogami konfiguracyjnymi, dokładnie sprawdź, który plik oscam.user faktycznie edytujesz, zanim dojdziesz do wniosku, że poprawka "nie zadziałała" — może trafiła całkowicie do pliku niewłaściwej instancji.

Przed przekazaniem konta komukolwiek, przejdź przez tę listę kontrolną:

  • Składnia bloku jest poprawna — brak zbędnych CRLF, brak zduplikowanegouser=
  • group przecina przynajmniej jednego czytnikagroup w oscam.server
  • caid/ident filtry rzeczywiście pasują do tego, co ten czytnik ma
  • au jest ustawione celowo, a nie pozostawione naau=1 domyślnie
  • uniq isen dopasowuje rzeczywisty wzór użycia klienta
  • Testowane z rzeczywistym żądaniem ECM i potwierdzone sukcesem w dzienniku, nie tylko udanym logowaniem

Pobierz plik oscam.user OScam: poprawne skonfigurowanie kont klientów na tym etapie listy kontrolnej pozwoli zaoszczędzić dużo czasu później na odpowiadanie na wiadomości "moja karta przestała działać", które tak naprawdę są tylko numerem grupy, który nigdy nie pasował do czytnika.

Gdzie znajduje się plik oscam.user?

Domyślnie jest to/usr/local/etc/oscam.user dla kompilacji ze źródła. W obrazach Enigma2 zazwyczaj jest to/etc/tuxbox/config/oscam.user lub/etc/tuxbox/config/oscam/oscam.user. Autorytatywna odpowiedź to dowolny katalog, który został przekazany zoscam -c — sprawdź działający proces za pomocąps lub zakładki Pliki WebIf, która pokazuje i edytuje ścieżkę na żywo bezpośrednio.

Mój klient łączy się, ale nie otrzymuje kanałów — co jest nie tak?

Prawie zawsze jest to niezgodność grupy. Wartośćgroup= w bloku klienta[account] musi dzielić przynajmniej jeden numer zgroup= wartością na czytniku w oscam.server. Jeśli się nie pokrywają, OScam autoryzuje logowanie, ale nie ma czytnika, aby przekazać ECM, a dziennik pokazujebrak pasującego czytnika. Drugą najczęstszą przyczyną jestcaid= lubident= filtr na koncie, który wyklucza CAID, którego kanał faktycznie używa.

Jaka jest różnica między uniq=1 a uniq=3?

uniq kontroluje jednoczesne połączenia.uniq=1 pozwala tylko na jedno połączenie na konto i rozłącza poprzednie, gdy przychodzi nowe logowanie — poprawne dla rygorystycznych kont na jedno urządzenie.uniq=3 pozwala na wiele jednoczesnych połączeń tylko wtedy, gdy pochodzą z tego samego adresu IP — poprawne dla jednego gospodarstwa domowego z kilkoma odbiornikami za jednym routerem NAT.uniq=0 całkowicie wyłącza sprawdzanie.

Czy powinienem ustawić au=1 dla każdego konta klienta?

Nie.au=1 pozwala EMM-om tego użytkownika dotrzeć do każdego czytnika w ich grupie, co może prowadzić do niechcianych aktualizacji na wspólnej karcie. Lepiejau=readername powiązać AU z jednym konkretnym czytnikiem, lub pozostawićau puste, aby wyłączyć przekazywanie EMM dla tego użytkownika. Klienci korzystający z protokołu CCcam w szczególności obsługują AU niestabilnie, więc zazwyczaj bezpieczniej jest pozostawić AU wyłączone dla nich.

Czy potrzebuję oddzielnego konta dla każdego z moich odbiorników?

Niekoniecznie, ale to lepsza praktyka. Oddzielne konta pozwalają ustawić różnecaid/ident filtry, zidentyfikować, który dekoder generuje obciążenie w WebIf, i wyłączyć jeden dekoder bez przerywania działania innych. Jeśli dzielisz jedno konto między dekoderami na tym samym połączeniu, ustawuniq=3 aby OScam zezwalał na jednoczesne logowanie z tego samego IP.

Dlaczego mój klient newcamd nie może się połączyć, gdy CCcam działa poprawnie?

Newcamd wymaga 14-bajtowego klucza DES (28 znaków szesnastkowych), który musi dokładnie pasować między[newcamd] kluczem w oscam.conf a kluczem w pliku newcamd.list / linii CWS klienta. Niedopasowanie kończy się niepowodzeniem podczas handshake, często bez żadnych informacyjnych wpisów w logu przy domyślnym poziomie logowania. Newcamd również przypisuje jeden port na parę CAID/provid (port = 34001@0500:007800), więc klient musi połączyć się z portem przypisanym do potrzebnego CAID.

Czy OScam automatycznie przeładowuje oscam.user po edytowaniu?

Nie niezawodnie we wszystkich wersjach. Edytowanie za pomocą zakładki Użytkownicy w WebIf stosuje się natychmiast. Jeśli edytujesz plik przez SSH, uruchom ponownie OScam lub wyślij SIGHUP, a następnie potwierdź przeładowanie, sprawdzając znacznik czasu w logu lub to, że nowy użytkownik pojawia się w WebIf. Sprawdź również, czy plik używa zakończeń linii Unix (LF) — plik zapisany z Windows z CRLF może nie zostać poprawnie przetworzony i cicho usunąć konta.