QNAP – uprawnienia folderów zmieniają się same?

qNAp Problem z uprawnieniami
Ustawiasz uprawnienia na folderach QNAP, wszystko działa, a na drugi dzień znowu masz problem z dostępem? Użytkownicy nie mogą zapisywać plików do folderów, w których wczoraj jeszcze mogli? Klasyczny scenariusz – ustawiasz RW na Folder, wychodzisz, wracasz rano i uprawnienia wróciły do stanu wyjściowego.

QNAP – uprawnienia folderów zmieniają się same?

Ustawiasz uprawnienia na folderach QNAP, wszystko działa, a na drugi dzień znowu masz problem z dostępem? Użytkownicy nie mogą zapisywać plików do folderów, w których wczoraj jeszcze mogli? Klasyczny scenariusz – ustawiasz RW na Folder, wychodzisz, wracasz rano i uprawnienia wróciły do stanu wyjściowego.

Zanim zaczniesz resetować NAS-a, przeinstalowywać firmware albo grzebać w ACL-ach – sprawdź crontab. Bardzo prawdopodobne, że winowajcą jest systemowe zadanie ImR_all, które co noc nadpisuje Twoje uprawnienia.

Co to jest ImR_all i dlaczego psuje uprawnienia

W domyślnej konfiguracji QNAP w crontabie znajdziesz wpis:

0 3 * * * /usr/local/sbin/ImR_all -soft /Qmultimedia

To zadanie uruchamia się codziennie o 3:00 w nocy i wykonuje „miękki” reset indeksowania oraz uprawnień na folderze /Qmultimedia (alias do /share/MD0_DATA/Multimedia). Jest to element systemu Multimedia Console, który odpowiada za indeksowanie plików multimedialnych – zdjęć, filmów, muzyki.

Problem polega na tym, że ImR_all potrafi nadpisać uprawnienia, które ręcznie ustawiłeś na folderach i podfolderach w obrębie Multimedia. Efekt – Twoje niestandardowe ACL-e i ustawienia dostępu wracają do stanu „domyślnego” każdej nocy.

Objawy problemu

Jeśli widzisz którykolwiek z tych objawów, prawdopodobnie ImR_all jest winowajcą:

  • Uprawnienia na folderze Multimedia resetują się po nocy
  • Użytkownicy tracą dostęp do podfolderów, który dzień wcześniej działał
  • Zmiana uprawnień w panelu QTS nie „trzyma się” dłużej niż kilka godzin
  • W File Station lub przez SMB nagle pojawia się „Access Denied” na folderach, które wcześniej były dostępne
  • Po ręcznym ustawieniu uprawnień przez SSH (chmodsetfacl) zmiany znikają następnego dnia

Rozwiązanie – wyłączenie ImR_all w crontabie

Rozwiązanie jest proste – trzeba zakomentować lub usunąć wpis ImR_all z crontaba. Wymaga to dostępu SSH do NAS-a.

Krok 1: Włącz SSH na QNAP

  1. Zaloguj się do panelu QTS jako administrator
  2. Przejdź do Panel sterowania → Usługi sieciowe i plików → Telnet/SSH
  3. Zaznacz Zezwalaj na połączenie SSH
  4. Ustaw port (domyślnie 22, ale rozważ zmianę na niestandardowy, np. 2222, jeśli NAS jest dostępny z internetu)
  5. Kliknij Zastosuj

Krok 2: Połącz się z NAS przez SSH

Z komputera z Windows użyj PuTTY lub wbudowanego terminala:

bash

ssh admin@ADRES_IP_QNAP

Na macOS / Linux po prostu otwórz terminal i wpisz powyższe polecenie. Zaloguj się danymi administratora QNAP.

Krok 3: Zrób backup crontaba

Zanim cokolwiek zmienisz – kopia zapasowa:

bash

cp /etc/config/crontab /etc/config/crontab.backup

Krok 4: Edytuj crontab

Otwórz plik crontaba w edytorze:

bash

vi /etc/config/crontab

Znajdź linię:

0 3 * * * /usr/local/sbin/ImR_all -soft /Qmultimedia

Zakomentuj ją, dodając # na początku linii:

#0 3 * * * /usr/local/sbin/ImR_all -soft /Qmultimedia

Szybka ściągawka vi:

  • Naciśnij i żeby wejść w tryb edycji
  • Dodaj # na początku linii
  • Naciśnij Esc
  • Wpisz :wq i naciśnij Enter żeby zapisać i wyjść

Krok 5: Załaduj nowy crontab i zrestartuj cron

To kluczowy krok – samo zapisanie pliku nie wystarczy. QNAP wymaga jawnego załadowania crontaba:

bash

crontab /etc/config/crontab && /etc/init.d/crond.sh restart

Krok 6: Zweryfikuj zmianę

Sprawdź, czy Twoja zmiana została zastosowana:

bash

crontab -l | grep ImR_all

Jeśli wszystko poszło dobrze, powinieneś zobaczyć zakomentowaną linię z # na początku lub brak wyniku (jeśli usunąłeś linię zamiast komentować).

Dlaczego zmiana w crontabie wymaga dodatkowego kroku

Na standardowym Linuxie edytujesz crontab poleceniem crontab -e i zmiany od razu działają. Na QNAP jest inaczej – system trzyma „źródło prawdy” w pliku /etc/config/crontab i trzeba je jawnie załadować poleceniem crontab /etc/config/crontab.

Co więcej – nie używaj crontab -e na QNAP. Zmiany wprowadzone tą komendą są tymczasowe i znikną przy następnym restarcie lub aktualizacji systemu, bo QTS nadpisze je zawartością z /etc/config/crontab.

Poprawna procedura to zawsze:

  1. Edytuj /etc/config/crontab
  2. Załaduj: crontab /etc/config/crontab
  3. Restart crona: /etc/init.d/crond.sh restart

Czy wyłączenie ImR_all jest bezpieczne?

Tak, z jednym zastrzeżeniem. ImR_all odpowiada za odświeżanie indeksu multimediów. Jeśli korzystasz z wbudowanych aplikacji QNAP do przeglądania multimediów (Multimedia Station, Photo Station, Video Station), wyłączenie tego zadania sprawi, że nowo dodane pliki nie będą automatycznie indeksowane w nocy.

Praktycznie nie ma to żadnego znaczenia, jeśli:

  • Używasz Multimedia Console z włączonym automatycznym indeksowaniem (to osobny mechanizm)
  • Korzystasz z Plex, Jellyfin lub innego zewnętrznego serwera mediów (mają własne indeksowanie)
  • Nie korzystasz z wbudowanych aplikacji multimedialnych QNAP
  • Multimedia Console jest wyłączona

Nawet jeśli korzystasz z natywnych aplikacji QNAP – ręczne indeksowanie jest dostępne z poziomu Multimedia Console (przycisk „Reindex”).

Dodatkowe porady – naprawianie uprawnień po szkodach

Jeśli ImR_all zdążył już namieszać w Twoich uprawnieniach, oto jak je naprawić.

Sprawdzenie aktualnych uprawnień z SSH

bash

getfacl /share/MD0_DATA/Multimedia
ls -la /share/MD0_DATA/Multimedia/

Reset uprawnień na folderze Multimedia

Jeśli uprawnienia są kompletnie rozwalone, możesz je zresetować:

bash

# Usuń wszystkie ACL
setfacl -R --remove-all /share/MD0_DATA/Multimedia/*

# Ustaw właściciela i grupę
chown -R admin:administrators /share/MD0_DATA/Multimedia

# Ustaw uprawnienia
chmod -R 770 /share/MD0_DATA/Multimedia

Następnie w panelu QTS przejdź do Prawa dostępu → Foldery współdzielone → Multimedia → Edytuj uprawnienia i ponownie ustaw dostęp dla użytkowników/grup. Zaznacz opcję „Zastosuj i zastąp wszystkie istniejące uprawnienia”.

Użycie set_volume_mode

QNAP ma też wbudowane narzędzie do resetowania trybu uprawnień na wolumenie:

bash

/sbin/set_volume_mode

Uruchom je bez parametrów, żeby zobaczyć dostępne opcje. Pozwala to przełączyć wolumin między trybem uprawnień Linuxowych a Windows ACL.

Co jeszcze warto sprawdzić w crontabie

Skoro już jesteś w crontabie, rzuć okiem na inne wpisy, które mogą wpływać na działanie NAS-a. Domyślny crontab QNAP zawiera kilka ciekawych pozycji:

WpisCo robi
/sbin/vs_refreshOdświeża konfigurację Video Station
/sbin/clean_reset_pwdCzyści tymczasowe hasła po resecie
/etc/init.d/nss2_dusg.shPrzelicza użycie dysku (co 15 min)
/sbin/qfstrimTRIM na SSD (ważne, nie wyłączaj)
/etc/init.d/idmap.sh dumpDump mapowania ID (raz w tygodniu)
/sbin/notice_log_toolRotacja logów
/etc/init.d/storage_usage.shStatystyki użycia pamięci (co 10 min)

Nie wyłączaj tych zadań bez dobrego powodu – są potrzebne do prawidłowego działania systemu.

Podsumowanie

Problem z samoczynnie zmieniającymi się uprawnieniami na QNAP to klasyczny przypadek „nic nie ruszałem, a samo się zepsuło”. W rzeczywistości QNAP co noc uruchamia zadanie ImR_all, które resetuje uprawnienia na folderze Multimedia.

Rozwiązanie:

  1. Włącz SSH
  2. Edytuj /etc/config/crontab
  3. Zakomentuj linię z ImR_all
  4. Załaduj crontab: crontab /etc/config/crontab && /etc/init.d/crond.sh restart
  5. Gotowe – uprawnienia zostaną takie, jakie ustawisz

Qnap uprawnienia

Winowajcą jest systemowe zadanie cron o nazwie ImR_all, które domyślnie uruchamia się codziennie o 3:00 w nocy i resetuje uprawnienia na folderze /Qmultimedia. Aby rozwiązać problem, należy wyłączyć ten wpis w crontabie przez SSH.

ImR_all to wbudowany skrypt QNAP odpowiedzialny za indeksowanie i odświeżanie uprawnień na folderze Multimedia. Uruchamiany jest przez cron z parametrem -soft /Qmultimedia i stanowi część systemu Multimedia Console. Niestety przy okazji potrafi nadpisać ręcznie ustawione uprawnienia ACL.

Połącz się z NAS-em przez SSH, otwórz plik /etc/config/crontab edytorem vi, znajdź linię "0 3 * * * /usr/local/sbin/ImR_all -soft /Qmultimedia" i zakomentuj ją dodając # na początku. Następnie załaduj crontab poleceniem: crontab /etc/config/crontab && /etc/init.d/crond.sh restart

Zaloguj się do panelu QTS jako administrator, przejdź do Panel sterowania, następnie Usługi sieciowe i plików, a potem Telnet/SSH. Zaznacz opcję Zezwalaj na połączenie SSH, ustaw port i kliknij Zastosuj. Połączysz się poleceniem ssh admin@adres_ip_nas.

Na QNAP system trzyma konfigurację crona w pliku /etc/config/crontab. Zmiany wprowadzone przez crontab -e są tymczasowe i znikają po restarcie lub aktualizacji QTS. Poprawna metoda to edycja pliku /etc/config/crontab, a następnie załadowanie go poleceniem crontab /etc/config/crontab i restart crona.

Tak, wyłączenie ImR_all jest bezpieczne. Jedyną konsekwencją jest brak nocnego automatycznego indeksowania multimediów. Jeśli korzystasz z Plex, Jellyfin lub masz włączone automatyczne indeksowanie w Multimedia Console, nie odczujesz żadnej różnicy. Ręczne indeksowanie nadal działa z poziomu Multimedia Console.

Połącz się przez SSH i wykonaj komendy: setfacl -R --remove-all /share/MD0_DATA/Multimedia/* aby usunąć stare ACL, potem chown -R admin:administrators /share/MD0_DATA/Multimedia i chmod -R 770 /share/MD0_DATA/Multimedia. Następnie w panelu QTS ustaw uprawnienia ponownie z opcją "Zastosuj i zastąp wszystkie istniejące uprawnienia".

Połącz się z NAS-em przez SSH jako admin i wykonaj polecenia: getfacl /share/MD0_DATA/Multimedia aby zobaczyć listy ACL oraz ls -la /share/MD0_DATA/Multimedia/ aby sprawdzić uprawnienia Linuxowe, właściciela i grupę poszczególnych plików i katalogów.

Tak, istnieje takie ryzyko. Aktualizacje firmware QTS mogą nadpisać plik /etc/config/crontab i przywrócić domyślne wpisy, w tym ImR_all. Po każdej aktualizacji firmware warto sprawdzić crontab poleceniem crontab -l i w razie potrzeby ponownie zakomentować ten wpis.

Po edycji crontaba i przeładowaniu crona wykonaj polecenie: crontab -l | grep ImR_all. Jeśli linia jest zakomentowana, zobaczysz ją z # na początku. Jeśli ją usunąłeś, polecenie nie zwróci żadnego wyniku. Brak wyniku lub zakomentowana linia oznacza, że zadanie zostało poprawnie wyłączone.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *