Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.

Autor Téma: Automatické uspání disku po startu OS  (Přečteno 606 krát)

KoXz666

  • Návštěvník
  • *
  • Příspěvků: 23
    • Zobrazit profil
Automatické uspání disku po startu OS
« kdy: 29 Září 2021, 17:38:04 »
Ahoj, jsem docela začátečník, tak snad mne omluvíte, odpověď je jistě snadná, jen ji nemůžu dogooglit :)

udělal jsem si soubor priklad.sh udělil mu spouštecí práva, vložil do něj co potřebuji, konkrétně:

#!/bin/bash
sleep 30s
sudo hdparm -y /dev/sdb

A nyní už potřebuji jen přijít na to, jak to spouštět automaticky po startu OS? Tu není asi složka "po spuštění" jako na Win? :D Resp, v gnome-tweaks je možnost přidat aplikaci po spuštění. Ale jen aplikaci, ne skript.. Nebo jde udělat z toho skriptu aplikace?

Děkuji

juwa2

  • Závislák
  • ****
  • Příspěvků: 4333
    • Zobrazit profil
Re:Automatické uspání disku po startu OS
« Odpověď #1 kdy: 29 Září 2021, 19:24:54 »
Je to jednodušší, než si myslíš.... :)
1. Ta aplikace (v nastavení té aplikace) jednoduše nastavíš cestu k tomu skriptu.
2. Budeš se možná divit, ale tzv. složka "po spuštění" samozřejmě existuje:
Kód: [Vybrat]
~/.config/autostart
Nicméně do ní se dávají nikoli (přímo) skripty, ale soubory *.desktop ve kterých je v parametru "Exec=" napsána cesta k tomu skriptu.

Ale má to jeden háček:
Pokud je v příkazu (skriptu) použito "sudo", takový skript se po přihlášení nespustí (kdo by zadal heslo??).
Co s tím?
Ano, i takový skript lze automaticky spustit (aniž by bylo potřebné zadávat heslo), je mu ale třeba udělit výjimku v "sudoers"
http://unix.stackexchange.com/questions/18830/how-to-run-a-specific-program-as-root-without-a-password-prompt

Kód: [Vybrat]
sudo visudo EDITOR=nano
A přidat tam řádek s cestou ke skriptu.
Zapsat  (ctrl+o)
Uložit (enter)
Ukončit editor (ctrl+x)

Pak už půjde skript spouštět bez nutnosti zadávat root heslo, tím pádem půjde použít v autostartu.... ;)
----------------------------------------------------------------------------------------------------------------------
No, ale v případě toho hdparm se nabízí ještě jedna možnost:
Nastavit mu práva na u+s
Kód: [Vybrat]
sudo chmod u+s "/cesta/k/hdparm"
Pak můžeš to sudo z příkazu vynechat a spouštět to normálně jako běžnou aplikaci, tj. napsat do autostartu příkaz bez "sudo"...

« Poslední změna: 30 Září 2021, 06:06:12 od juwa2 »

KoXz666

  • Návštěvník
  • *
  • Příspěvků: 23
    • Zobrazit profil
Re:Automatické uspání disku po startu OS
« Odpověď #2 kdy: 29 Září 2021, 22:02:27 »
Myslím, že jsem z toho větší jelen než předtím :D
Přidal jsem do /etc/sudoers řádky, co by to měli umožnit:

# User privilege specification
skynet  ALL=(root) NOPASSWD: /home/skynet/.KoXz/hdd_standby.sh
nebo
skynet  ALL=(ALL) NOPASSWD: /home/skynet/.KoXz/hdd_standby.sh
nebo
%sudo   ALL=(root) NOPASSWD: /home/skynet/.KoXz/hdd_standby.sh

ale furt jsem tázán na heslo i po restartu.  Co dělám špatně?

Druhá varianta taky nezabírá
Když odstraním příkaz sudo ze scriptu a dám:
sudo chmod x+s hdd_standby.sh
tak dostanu: chmod: invalid mode: ‘x+s’

když
sudo chmod +x+s -v hdd_standby.sh
dostanu: mode of 'hdd_standby.sh' changed from 0775 (rwxrwxr-x) to 6775 (rwsrwsr-x)
Je to správně? Nicméně disk takhle neuspím.. (chybovou hlášku to neukáže)
Není to zase tak easy :D ale to dáme, jen ještě malou nápovědu pls :-)

Ještě doplním Pop os
« Poslední změna: 29 Září 2021, 23:12:55 od KoXz666 »

West

  • Člen
  • **
  • Příspěvků: 371
    • Zobrazit profil
Re:Automatické uspání disku po startu OS
« Odpověď #3 kdy: 29 Září 2021, 23:04:12 »
Uspávanie disku nemá moc zmysel, pretože už to, že sa ten disk roztočí mu uberá na životnosti.
No a keďže ty zrejme ten disk potrebuješ len občas, tak roztáčanie pri každom štarte systému je tak trochu od veci. Riešil som rovnaký problém. Vyriešil som ho USB diskom v boxe, ktorý má vypínač.

KoXz666

  • Návštěvník
  • *
  • Příspěvků: 23
    • Zobrazit profil
Re:Automatické uspání disku po startu OS
« Odpověď #4 kdy: 29 Září 2021, 23:25:12 »
Jde o to, že to je disk, na kterém jsou věci jen pro windows a navíc je hlučný. Takže když jsem na linuxu, ten disk může spát.. Stejně ho uspávám manuálně hlavně kvůli tomu zvuku, tak bych to rád zautomatizoval..
Rozumím, tím, že ho budu uspávat, bude se roztáčet vlastně 2x tak často.. To beru.. Nejsou tam nějak důležitá data, tak jsem ochotný mu zkrátit životnost
« Poslední změna: 29 Září 2021, 23:42:30 od KoXz666 »

West

  • Člen
  • **
  • Příspěvků: 371
    • Zobrazit profil
Re:Automatické uspání disku po startu OS
« Odpověď #5 kdy: 30 Září 2021, 00:04:20 »
Vyskúšaj dať ten skript do /bin.

Ja to mám napríklad takto
Kód: [Vybrat]
## Network
Cmnd_Alias NETK = /usr/bin/ntpdate, /sbin/dhclient, /sbin/ip

west<------>ALL=(ALL)<----->NOPASSWD: NETK

Tiež je dôležité aby tam bolo toto:
Defaults   !visiblepw
« Poslední změna: 30 Září 2021, 00:15:58 od West »

juwa2

  • Závislák
  • ****
  • Příspěvků: 4333
    • Zobrazit profil
Re:Automatické uspání disku po startu OS
« Odpověď #6 kdy: 30 Září 2021, 05:52:25 »
Myslím, že jsem z toho větší jelen než předtím :D
Přidal jsem do /etc/sudoers řádky, co by to měli umožnit:

# User privilege specification
skynet  ALL=(root) NOPASSWD: /home/skynet/.KoXz/hdd_standby.sh
nebo
skynet  ALL=(ALL) NOPASSWD: /home/skynet/.KoXz/hdd_standby.sh
nebo
%sudo   ALL=(root) NOPASSWD: /home/skynet/.KoXz/hdd_standby.sh

ale furt jsem tázán na heslo i po restartu.  Co dělám špatně?

Druhá varianta taky nezabírá
Když odstraním příkaz sudo ze scriptu a dám:
sudo chmod x+s hdd_standby.sh
tak dostanu: chmod: invalid mode: ‘x+s’

když
sudo chmod +x+s -v hdd_standby.sh
dostanu: mode of 'hdd_standby.sh' changed from 0775 (rwxrwxr-x) to 6775 (rwsrwsr-x)
Je to správně? Nicméně disk takhle neuspím.. (chybovou hlášku to neukáže)
Není to zase tak easy :D ale to dáme, jen ještě malou nápovědu pls :-)

Ještě doplním Pop os

Zadávej cestu nikoli k tomu skriptu, ale k hdparm (= /sbin/hdparm)
Takže ten řádek v sudoers musí být:
Kód: [Vybrat]
skynet  ALL=NOPASSWD: /sbin/hdparm
Příkaz ve skriptu necháš jak je:
Kód: [Vybrat]
#!/bin/bash
sleep 30
sudo hdparm -y /dev/sdb

Případně ta práva:
Kód: [Vybrat]
sudo chmod u+s /sbin/hdparm
Pokud by práva nešla změnit, tak nejprve převezmi vlastnictví:
Kód: [Vybrat]
sudo chown skynet:skynet /sbin/hdparm
sudo chmod u+s /sbin/hdparm

Potom příkaz bude:
Kód: [Vybrat]
#!/bin/bash
sleep 30
hdparm -y /dev/sdb

Takže snad ti to už poběží, na takovéto blbině není důvod si "vylámat zuby".... ;)
« Poslední změna: 30 Září 2021, 06:51:46 od juwa2 »

GdH

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 3133
    • Zobrazit profil
    • GdH-Notes
Re:Automatické uspání disku po startu OS
« Odpověď #7 kdy: 30 Září 2021, 14:09:12 »
...na takovéto blbině není důvod si "vylámat zuby".... ;)

Na "takovéto blbině" hlavně není důvod kompromitovat zabezpečení systému. Dávat právo spouštět potenciálně nebezpečné příkazy čemukoli, co uživatel spustí, není zrovna chytré.
Doporučil bych seznámit se se systemd, může se to hodit. Jako obvykle nabízí pěkný přehled arch wiki:
https://wiki.archlinux.org/title/Hdparm#Putting_a_drive_to_sleep_directly_after_boot

Pár poznámek k těm výše uvedeným radám:
  • Když už dávám výjimku do sudoers (protože fakt není lepší řešení), ujistím se, že tak půjde spouštět jen ten jeden konkrétní příkaz, nedám tedy výjimku na celý hadparm, kterým lze například smazat disk, ale pouze na jeho konkrétní použití, tedy i s přepínačem -y a cestou ke konkrétnímu disku v tomto případě.
  • SetUID flag (u+s) umožní spustit binárku s právy vlastníka komukoliv, kdo ji může spouštět, tedy standardní uživatel pak může spustit systémový program s právy roota i bez zadání sudo a hesla, což je v tomto případě stejné jako předchozí případ - bezpečnostní díra. Změnit vlastníka programu z roota na uživatele a pak mu nastavovat setuid flag nedává proto v tomto případě smysl žádný, nemluvě o tom, že měnit vlastníka systémových souborů je obecně hloupost.