Overleg:Gewone gebruikers en root rechten

Van MandrivaClub.NL Wiki

Ga naar: navigatie, zoek

Als bestanden die alleen gestart kunnen worden door root, ook gebruikt moeten worden door een reguliere gebruiker, heb je een aantal mogelijkheden om dit te bereiken:

  • Maak de gebruiker onderdeel van de groep van wie het bestand eigendom is.


Ondanks dat dit de meest eenvoudige oplossing is, is het ook de meest gevaarlijke. Stel dat de gebruiker 'Tristan' de webserver moet kunnen starten en stoppen. Hiertoe moet een gebruiker rechten hebben om de scripts die staan in de directory /etc/init.d/ te beheren. Deze directorie valt onder de rechten van de groep root. Als 'Tristan' lid word van de root-groep, kan hij aan al deze scripts komen (en nog veel meer).

  • Maak gebruik van de geavanceerde toegangsrechten: uid en gid.


Setuid is een bestands-machtigings-bit waarmee je aangeeft dat een binary uitgevoerd word met de machtigingen van de eigenaar. Hierdoor kan een gebruiker een toepassing draaien, met dezelfde als de eigenaar (bijvoorbeeld root). Setgid doet het zelfde, maar dan voor de groep.

Dit is op zichzelf zonder gevaar. De gebruiker krijgt geen extra machtigingen over bestanden zoals in het eerste voorbeeld. Maar als een programma met een grove fout erin opeens uitgevoerd wordt als root, kunnen er alsnog beveiligingsproblemen ontstaan. Een programma dat door setuid of setgid de rechten van root krijgt, kan ook andere bestanden van root openen (en opslaan of verwijderen). Hierdoor kunnen de rechten van root worden misbruikt.

  • Gebruik sudo om bepaalde gebruikers extra machtigingen te geven op bestands-nivo.


Ondanks dat hiermee niet alle problemen op te lossen zijn, is het toch de meest veilige oplossing. Het is de veilige doordat in het sudo configuratiebestand (dat allen te wijzigen is door root) regels omschreven zijn welk bestand door welke gebruiker uitgevoerd mag worden. Een programma neemt niet de rol van eigenaar op zich (zoals bij setuid of setgid). Daardoor kan je alleen die bestanden openen waar vooraf toestemming voor is verleend. Meer informatie vind je in de startersgids


De originele text staat hier onder: If you happen to have the need to allow regular system users to use privileged utilities, you usually have the following routes laid for you:


  • Make the user member of the group owning the utility.


While this is the easiest way, this is also not recommended as it is the most unsafe practice. Say for example that you need to allow a the user 'juan' to have the rights to start/stop the web service in the box. This means that the user needs to be able to execute the scripts located in /etc/init.d/ and those scripts are owned by the group 'root'. If you made 'juan' a member of the group 'root' then you virtually gave the user access to all utilities owned by the group which is not wise.


  • Use the setuid/setgid bit of the utility.


Setuid is a file permission bit that allows the binary to be run using the permission of its owner. Setgid is its counterpart for group ownership. This means that if the useradd utility has its setuid bit set and an ordinary user executes it then it will be executed under the privileges of root.

How can this be dangerous? It is only dangerous if the utility with setuid has been found to have a bug that is exploitable to gain access to your machine.


  • Use the sudo package to grant specific users access to privileged utilities.


While this is not an end-all solution, the approach taken by sudo is by far the safest of the three options because it refers to a configuration file that dictates which user has access to which utilities. MandrakeSecure has an excellent tutorial on how to use sudo effectively.

Aspecten/acties
Persoonlijke instellingen
MandrivaClub.NL