Κωδικός για superuser σε bash script

Όταν μπαίνω σε kubuntu (ένα από τα τρία λειτουργικά που έχω) μου αλλάζει τις ρυθμίσεις για το wake on lan. Πράγματι το είδα με sudo ethtool enp5s0
Μου έβγαλε wake on d και όχι g που ήταν ήδη ρυθμισμένη η κάρτα δικτύου (από ubuntu σε άλλο partition).
Αποτέλεσμα να μη μου δουλεύει το wake-on-lan και να μην ανάβει ο υπολογιστής με φωνητική εντολή.

Αλλάζω λοιπόν αυτή τη ρύθμιση από τερματικό με

sudo ethtool -s enp5s0 wol g

Και όλα καλά. Το ελέγχω πάλι από τερματικό και μου βγάζει g δηλαδή αυτό που χρειάζεται να είναι για να δουλεύει σωστά. Αν κλείσω τώρα τον υπολογιστή και μετά δώσω τη φωνητική εντολή στο βοηθό, θα λειτουργήσει το wake-on-lan και θα ανοίξει ο υπολογιστής.
Τον ξανά κλείνω λοιπόν, ξανά προσπαθώ μετά για το magic packet και τζίφος. Τον ανοίγω κανονικά πάω κάνω έλεγχο και βλέπω ότι μου το έχει μετατρέψει σε d δηλαδή disabled. Έψαξα γιατί δεν αποθηκεύονται οι ρυθμίσεις και δεν βρήκα κάτι.

Μου ήρθε λοιπόν η ιδέα να φτιάξω ένα scriptάκι και να το βάλω στο auto start

#!/bin/bash
pkexek ethtool -s enp5s0 wol g

Στην επόμενη είσοδό μου στο σύστημα μου είχε στην εκκίνηση παραθυράκι για να βάλω τον κωδικό μου. Μία χαρά λειτουργεί και ξαναγράφει τη ρύθμιση για το wake on εκεί που τη γράφει.

Μπορώ να βάλω το password μέσα στο σκριπτάκι ώστε να μη μου βγαίνει το παράθυρο και να πρέπει να το γράφω κάθε φορά;

Για λόγους ασφαλείας, καλό είναι να αποφεύγονται λύσεις χωρίς την εισαγωγή κωδικού.

Παρά ταύτα, αν επιμένεις…
Φτιάξε /etc/sudoers.d/01-sudoers με περιεχόμενο

user ALL=(ALL) NOPASSWD: /absolute/path/to/script

1 «Μου αρέσει»

Κακή ιδέα, πολύ κακή ιδέα. Να έχεις αποθηκευμένο τον κωδικό κάπου, κακή ιδέα. Το suduers είναι μια λιγότερο κακή ιδέα μπροστά στην παρακάτω που είναι μια απαίσια φρικτή ιδέα που θα έπρεπε να είχε απαγορευτεί από την εκκλησία

2 «Μου αρέσει»

Παιδιά ευχαριστώ.
Το ξέρω αυτό που λέτε για την ασφάλεια. Έχω απάντηση όμως. Είναι… “Σιγά μωρέ! Δεν γ…ται!”. Και παιδιά το εννοώ. Μια ζω´η στην προσοχή και στους αυτιστικούς προγραμματισμούς και ρουτίνες. Όχι άλλο βρε συ! Ας μπούνε στον λογαριασμό μου κι ας κλέψουν το πολύ μέχρι δύο χιλιάρικα από θα έχει εκείνη τη στιγμή. Αρκεί να πέσουν στη μέρα που θα είναι τόσα. Πιο μετά θα είναι το πολύ κάνα 200άρι. Δεν μιλάω για τέλος του μήνα. Εκεί θα τους λυπηθώ πολύ.

Εντάξει δεν το προτείνω σαν στάση ζωής, αλλά… το προτείνω σαν στάση ζωής. Άμα πια!

Αυτό λέω να κάνω
user ALL=(ALL) NOPASSWD: /absolute/path/to/script

Και θα το κάνω από δω από δω την ubuntu. Να κάνω login μετά συο άλλο να το ελέγξω κατ’ ευθείαν.

Ας ήταν καλοί άνθρωποι εκεί στο kde να το έκαναν να αποθηκεύονται οι ρυθμίσεις.

(Χμμμ… μου ήρθε τώρα ιδέα για πρόταση να μαζέψουμε κάπου τι ζητήματα έχουν προκυψει κατά καιτούς σε όλους μας και έχουν να κάνουν με την αποθηκευση ρυθμίσεων. Μου ήρθαν μάνι μάνι δυό που θυμάμαι. Ένα στο compiz παλιά, αλλά έχω ξεχάσει τι. Κι ένα με το εικονιδιάκι του ήχου που δεν αποθήκευε το πια συσκευή είναι η επιλεγμένη, πρωτεύον μικρόφωνο, ένταση ήχου που σε κάθε είσοδο ήταν μιουταρισμένη. (Λέω εικονιδιάκι ήχου για πάει συνειρμικά το μυαλό σας. Εννοείται ότι δεν είμαι σε θέση να το πω σωστά. Αν είναι το pulse audio ή η alsa ή ό,τι είναι τέλος πάντων)

Λοιπόν και πάλι ευχαριστώ.

Το ethtool παρακάμπτει τις ρυθμίσεις του KDE οπότε λογικό αυτή να μην αποθηκεύεται. Άμα μπεις στο wired στα connections στο system settings θα πρέπει να υπάρχει σε μια από τις καρτέλες ρύθμιση για wake-on-lan. Για άλλα συστήματα που μπορεί να μην έχουν αντίστοιχο panel υπάρχουν κάμποσοι άλλοι τρόποι να γίνει.

https://wiki.archlinux.org/title/Wake-on-LAN#Make_it_persistent

Ο τελευταίος τρόπος (NetworkManager) είναι τι κάνει το KDE μέσω του GUI.

1 «Μου αρέσει»

Πήγα κάνα δυο φορές στις ρυθμίσεις. Δεν υπάρχει πουθενά κάτι για wake on lan.


Σε καμία καρτέλα, ούτε και στο “Ρυθμίσεις” αριστερά στην πλευρική στήλη που βλέπεις το “Δίκτυο”.

Το είδα κάτω κάτω το σχετικό με network manager. Δεν κατάλαβα τίποτα γαμώτο. Είμαι και κουρασμένος γιατί τέτοια ώρα γυρνάω από τη δουλειά.
Εσένα σου είναι εύκολο να μου γράψεις εδώ ποια εντολή να δώσω;
Σαφώς και είναι προτιμότερο να κάνω τέτοια ρύθμιση από το να παίζω με Σούντοερς.

@m01 Δεν μου δούλεψε. Στην αρχή βέβαια έβαλα τη λέξη “user”. Μετά το όνομα χρήστη.
Έπαιξα και με τα κενά στην πρόταση μπας και παίζει ρόλο.

Μου έβγαλε κι ένα μήνυμα:

~$ sudo ethtool enp9s0 
sudo: το /etc/sudoers.d/01-sudoers κατέχεται από uid 1000, θα έπρεπε να είναι 0

Πάντως όπως και να χει, μου έβγαλε πάλι παραθυράκι που ζητάει κωδικό. πατάω ακύρωση και κοιτάω μετά την κατάσταση wake

Supports Wake-on: pumbg
 Wake-on: d

Διόρθωσις:
(Η κατάληξη “σις” είναι επιτηδευμένη για να δηλωθεί ακόμα πιο ελληνικά - καθαρευουσιάνικα - και να αντιδράσω έτσι στο πολυφορεμένο “Edit”. Πως έχουμε καταντήσει να εκφραζόμαστε το κέρατό μου!)

Το έκανα με το κομμάτι που αναφέρεται στο network manager. Όλα καλά. Έσβησα και το σεναριάκι από την εκκίνηση. Είναι πλέον ενεργοποιημένο από μόνο του. :+1:

:hugs:

Στο nm-applet (το GTK GUI) υπάρχει (δες εικόνα)

22.10.04-13.00.54_win_maim

οπότε περίμενα να υπήρχε και στο GUI του KDE.

Σε δοκιμή που έκανα η παρακάτω εντολή φαίνεται να δουλεύει

nmcli c m $(nmcli -g uuid,type c | awk -F: '/ethernet/{print $1}') 802-3-ethernet.wake-on-lan magic

Edit: Αν και μόλις είδα ότι τελικά το έκανες.

1 «Μου αρέσει»

@Poor

Στη θέση σου θα ασχολούμην να κατανοήσω το μήνυμα. Το συγκεκριμένο είναι απολύτως ουσιώδες. Τόσο που το κάνει επικίνδυνο για τη διανομή που τρέχεις.

Επί του πρακτέου.
Εχεις επιτύχει το σκοπό σου χρησιμοποιώντας gui, χωρίς να καταλαβαίνεις πως γίνεται αυτό.
Way to go.

1 «Μου αρέσει»

Εδώ που τα λέμε θέλω να ξέρω. Χθες ήμουν τόσο πτώμα που είδα τη σελίδα που μου έδειξε ο konfou και πελάγωσα. Δεν είχα τη δύναμη να αντιγράφω κείμενο για το gogle trnslate. Συνήλθα κάποια στιγμή, έκανα αυτό με τον network manager και έσβησα το σεναριάκι. (Δεν μπορεις να πεις όμως! Έκανα μία εύστοχη σκέψη με το να ξαναθέτω τη ρύθμιση)

Αλλά τι γίνεται αλήθεια αν θες να τρέξεις μόνο ένα σκριπτάκι χωρίς να πληκτρολογείς κωδικό; Δεν λέω το κάθε sudo που θα δίνεις στην κονσόλα. Λέω μόνο για ένα σκριπτ, με κλικ (ή autostart εν προκριμένω); Δεν γίνεται να γράψεις τον κωδικό στο ίδιο το αρχείο και όχι να γράψεις στο /etc όλα αυτά τα ALL ALL κλπ;

Αλήθεια γιατί μου έλεγε ότι πρέπει να είναι μηδέν; θυμάμαι μια ζωή αυτό το uid 1000 χωρίς να ξέρω τι σημαίνει ή με τι έχει να κάνει. (Εντάξει μη με αφορίζεις. Ξέρω καλά από ψυχολογία, δουλειές και μαστορικά του σπιτιού :blush:)

Καλημέρα σου. Ελπίζω ξεκούραστος.

Μου φαίνεται πως οι δυό μας ετοιμαζόμαστε να δώσουμε (επιτέλους) τον ακριβή ορισμό του “ελεύθερο λογισμικό”. Η μέχρι σήμερα επικρατούσα άποψη ήταν… το τζάμπα. Λάθος!
Ελεύθερο σημαίνει -->> ελεύθερα ξεσκίστε με :smiley:

Μετά από αυτά, ας δούμε γιατί ο νέος ορισμός είναι ο σωστός.

Κάποιοι παντελώς ηλίθιοι προγραμματιστές, δόμησαν τα αρχεία UNIX και αργότερα linux βάσει (και) δικαιωμάτων ανάγνωσης-εγγραφής-εκτέλεσης ανάλογα με ποιός ήταν ο χρήστης που δούλευε στον υπολογιστή. Και επέτρεψαν να αλλάζουν αυτά τα δικαιώματα από τον κάθε ταρζάν που καθόταν μπροστά στο πληκτρολόγιο και αντέγραφε εντολές που κάποιος άλλος ουρανοκατέβατος σαν και μένα τους παρέθετε στο διαδίκτυο.
Με αποτέλεσμα …
Για όλα φταίει το linux και δεν καταλαβαίνω γιατί είναι τόσο δύσκολο να γίνουν όλα με ένα κλικ όπως στα γουίντουζ. Σωστά;

Αρα ελεύθερο λογισμικό = μπάχαλο (άλλη λέξη μου έρχεται)

Ειρήσθω εν παρόδω, οι ανεκδιήγητοι αυτοί τυπάκοι -οι προγραμματιστές ντε- είχαν στο μυαλό τους τα εξής.
/etc/sudoers & υποφάκελλος /etc/sudoers.d να αγγίζονται μόνο από τον χρήστη 0 που ανήκει στην ομάδα 0. Δηλαδή τον root. Τέλος. Ούτε μα ούτε σου. Και για να το κάνουν χειρότερο, μόνο με visudo αγγίζονται τέτοια αρχεία γιατί έχει (έτσι λένε) σημασία η ορθογραφία. Κούνια που τους κούναγε (EDITOR=nano visudo και άντε γειά).
Ευτυχώς όμως κάτι λεβεντολεβέντες σαν και μένα βρίσκουν τρόπους να παρακάμψουν τα θέματα ιδιοκτησίας φακέλλων.
Ελεύθερο λέμε. :rofl:

Αγαπητέ @Poor σε ευχαριστώ που με βοήθησες να λύσω αυτόν τον χρονίζοντα γρίφο για το ελεύθερο λογισμικό.

Στη διάθεσή σου για νέες αναζητήσεις.

3 «Μου αρέσει»

Καλημέρα και σε σένα. Ωραία τα λες :grin:

Η αλήθεια είναι ότι αυτό το 01-sudoers το έγραψα με τον κειμενογράφο ως χρήστης από άλλη κατάτμηση στο δίσκο. Άνοιξα τον Υπερίωνα

Στιγμιότυπο στο 2022-10-05 13-02-38

(Υπερίωνας είναι ο superuser caja. Αυτό το άσπρο στην εικόνα και το έχω για να μην το κάνω από τερματικό κάθε φορά)
και το αντέγραψα απλά στο /etc της kubuntu (άλλη κατάτμηση).
Θα το ξανακάνω ένα πειραματάκι. θα το γράψω με sudo su από κονσόλα και να είμαι μέσα στο φάκελο /etc.
Σκέφτηκα και ότι με δεξί κλικ και ιδιότητες, στον dolphin έχει κουμπάκια που σε πάει εκεί που λέει
UUID χρήστη και τέτοια και έχει κουτάκια να τικαρεις. (Χρόνια βλεπω και τη λέξη “Κολλημένο” εκεί πέρα. Το είχα αλλάξει μπας και πάρω ιδέα τι στα κομμάτια είναι αυτό το πράγμα. μετά το άφησα και δεν έχω ασχοληθεί ποτέ με την κατανόηση εκείνου του τομέα

Λινουξάρα ρε! Ανοίγει το μυαλό. Οργανώνει τη σκέψη σου, κινητοποιεί τη δημιουργικότητα σου (ως μηχανισμό αναφέρω τη δημιουργικότητα)

υπαρχει και αυτη η καφρικη τσαρλατανια:

sudo -S ethtool -s enp5s0 wol g < /path/to/passwordfile

το «passwordfile» ειναι ενα απλο αρχειακι κειμενου που εχεις αποθηκευμενο τον κωδικο χρηστη. εχω χρησιμοποιησει παλιοτερα αυτη την τσαρλατανια, αλλα δεν την προτεινω γιατι ποτε δεν μπορεις να εισαι απολυτα σιγουρος οτι δεν θα διαρρευσει/αλλοιωθει το «σκριπτακι», η, το αρχειακι με τον κωδικο χρηστη

αλλα δεν την προτεινω γιατι ποτε δεν μπορεις να εισαι απολυτα σιγουρος οτι δεν θα διαρρευσει/αλλοιωθει το «σκριπτακι», η, το αρχειακι με τον κωδικο χρηστη

Δεν πειράζει. Καλό είναι να το ξέρουμε ως λύση.
Σ’ ευχαριστώ.

Απορώ που κανένας ακόμα δεν πρότεινε τη λύση του suid bit. Αν ένα εκτελέσιμο έχει το suid bit θα τρέξει σαν τον χρήστη που κατέχει το αρχείο, χωρίς να απαιτείτε κωδικός.

Το suid δε θεωρείτε σήμερα ασφαλές, αλλά σε κάποιες περιπτώσεις είναι μια λύση.

Επίσης, ξανακοιτάζω την ερώτηση και το όλο θέμα είναι να τρέχει μια εντολή κατά την εκκίνηση του υπολογιστή. Μα αυτό ακριβώς δεν κάνει μια υπηρεσία εκκίνησης;

sudo gedit /etc/systemd/system/ethtool-prepare.service

με τα παρακάτω:

[Unit]
Description=Setup ethtool for wol
Wants=network.target
After=network-online.target

[Service]
Type=oneshot
ExecStart=ethtool -s enp5s0 wol g
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

και μετα

systemctl daemon-reload
systemctl enable ethtool-prepare.service

ΥΓ1: Συγνώμη που δεν έδωσα το πρέπον βάρος στις απαντήσεις μου, αλλά τρεχάματα :slight_smile:

YΓ2: Υπάρχει ειδικός τρόπος να διορθώνουμε το αρχείο sudoers. Είναι η εντολή visudo, αυτή φροντίζει να γίνουν σωστά οι αλλαγές. Επίσης, και πολύ σημαντικό ελέγχει για σφάλματα (ω ναι την έχω πατήσει και μου έμεινε σύστημα στα χέρια).

Είναι πολύ σημαντικό να ανήκει αυτό το αρχείο στον χρήστη root. Θα πρέπει να φτιαχτεί με chown άμεσα. Ίσως, με ένα visudo και αποθήκευση χωρίς αλλαγές να φτιάξει μόνο του.

4 «Μου αρέσει»