permesso sudo negato ma permesso su su


11

questa è la prima occorrenza in cui su è stato richiesto per me.

Ho letto un articolo sulla modifica del valore in / sys / devices / virtual / backlight / acpi_video0 / luminosità per modificare la luminosità dello schermo del mio laptop.

Ho notato per la prima volta che quando $ sudo echo 10 > brightnessavrei voluto ottenere il permesso negato.

Sono passato a root usando su e # echo 10 > brightnessho cambiato la mia luminosità quasi istantaneamente.

L'ultima cosa strana a me è successa quando ho provato # echo 20 > brightness(il file maxbrightness contiene il valore 15) e ho ricevuto un errore di scrittura

Qualcuno potrebbe spiegare questa differenza tra sudo e su per me? Comprendere l'errore di scrittura sarebbe un ulteriore vantaggio. Qualsiasi aiuto, puntatore e / o link sarebbe molto apprezzato.


Risposte:


17

Il reindirizzamento non funziona in questo modo. L'aggiunta >a un comando eseguirà quel reindirizzamento come utente invocante (tu) e non come root. Fallo con tee:

echo 20 | sudo tee /sys/devices/virtual/backlight/acpi_video0/brightness

o invocando il comando in una shell privilegiata separata:

sudo bash -c "echo 20 > /sys/devices/virtual/backlight/acpi_video0/brightness"

Come la punta del tee. Non mi era venuto in mente durante i miei 15 anni di sysadmining unix :-) Ovvio quando visto.
Shark,

8

Questo non è a causa di sudo, è a causa del modo in cui il comando viene elaborato; In realtà l'ho spiegato in questa domanda . Quando lo fai

$ sudo echo 10 > brightness

la shell esegue il comando sudo echo 10, che viene eseguito echo 10come root. La shell tenta quindi di aprirsi in brightnessmodo da poter reindirizzare l'output da echo 10essa, ma non può: la shell è in esecuzione con le autorizzazioni, non root. Esistono soluzioni alternative pubblicate come risposte alla domanda a cui ho collegato; una buona è:

$ echo 10 | sudo tee brightness

Ora teeè quello da aprire brightnesse poiché funziona come root, ha successo


3

su = s witch u ser: usa la shell come un altro utente

sudo = s uper u ser do : esegui il seguente comando come utente root.

Nel tuo caso il seguente comando è solo echo 20, quindi solo l'eco 20 viene eseguito come root (come detto prima). Il reindirizzamento viene eseguito di nuovo come te.


2

Potresti dare un'occhiata al /etc/sudoersfile. Se il tuo a / c non è elencato lì, non sarai in grado di farlo sudo.


Vero, ma in quel caso visualizzerai un messaggio di errore specifico ("nome utente non incluso nel file sudoers")
Michael Mrozek
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.