Assegnare privilegi root ad utente base solo su uno script bash

Ciao a tutti.
Ho fatto un sacco di ricerche ma non sono riuscita a trovare soluzione. Ho la necessità di far eseguire all’utente di base uno script bash con all’interno comandi da root.
Quello che ho fatto è inserire la seguente riga:

nomeutente localhost=ALL: /path/script.sh

alla fine del file /etc/sudoers

ma quando lo vado ad eseguire (il file ha proprietà di esecuzione per tutti) mi dà l’errore:

Failed to issue method call: Access denied

Questo era soltanto l’ultimo di una serie di tentativi. Praticamente sto cercando di avviare con questo script il server apache come indicato da guida: systemctl start httpd.service.
Dimenticavo: ho una Fedora 17 Robotics.
Qualcuno può aiutarmi?
Grazie a tutti.

Mic

questo script deve solo avviare il server apache ?

oieaaaa! è molto semplice, lo riporto

#!/bin/bash

systemctl start httpd.service
systemctl start mysqld.service

ma systemctl è di prerogativa root, non mi sembra una buona idea dare all’utente questa facoltà.
puoi lanciare lo script semplicemente con:

$ su -c "/percorso/script.sh"
#!/bin/bash

su -c 'systemctl start httpd.service;systemctl start mysqld.service'

Questa è un’altra alternativa.

Ho provato ma in questo modo mi chiedeva comunque la password di amministratore, io invece vorrei che l’utente normale potesse avviare lo script senza dover digitare alcuna password.
Allora ho pensato di inserire il comando come un alias nel file /etc/bashrc… però ho rotto il file… esatto: avendolo eseguito con un echo ‘…’ > /etc/bashrc ho dimenticato di mettere il > doppio… così il mio file bashrc è ora di una sola riga. Ho provato a reinstallare la shell bash ma mi ha lasciato il file inalterato, quindi:

  1. da dove posso copiare il vecchio file /etc/bashrc?
  2. è stata una cattiva idea o potrebbe essere la soluzione che cerco?
    Grazie a tutti!

Mic impiastrona!

[quote=omegaub]da dove posso copiare il vecchio file /etc/bashrc?
[/quote]

[marco@localhost ~]$ yum provides /etc/bashrc
Plugin abilitati:langpacks, presto, refresh-packagekit
setup-2.8.48-1.fc17.noarch : A set of system configuration and setup files
Repo         : fedora
Corrispondenza trovata in:
Nome file   : /etc/bashrc



setup-2.8.48-1.fc17.noarch : A set of system configuration and setup files
Repo         : @anaconda-0
Corrispondenza trovata in:
Nome file   : /etc/bashrc



[marco@localhost ~]$ 

Quindi direi:

# yum reinstall setup-2.8.48-1.fc17.noarch

[quote=marcomotta]
Quindi direi:

# yum reinstall setup-2.8.48-1.fc17.noarch

Oppure (inizia da utente normale):

mkdir bashrc-omegaub
cd bashrc-omegaub
yumdownloader setup-2.8.48-1.fc17.noarch
rpm2cpio setup-2.8.48-1.fc17.noarch.rpm | cpio -ivd
su -c "cp etc/bashrc /etc/bashrc"
cd ..
rm -rf bashrc-omegaub

Così ripristini solo il file che ti interessa.

[quote=marcomotta][quote=marcomotta]
Quindi direi:

# yum reinstall setup-2.8.48-1.fc17.noarch

Oppure (inizia da utente normale):

mkdir bashrc-omegaub
cd bashrc-omegaub
yumdownloader setup-2.8.48-1.fc17.noarch
rpm2cpio setup-2.8.48-1.fc17.noarch.rpm | cpio -ivd
su -c "cp etc/bashrc /etc/bashrc"
cd ..
rm -rf bashrc-omegaub

Così ripristini solo il file che ti interessa.[/quote]
Mi sorge un dubbio: non vorrei che, con il file /etc/bashrc “andato”, i comandi su terminale non funzionassero. Se non riesci a lavorare da terminale, cerca di scaricare setup-2.8.48-1.fc17.noarch.rpm, aprilo con file roller (o con qualunque gestore di archivi), ed estrai il file etc/bashrc. In qualche modo questo file andrà copiato (come root) nella /etc del tuo sistema.

[quote=omegaub]Ho provato ma in questo modo mi chiedeva comunque la password di amministratore, io invece vorrei che l’utente normale potesse avviare lo script senza dover digitare alcuna password.
[/quote]
non è una buona idea, comunque dovrebbe bastare la modifica del file:

[code]# cat /usr/share/polkit-1/actions/org.freedesktop.systemd1.policy

<?xml version="1.0" encoding="UTF-8"?>
    <vendor>The systemd Project</vendor>
    <vendor_url>http://www.freedesktop.org/wiki/Software/systemd</vendor_url>

    <action id="org.freedesktop.systemd1.reply-password">
            <description>Send passphrase back to system</description>
            <message>Authentication is required to send the entered passphrase back to the system.</message>
            <defaults>
                    <allow_any>no</allow_any>
                    <allow_inactive>no</allow_inactive>
                    <allow_active>auth_admin_keep</allow_active>
            </defaults>
            <annotate key="org.freedesktop.policykit.exec.path">/usr/lib/systemd/systemd-reply-password</annotate>
    </action>

    <action id="org.freedesktop.systemd1.bus-access">
            <description>Privileged system and service manager access</description>
            <message>Authentication is required to access the system and service manager.</message>
            <defaults>
                    <allow_any>no</allow_any>
                    <allow_inactive>no</allow_inactive>
                    <allow_active>auth_admin_keep</allow_active>
            </defaults>
            <annotate key="org.freedesktop.policykit.exec.path">/usr/bin/systemd-stdio-bridge</annotate>
    </action>

[/code]
e sostituire le entry “auth_admin_keep” in “yes” per usare i comandi di systemd da utente.

Ricapitolando: ho seguito la procedura di marcomotta per ripristinare il file/etc/bashrc… non ha funzionato in quanto il sistema è stato talmente educato e rispettoso che ha reinstallato TUTTO conservando il file /etc/bashrc con le ultime configurazioni (cioè nulla). Quindi, incrociando le dita ho “cancellato” ciò che restava del file, reinstallato il setup-… … ed ha funzionato!
Ora, se faccio la modifica relativa al file del systemd ogni utente è libero di attivare qualsiasi servizio e non è quello che voglio.
Non è possibile all’interno del file /etc/sudoers aggiungere l’utente indicando che ha tutti i privilegi sullo script indicato e sul suo contenuto senza dover digitare password? Pensavo di “blindare” lo script riducendo i permessi a sola esecuzione per utenti macchina e guest, in modo da non poterlo utilizzare indiscriminatamente.
Altrimenti, creare l’alias con gli stessi comandi non è possibile? Quali files dovrei gestire nell’ordine dei permessi, /etc/bashrc, /etc/profile o?
Purtroppo sono alquanto ignorante riguardo queste configurazioni.
Grazie a tutti quanti!

Mic che non si accontenta :wink:

in sudoers:

nome_utente localhost = NOPASSWD: /percorso/del/comando

non sono daccordo su questa cosa, la sicurezza va a gambe all’aria.

Fatto ma mi dice “Access deniend”, per questo avevo pensato ad inserire l’alias. Ma anche quest’ultimo non funziona

Mic scoraggiata

come esegui la modifica a /etc/sudoers ?