Ήταν κάτι που χρειάστηκα και τελικά κατάφερα να κάνω.
Για να μην πλατιάσω δεν θα μπω σε λεπτομέρειες του τι ήθελα να κάνω και γιατί, αλλά θα μπω κατευθείαν στο ψητό:
Πως να εκτελέσεις μια ή περισσότερες ενέργειες με την εντολή sudo χωρίς να απαιτείται κωδικός.
Βήμα 1: Δημιουργία Custom Script
Σε οποιονδήποτε editor δημιούργησε ένα αρχείο .sh
με την εντολή που θέλεις να τρέξεις. Για παράδειγμα αυτό που έκανα εγώ:
#!/bin/sh
ln -s /media/ /run
Στη συνέχεια αποθήκευσε το ως filename.sh
στην τοποθεσία της αρεσκείας σου. Εγώ το αποθήκευσα ως symlinkit.sh
στο ~/Documents
. Με το πέρας της διαδικασίας μην ξεχάσεις να κάνεις το αρχείο .sh
εκτελέσιμο (executable).
Σημαντικό: Σ’ αυτό το σημείο, για λόγους ασφαλείας, πριν προχωρήσουμε στο επόμενο βήμα κάνουμε αρχείο .sh
writable μόνο απο τον root:
sudo chown root:root ~/Documents/symlinkit.sh
Με ls -l ~/Documents/symlinkit.sh
μπορώ να τσεκάρω τα δικαιώματα του αρχείου.
Βήμα 2: Δημιουργία Symbolic Link του αρχειου filename.sh
στο /usr/bin
Στην δική μου περίπτωση άνοιξα ένα τερματικό και έδωσα την εντολή:
sudo ln -s ~/Documents/symlinkit.sh /usr/bin/symlinkit
Τώρα δίνοντας στο τερματικό την (custom) εντολή sudo symlinkit
εκτελείται η εντολή που έβαλα στο αρχείο symlinkit.sh
Είμαι σχεδόν έτοιμος, το μόνο που μένει είναι να κάνω την συγκεκριμένη εντολή να τρέχει χωρίς την απαίτηση κωδικού στο επόμενο και τελικό βήμα.
Βήμα 3: Προσθήκη εξαίρεσης κωδικού της εντολής
Δίνω στο τερματικό την εντολή
sudo EDITOR=nano visudo
Και προσθέτω στο αρχείο sudoers.tmp
την ακόλουθη γραμμή:
vasilis ALL=(ALL) NOPASSWD:/usr/bin/symlinkit
Όπου vasilis
βάζεις το δικό σου όνομα χρήστη. Και στο NOPASSWD:
το δικό σου symbolic link που βρίσκεται εντός του /usr/bin/
.
Για περισσότερες απο μια εξαιρέσεις κωδικού χρησιμοποιείται το κόμμα, για παράδειγμα:
vasilis ALL=(ALL) NOPASSWD:/usr/bin/symlinkit,/usr/sbin/reboot
(ω ναι, το reboot και το shutdown βρίσκονται στο /usr/sbin
και φυσικά μπορείτε να προσθέσετε εξαιρέσεις και για μη ‘καστομιές’ )