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 e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *