AnyDesk - automatikus indulás kikapcsolása

kimarite képe

Az AnyDesk távoli asztal alkalmazás telepítési leírását itt olvashatod:
https://linuxmint.hu/blog/2022/07/anydesk-tavoli-asztal-alkalmazas

Az AnyDesk Systemd szolgáltatásként jegyezteti be magát a rendszerbe.

Az alkalmazás a telepítés és a frissítés alkalmával a Systemd Multi-user Target könyvtárba symlink-eli magát, mégpedig úgy, hogy minden alkalommal (telepítés vagy frissítés) újra létrehozza az /etc/systemd/system/ elérési úton az anydesk.service fájlt, és a fájlról symlinket készít az /etc/systemd/system/multi-user.target.wants/ útvonalon található anydesk.service fájlra.

A cél:

  • nem szeretnénk, hogy a rendszerrel együtt induljon el az alkalmazás, és folyamatosan fusson a háttérben.
  • azt szeretnénk, hogy csak akkor fusson, amikor mi indítjuk a menüből, amikor tényleg szükségünk van rá.

Frissítés után - korábban:

Az automatikus indítás kikapcsolása: a telepítés leírásában olvasható Indítópult alkalmazásban történő kikapcsolás ma már nem működik...

Frissítés után - manapság:

Azzal hogy a frissítés eseménye felülírja a Systemd szolgáltatás beállításait rögzítő fájlt valamint annak symlink-jét, egyben felülírja a

sudo systemctl disable anydesk.service

parancssorral rögzített beállítást, miszerint, az Anydesk ne induljon el a rendszerrel. Ejnye.

Automatikus indulás kikapcsolása

Kikapcsolás a systemctl használatával

Javaslat: Használd (használhatod).

Ez a módszer törődést igényel minden egyes AnyDesk frissülés alkalmával. Lépj a következő fejezetre.

Kapcsold ki az automatikus indulást (parancssor és kimenet):

sudo systemctl disable anydesk.service
Removed /etc/systemd/system/multi-user.target.wants/anydesk.service.

Mindez azonban csak a következő AnyDesk frissítésig működik.

Kikapcsolás a Cron időzítő használatával

Javaslat: Használd.

A Cron nyújt megoldást a szolgáltatás kikapcsolására és leállítására jelenleg.

A systemctl parancssor futtatásához admin jog szükséges, ezért a rendszer Cron szerkesztése szükséges (sudo).

Nyiss terminált, és futtasd (crontab):

sudo crontab -e

Válaszd ki az alapértelmezett szerkesztőt, például a nano szövegszerkesztőt.

Lapozz a szöveg végére, és sorköz után illeszd be a következő tartalmat:

@reboot /usr/bin/systemctl disable anydesk.service
@reboot /usr/bin/systemctl stop anydesk.service

Ments el a változtatást, és lépj ki a szövegszerkesztőből:

Ctrl + O, és Enter,
majd Ctrl + X

Indítsd újra a rendszert.

Cron beállítás magyarázat, használat:

  • a systemctl disable kapcsolója kikapcsolja, a stop kapcsolója leállítja az AnyDesk szolgáltatást.
  • a cron @reboot kapcsolójának hatására a parancssorok minden rendszer újraindítás alkalmával lefutnak.
  • a cron parancssorban a teljes elérési utakat szükséges használni (példa):
which systemctl

A rendszer feladatok listázása:

sudo crontab -l

Eredmények:

sudo systemctl list-unit-files --type=service
UNIT FILE                                  STATE           VENDOR PRESET     
anydesk.service                            disabled        enabled      
systemctl status anydesk.service
● anydesk.service - AnyDesk
     Loaded: loaded (/etc/systemd/system/anydesk.service; disabled; vendor preset: enabled)
     Active: inactive (dead)
systemctl is-enabled anydesk.service
disabled

Jegyzet

A beállítás kikapcsolása a sorok törlése nélkül:

# @reboot /usr/bin/systemctl disable anydesk.service
# @reboot /usr/bin/systemctl stop anydesk.service

Enjoy :-)

Érdekességek

Kikapcsolás a Systemd használatával (90-systemd.preset)

Javaslat: Ne használd.

Ez a módszer az első rendszer újraindításkor működött, utána nem.
Magyarázat:

Couldn't parse line 'stop anydesk.service'. Ignoring

Az /usr/lib/systemd/system-preset/ elérési úton lakó 90-systemd.preset fájlt fogjuk szerkeszteni (*). Ha a te rendszereden más a neve -nem 90-systemd.preset- akkor, a létező nevet helyettesítsd be a parancssorokba!

Készíts biztonsági másolatot a fájlról a szerkesztés előtt:

sudo cp /usr/lib/systemd/system-preset/90-systemd.preset /usr/lib/systemd/system-preset/90-systemd.preset.ORIG

Szerkeszd a fájlt a nano szövegszerkesztővel:

sudo nano /usr/lib/systemd/system-preset/90-systemd.preset

Lapozz a szöveg végére, és sorköz után illeszd be a következő tartalmat:

### Disable aggressive startup of AnyDesk service
# https://wiki.archlinux.org/title/systemd#Enable_installed_units_by_default
disable anydesk.service
stop anydesk.service

Ments el a változtatást, és lépj ki a szövegszerkesztőből:

Ctrl + O, és Enter,
majd Ctrl + X

Frissítsd a rendszert a változtatásokra:

sudo systemctl daemon-reload

Indítsd újra a rendszert.

Eredmények:

A stop sorra utal a jelzés is (figyelmen kívül hagyva).

sudo systemctl list-unit-files --type=service
/usr/lib/systemd/system-preset/90-systemd.preset:51: Couldn't parse line 'stop anydesk.service'. Ignoring.
UNIT FILE                                  STATE           VENDOR PRESET    
anydesk.service                            disabled        disabled     
systemctl status anydesk.service --no-pager
● anydesk.service - AnyDesk
     Loaded: loaded (/etc/systemd/system/anydesk.service; disabled; vendor preset: disabled)
     Active: inactive (dead)
systemctl is-enabled anydesk.service
disabled

Kikapcsolás a Systemd szolgáltatás szerkesztésével (anydesk.service)

Javaslat: Ne használd.

A WantedBy= beállítás, amely például a következő fejezetben szereplő override.conf fájlba is kerülne, az /etc/systemd/system/ útvonalon található anydesk.service fájlban közvetlenül is beállítható, azonban, ez csak elméleti lehetőség, mert a beállítás nem hatékony.

Készíts biztonsági mentést az anydesk.service fájlról a szerkesztés előtt:

sudo cp /etc/systemd/system/anydesk.service /etc/systemd/system/anydesk.service.ORIG

Szerkeszd a fájl tartalmát (nano):

sudo nano /etc/systemd/system/anydesk.service

Az [Install] szövegtömbnél tedd magyarázatba (kapcsold ki | # ) a WantedBy=multi-user.target sort, majd illeszd be új sorként a WantedBy= sort a szöveg végére.

Mindez a gyakorlatban (a fájl teljes tartalma):

[Unit]
Description=AnyDesk
Requires=network.target
After=systemd-user-sessions.service

[Service]
Type=simple
ExecStart=/usr/bin/anydesk --service
PIDFile=/var/run/anydesk.pid
KillMode=mixed
TimeoutStopSec=30
User=root
LimitNOFILE=100000

[Install]
#WantedBy=multi-user.target
WantedBy=

Mentsd a változtatásokat, és lépj ki a nano szövegszerkesztőből:

Ctrl + O, és Enter,
majd Ctrl + X

Alkalmazd a változtatást:

sudo systemctl daemon-reload

A szerkesztés a full kapcsolóval is kivitelezhető (*):

sudo systemctl edit --full anydesk.service

Kikapcsolás a Systemd szolgáltatás felülírásával (override.conf)

Javaslat: Ne használd.

A módszer régebben működött, manapság már nem. (*)

Készítsd el az override.conf fájlt:

sudo systemctl edit anydesk.service

Illeszd be a szöveget

[Install]
WantedBy=

Mentsd el a változtatást (Ctrl + O)

  • a mentés helyének szerkesztésekor figyelj arra, hogy
    • az elérési út tökéletes, ne nyúlj hozzá,
    • de végét szerkeszd: azaz, a fájl neve override.conf legyen!

Véglegesítsd a mentést (Enter).

Lépj ki a szövegszerkesztőből (Ctrl + X).

Frissítsd a rendszert a megváltozott beállításra:

sudo systemctl daemon-reload

Kikapcsolás a Chattr használatával

Javaslat: Ne használd.

Ez a tervezett és elképzelt megoldás mondhatni, favágó módszer, a lényege az, hogy a chattr alkalmazással megtiltom, hogy bárki felülírja az anydesk.service fájlt..., és erre a frissülő alkalmazás sem lesz képes. Ne használd más alkalmazásnál, mert

  • tudtommal, csak az AnyDesk Systemd szolgáltatásának indulása nem kapcsolható ki másképp (végérvényesen),
  • azaz, a szokásos Systemd kikapcsolás (disabled) természetesen működik a többi alkalmazásnál, pontosabban, az alkalmazások frissítése általában nem írja felül a felhasználó által alkalmazott disabled beállítást).

Kapcsold ki a szolgáltatás automatikus, azaz ismétlődő indítását (disable). A symlink törlésre kerül a multi-user.target könyvtárból),

sudo systemctl disable anydesk.service

és a szolgáltatást (stop).

sudo systemctl stop anydesk.service

Állítsd be a szolgáltatás beállító fájlját csak olvashatóra chattr alkalmazás +i kapcsolójával:

sudo chattr +i /etc/systemd/system/anydesk.service

Teszt

A tesztalany: a Debian 11 kiadás.

Eltávolítottam az AnyDesk alkalmazást (a remove kapcsoló meghagyja a beállításokat):

sudo apt-get remove anydesk

Hibaüzenet (de az eltávolítás sikerült):

Removing anydesk (6.2.1) ...
rm: '/etc/systemd/system/anydesk.service' nem törölhető: A művelet nem engedélyezett

Letöltöttem innen az AnyDesk korábbi, 6.1.1 verziószámú telepítőjét, és a GDebi csomagkezelő használatával telepítettem.

Hibaüzenet (kb.): az alkalmazás telepítése nem sikerült, mert nem írható a /etc/systemd/system/anydesk.service fájl.

A valóság: a telepítés sikerült.
Mint látni fogod, nem a hibaüzenet lesz a probléma, hanem az, hogy a vélelmezett megoldás további problémát okoz.

Frissítem a rendszert, hogy az AnyDesk a tükörről elérhető legfrissebb verzióra frissüljön, és a beállításom tesztje miatt.

sudo apt-get update
sudo apt-get upgrade

Hibaüzenet:

Retrieving bug reports... Done
Parsing Found/Fixed information... Done
Reading changelogs... Done
(Adatbázis olvasása ... 493052 files and directories currently installed.)
Preparing to unpack .../anydesk_6.2.1_amd64.deb ...
rm: '/etc/systemd/system/anydesk.service' nem törölhető: A művelet nem engedélyezett
Unpacking anydesk (6.2.1) over (6.1.1) ...
Beállítás: anydesk (6.2.1) ...
rm: '/etc/systemd/system/anydesk.service' nem törölhető: A művelet nem engedélyezett
dpkg: error processing package anydesk (--configure):
 installed anydesk package post-installation script subprocess returned error exit status 1

Értelemszerűen, nem a chattr a megoldás, hiszen, hibaüzenetek minden sudo apt-get update és sudo apt-get upgrade alkalmával megismétlődnek. Azt mondom, a kutyafülét sem érdekli a másik jelzés (az alkalmazás telepítése nem sikerült), ha valójában igen.

Az Anydesk frissülése után tehát, minden alkalommal ki kell kapcsolnod a szolgáltatás automatikus, azaz ismétlődő indítását (sudo systemctl disable anydesk.service), és le kell állítanod a szolgáltatást (sudo systemctl stop anydesk.service)? Hm... . Szerencsére, nem feltétlen, hiszen, két lehetséges megoldást közöltem.

Ha ebbe az „érdekességbe” belekezdtél, akkor a javítás megkezdéséhez vond vissza a csak olvasási jogosultságot, azaz, tedd a fájlt írhatóvá is:

sudo chattr -i /etc/systemd/system/anydesk.service

Enjoy :-))

Hozzászólások