Vraag Hoe sta ik toe dat een gebruiker alleen de opdracht apt-get update uitvoert met sudo? [duplicaat]


Deze vraag heeft hier al een antwoord:

Ik kan niet achterhalen hoe ik een gebruiker kan toestaan ​​(in dit geval test) om alleen de. te kunnen uitvoeren apt-get update commando met de sudoers het dossier. Wanneer ik ooit de gebruiker probeer toe te voegen en het vervolgens uit te testen, kan de gebruiker de opdracht nog steeds niet uitvoeren.

Kan iemand me alsjeblieft helpen? Ik heb dit de hele dag onderzocht en kan er nog steeds niet achter komen. Ik typ waarschijnlijk iets verkeerd in.

Ik gebruik Ubuntu 14.04.


6
2018-04-21 23:47


oorsprong


Is het niet passend om update alleen beschikbaar te krijgen voor sudoers? Dus als een gebruiker geen sudoer is, zou de gebruiker het niet moeten kunnen uitvoeren - Sergiy Kolodyazhnyy
@Serg Ik veronderstel dat OP een gebruiker tot alleen dat commando wil beperken (geen sudo-privileges). - muru


antwoorden:


Kijkend naar het antwoord van Andre Herman Bezerra, wordt het enige probleem hiermee aangegeven in de reacties hierop DOET NIET beperk de gebruiker om alleen te updaten (ze kunnen pakketten installeren / verwijderen).

Als u een gebruiker wilt beperken om dit te kunnen doen alleen updaten je kunt beter het volgende doen.

Maak een groep of gebruik de %staff groep.

In dit voorbeeld kies ik ervoor om de personeelsgebruikersgroep te gebruiken.

Werk het sudoers document.

export editor="vi" && sudo visudo

Maak een Cmnd_Alias die een a definiëren  script toegestaan.

Cmnd_Alias UPDATER_ONLY = /usr/local/bin/updater.sh

U moet definiëren hoe deze opdracht is toegestaan.

# Require staff to enter password when updating.
%staff ALL= UPDATER_ONLY

# Or, password is not required, just run the updater.
%staff ALL= NOPASSWD: UPDATER_ONLY

Ten slotte moet je de shell maken.

Om te voorkomen dat iemand het bestand bewerkt, zou dit eigendom moeten zijn van root en alleen-lezen, of gemaakt tijdens het hardlopen sudo.

$ sudo echo '#!/bin/bash' >> /usr/local/bin/updater.sh
$ sudo echo 'sudo apt-get update && sudo apt-get upgrade -y' >> /usr/local/bin/updater.sh
$ sudo chmod 0755 /usr/local/bin/updater.sh

Dit moet er als volgt uitzien:

$ ls -la /usr/local/bin/updater.sh
-rwxr-xr-x 1 root root 60 Jan 22 08:50 /usr/local/bin/updater.sh*

We zijn bijna klaar!

U moet onthouden dat u dit recht toestaat door de gebruiker toe te voegen aan de personeelsgroep.

sudo usermod -aG staff the-user

Als iemand iets probeert te installeren, is dit wat ze ontvangen:

test-me@comp0:~$ sudo apt-get install test
[sudo] password for test-me: 
Sorry, user test-me is not allowed to execute '/usr/bin/apt-get install test' as root on comp0.

2
2018-01-22 09:48





Bewerk eerst de /etc/sudoers alleen met visudo

U kunt de toestemming voor de gebruiker instellen joe voor apt-get commando alleen toevoegen van de volgende regel:

%joe your_hostname=(root):/usr/bin/apt-get

Eenmaal ingelogd als joe, u kunt de rechten controleren:

sudo -l

Bewerken: de gebruiker kan apt-get update, upgrade, install, etc gebruiken; omdat dit slechts vlaggen zijn voor het apt-get-commando.


7
2018-04-22 00:34



@andre zou het niet alleen / usr / bin / apt-get zijn, omdat de update, upgrade, verwijdering enz. slechts vlaggen zijn voor die opdracht, dus als de gebruiker apt-get kan uitvoeren, zijn ze niet beperkt tot de vlaggen die ze kunnen gebruiken :) - kingmilo
@kingmilo Bedankt voor de informatie! - Andre Herman Bezerra