<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://lea-linux.org/docs/index.php?action=history&amp;feed=atom&amp;title=SUID_scripts</id>
	<title>SUID scripts - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://lea-linux.org/docs/index.php?action=history&amp;feed=atom&amp;title=SUID_scripts"/>
	<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=SUID_scripts&amp;action=history"/>
	<updated>2026-04-28T19:36:38Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.40.1</generator>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=SUID_scripts&amp;diff=44781&amp;oldid=prev</id>
		<title>Lea : Lea a déplacé la page Dev-suid scripts vers SUID scripts</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=SUID_scripts&amp;diff=44781&amp;oldid=prev"/>
		<updated>2023-12-01T16:47:05Z</updated>

		<summary type="html">&lt;p&gt;Lea a déplacé la page &lt;a href=&quot;/documentations/Dev-suid_scripts&quot; class=&quot;mw-redirect&quot; title=&quot;Dev-suid scripts&quot;&gt;Dev-suid scripts&lt;/a&gt; vers &lt;a href=&quot;/documentations/SUID_scripts&quot; title=&quot;SUID scripts&quot;&gt;SUID scripts&lt;/a&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fr&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version du 1 décembre 2023 à 16:47&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;fr&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(Aucune différence)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Lea</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=SUID_scripts&amp;diff=22059&amp;oldid=prev</id>
		<title>Jiel : balises code</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=SUID_scripts&amp;diff=22059&amp;oldid=prev"/>
		<updated>2012-06-05T12:08:36Z</updated>

		<summary type="html">&lt;p&gt;balises code&lt;/p&gt;
&lt;a href=&quot;https://lea-linux.org/docs/index.php?title=SUID_scripts&amp;amp;diff=22059&amp;amp;oldid=19419&quot;&gt;Voir les modifications&lt;/a&gt;</summary>
		<author><name>Jiel</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=SUID_scripts&amp;diff=19419&amp;oldid=prev</id>
		<title>Jiel le 27 avril 2011 à 13:26</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=SUID_scripts&amp;diff=19419&amp;oldid=prev"/>
		<updated>2011-04-27T13:26:31Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version du 27 avril 2011 à 13:26&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Ligne 1 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 1 :&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Category&lt;/del&gt;:&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Développer sous Linux&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Catégorie&lt;/ins&gt;:&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Développement&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= SUID Scripts =&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= SUID Scripts =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l313&quot;&gt;Ligne 313 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 314 :&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;C&amp;#039;est tout pour cette fois !&amp;lt;br /&amp;gt; N&amp;#039;hésitez pas à m&amp;#039;envoyer vos commentaires par mail, il reste sûrement des améliorations à faire.&amp;lt;br /&amp;gt; Retrouvez l&amp;#039;article remis en forme, les sources, archives et binaires sur mon site perso..., http://perso.club-internet.fr/xgarreau/&amp;lt;br /&amp;gt; Vous pouvez également me contacter dans le forum Développement de Léa, je le regarde (très) souvent. &amp;lt;br /&amp;gt; A bientôt,&amp;lt;br /&amp;gt; Xavier GARREAU&amp;lt;br /&amp;gt; Ingénieur de recherche PRIM&amp;#039;TIME TECHNOLOGY : http://www.prim-time.com/&amp;lt;br /&amp;gt; Membre fondateur et président (2002-20??) du ROCHELUG : http://lug.larochelle.tuxfamily.org/&amp;lt;br /&amp;gt; Pigiste ;-) (Léa-Linux et LinuxMag-France)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;C&amp;#039;est tout pour cette fois !&amp;lt;br /&amp;gt; N&amp;#039;hésitez pas à m&amp;#039;envoyer vos commentaires par mail, il reste sûrement des améliorations à faire.&amp;lt;br /&amp;gt; Retrouvez l&amp;#039;article remis en forme, les sources, archives et binaires sur mon site perso..., http://perso.club-internet.fr/xgarreau/&amp;lt;br /&amp;gt; Vous pouvez également me contacter dans le forum Développement de Léa, je le regarde (très) souvent. &amp;lt;br /&amp;gt; A bientôt,&amp;lt;br /&amp;gt; Xavier GARREAU&amp;lt;br /&amp;gt; Ingénieur de recherche PRIM&amp;#039;TIME TECHNOLOGY : http://www.prim-time.com/&amp;lt;br /&amp;gt; Membre fondateur et président (2002-20??) du ROCHELUG : http://lug.larochelle.tuxfamily.org/&amp;lt;br /&amp;gt; Pigiste ;-) (Léa-Linux et LinuxMag-France)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br/&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br/&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&#039;&amp;lt;b&gt;[[Dev-index|@ Retour à la rubrique Développement]]&amp;lt;/b&gt;&#039;&#039;&#039;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br/&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;div class=&amp;quot;merci&amp;quot;&amp;gt;Cette page est issue de la documentation &amp;#039;pré-wiki&amp;#039; de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Xavier GARREAU le 16/02/2002.&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;div class=&amp;quot;merci&amp;quot;&amp;gt;Cette page est issue de la documentation &amp;#039;pré-wiki&amp;#039; de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Xavier GARREAU le 16/02/2002.&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Jiel</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=SUID_scripts&amp;diff=14982&amp;oldid=prev</id>
		<title>Samfr95 : /* Un échec */</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=SUID_scripts&amp;diff=14982&amp;oldid=prev"/>
		<updated>2007-10-10T16:22:22Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Un échec&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version du 10 octobre 2007 à 16:22&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l25&quot;&gt;Ligne 25 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 25 :&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  [root@ZAZOU /root]# mv voir_rep_root /usr/bin/&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  [root@ZAZOU /root]# mv voir_rep_root /usr/bin/&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;(Les plus assidus d&#039;entre vous constaterons que mon PC ne s&#039;appelle plus Rooty mais là n&#039;est pas la question) &amp;lt;br /&amp;gt; Vous testez que ça marche pour vous puis en &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;temps &lt;/del&gt;qu&#039;utilisateur normal (l&#039;utilisateur xavier par exemple)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;(Les plus assidus d&#039;entre vous constaterons que mon PC ne s&#039;appelle plus Rooty mais là n&#039;est pas la question) &amp;lt;br /&amp;gt; Vous testez que ça marche pour vous puis en &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;tant &lt;/ins&gt;qu&#039;utilisateur normal (l&#039;utilisateur xavier par exemple)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;code&amp;gt; [root@ZAZOU /root]# voir_rep_root&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;code&amp;gt; [root@ZAZOU /root]# voir_rep_root&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Samfr95</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=SUID_scripts&amp;diff=10261&amp;oldid=prev</id>
		<title>Mike-m : extrem&#039; &lt;code&gt; ing</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=SUID_scripts&amp;diff=10261&amp;oldid=prev"/>
		<updated>2005-10-30T03:47:17Z</updated>

		<summary type="html">&lt;p&gt;extrem&amp;#039; &amp;lt;code&amp;gt; ing&lt;/p&gt;
&lt;a href=&quot;https://lea-linux.org/docs/index.php?title=SUID_scripts&amp;amp;diff=10261&amp;amp;oldid=3414&quot;&gt;Voir les modifications&lt;/a&gt;</summary>
		<author><name>Mike-m</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=SUID_scripts&amp;diff=3414&amp;oldid=prev</id>
		<title>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=SUID_scripts&amp;diff=3414&amp;oldid=prev"/>
		<updated>2005-09-07T11:13:48Z</updated>

		<summary type="html">&lt;p&gt;conversion de la documentation originale de Léa par HTML::WikiConverter&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version du 7 septembre 2005 à 11:13&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l316&quot;&gt;Ligne 316 :&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 316 :&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;div class=&amp;quot;merci&amp;quot;&amp;gt;Cette page est issue de la documentation &amp;#039;pré-wiki&amp;#039; de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Xavier GARREAU le 16/02/2002.&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;div class=&amp;quot;merci&amp;quot;&amp;gt;Cette page est issue de la documentation &amp;#039;pré-wiki&amp;#039; de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Xavier GARREAU le 16/02/2002.&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;= Copyright =&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Copyright &amp;amp;copy; 16/02/2002, Xavier GARREAU&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{CC-BY-NC-SA}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>PingouinMigrateur</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=SUID_scripts&amp;diff=2523&amp;oldid=prev</id>
		<title>PingouinMigrateur : conversion de la documentation originale de Léa par HTML::WikiConverter</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=SUID_scripts&amp;diff=2523&amp;oldid=prev"/>
		<updated>2005-09-02T17:07:05Z</updated>

		<summary type="html">&lt;p&gt;conversion de la documentation originale de Léa par HTML::WikiConverter&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Category:Développer sous Linux]]&lt;br /&gt;
= SUID Scripts =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;leatitre&amp;quot;&amp;gt;SUID Scripts&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leapar&amp;quot;&amp;gt;par [mailto:xgarreau@club-internet.fr Xavier GARREAU]&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leadesc&amp;quot;&amp;gt;Cet article fait suite à une question qui avait été débattue sur la liste lea_aide@club.voila.fr au premier semestre 2001. Comme ce sujet m&amp;#039;avait passionné et qu&amp;#039;il pourrait intéresser d&amp;#039;autres personnes, j&amp;#039;ai écrit cet article. &amp;lt;br /&amp;gt; Afin d&amp;#039;éviter une polémique, je dis tout de suite que la réponse apportée ci-dessous m&amp;#039;avait été inspirée par la lecture de l&amp;#039;article &amp;quot;Eviter les failles dès le développement de vos applications&amp;quot; paru dans le Linuxmagazine-france de Décembre 2000. Ceci dit, le problème est traité ici dans une optique différente qui est de permettre à un administrateur de permettre aux utilisateurs de lancer quelques scripts choisis en temps que root. &amp;lt;/div&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Qu&amp;#039;est ce que j&amp;#039;appelle un SUID Script ? C&amp;#039;est un script que vous souhaiteriez pouvoir exécuter en temps que simple utilisateur mais qui ferait des choses uniquement permises au root. &amp;lt;br /&amp;gt; J&amp;#039;en vois qui sourient en me prenant pour un débile se jeter sur leur shell pour me prouver que je suis un tocard qui ne connait pas &amp;lt;tt&amp;gt;chmod 4755&amp;lt;/tt&amp;gt;. Lisez donc encore quelques lignes avant de m&amp;#039;envoyer un mail d&amp;#039;insultes.&lt;br /&gt;
&lt;br /&gt;
== Un échec ==&lt;br /&gt;
&lt;br /&gt;
Voyons si cet article s&amp;#039;adresse à vous !&amp;lt;br /&amp;gt; Imaginons que vous soyez root vous voulez permettre à un simple utilisateur de lire le contenu de votre répertoire personnel, dans un souci de transparence, pour prouver qu&amp;#039;ils n&amp;#039;y trouveront pas de photos pornographiques. Vous écrivez donc un script qui permet d&amp;#039;afficher le contenu de votre répertoire personnel ( je présuppose chez vous des bases de shell ;-) ) :&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[root@ZAZOU /root]# cat &amp;gt; voir_rep_root&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 echo &amp;quot;Contenu du répertoire de&amp;quot; `whoami`&lt;br /&gt;
 # ou echo &amp;quot;Contenu du répertoire de&amp;quot; $(whoami)&lt;br /&gt;
 ls -a /root&lt;br /&gt;
 &amp;lt; Ctrl+D &amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
et vous le rendez suid root et vous le placez dans /usr/bin pour que tous les utilisateurs puissent l&amp;#039;exécuter en temps que vous ! :&lt;br /&gt;
&lt;br /&gt;
 [root@ZAZOU /root]# chmod 4755 voir_rep_root&lt;br /&gt;
 [root@ZAZOU /root]# mv voir_rep_root /usr/bin/&lt;br /&gt;
&lt;br /&gt;
(Les plus assidus d&amp;#039;entre vous constaterons que mon PC ne s&amp;#039;appelle plus Rooty mais là n&amp;#039;est pas la question) &amp;lt;br /&amp;gt; Vous testez que ça marche pour vous puis en temps qu&amp;#039;utilisateur normal (l&amp;#039;utilisateur xavier par exemple)&lt;br /&gt;
&lt;br /&gt;
 [root@ZAZOU /root]# voir_rep_root&lt;br /&gt;
 Contenu du répertoire de root&lt;br /&gt;
 .            .bash_history  .cshrc          .toprc  Mail&lt;br /&gt;
 ..           .bash_logout   .mysql_history  .vimrc&lt;br /&gt;
 .Xauthority  .bash_profile  .parsecrc       .wmrc&lt;br /&gt;
 .Xdefaults   .bashrc        .tcshrc         .zshrc&lt;br /&gt;
 [root@ZAZOU /root]# su xavier&lt;br /&gt;
 [xavier@ZAZOU /root]$ voir_rep_root&lt;br /&gt;
 Contenu du répertoire de xavier&lt;br /&gt;
 ls: /root: Permission non accordée&lt;br /&gt;
&lt;br /&gt;
Vous avez compris le problème ça y est ? Votre script est exécutable, appartient au root, a le SUID bit à 1 mais n&amp;#039;en tient pas compte.&lt;br /&gt;
&lt;br /&gt;
; &amp;#039;&amp;#039;&amp;#039;Scènette de fin de partie&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
: &amp;quot;&amp;#039;&amp;#039;- La solution c&amp;#039;est &amp;lt;tt&amp;gt;chmod 4755 /bin/bash&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt; - Qui a dit ça ? Bill ? A la porte, tout de suite !&amp;quot;&amp;#039;&amp;#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bill ? Porte ? Je vous laisse méditer là dessus et passe à l&amp;#039;étape suivante.&lt;br /&gt;
&lt;br /&gt;
== En C, ça ne marche pas non plus (au début) ! ==&lt;br /&gt;
&lt;br /&gt;
Vous vous dites alors : &amp;quot;Je suis très intelligent, je vais l&amp;#039;avoir en finesse...&amp;quot;. Hé hé hé ! Je rigole parce que c&amp;#039;est ce que je me suis dit moi aussi ...&amp;lt;br /&amp;gt; Si sur les programmes ça marche, on est tentés de se dire qu&amp;#039;on va écrire un programme qui appelle le script. Allons y, créons lanceur_de_script.c :&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
 #include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;errno.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 extern char **environ;&lt;br /&gt;
 extern int errno;&lt;br /&gt;
&lt;br /&gt;
 int main (int argc, char **argv) {&lt;br /&gt;
   execve(&amp;quot;/usr/bin/voir_rep_root&amp;quot;, NULL, environ);&lt;br /&gt;
   printf (&amp;quot;Error : %d\n&amp;quot;, errno);&lt;br /&gt;
   return errno;&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
( Parenthèse : A ceux qui seraient tentés de dire : &amp;quot;&amp;#039;&amp;#039;Oui mais pourquoi on met return errno ?&amp;#039;&amp;#039;&amp;quot;, je réponds d&amp;#039;aller lire le man execve où ils pourront constater que si execve ne rencontre pas d&amp;#039;erreur, alors il ne renvoie rien puisque l&amp;#039;image du programme est TOTALEMENT remplacée par celle du programme appelé (ce programme étant l&amp;#039;interpréteur dans le cas d&amp;#039;un script). )&amp;lt;br /&amp;gt; On est content d&amp;#039;avoir fait ce beau programme. Alors on le compile, on le rend exécutable par tout le monde, on met le SUID bit à 1, on le déplace dans /usr/bin et on refait le test de tout à l&amp;#039;heure.&lt;br /&gt;
&lt;br /&gt;
 [root@ZAZOU /root]# gcc -o lanceur_de_script lanceur_de_script.c&lt;br /&gt;
 [root@ZAZOU /root]# chmod 4111 lanceur_de_script&lt;br /&gt;
 [root@ZAZOU /root]# mv -f lanceur_de_script /usr/bin/&lt;br /&gt;
 [root@ZAZOU /root]# lanceur_de_script&lt;br /&gt;
 Contenu du répertoire de root&lt;br /&gt;
 .            .bash_history  .cshrc          .toprc  Mail&lt;br /&gt;
 ..           .bash_logout   .mysql_history  .vimrc  lanceur_de_script.c&lt;br /&gt;
 .Xauthority  .bash_profile  .parsecrc       .wmrc&lt;br /&gt;
 .Xdefaults   .bashrc        .tcshrc         .zshrc&lt;br /&gt;
 [root@ZAZOU /root]# su xavier&lt;br /&gt;
 [xavier@ZAZOU /root]$ lanceur_de_script&lt;br /&gt;
 Contenu du répertoire de xavier&lt;br /&gt;
 ls: /root: Permission non accordée&lt;br /&gt;
&lt;br /&gt;
== Le début de la compréhension ==&lt;br /&gt;
&lt;br /&gt;
Oui, pour comprendre, rendez vous à la fin de l&amp;#039;article ;-) ... Pour suivre le raisonnement, ajoutez dans le programme une ligne :&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;printf (&amp;quot;UID %d - EUID %d\n&amp;quot;, getuid(), geteuid());&amp;lt;/tt&amp;gt; comme ci-dessous :&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;errno.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 extern char **environ;&lt;br /&gt;
 extern int errno;&lt;br /&gt;
&lt;br /&gt;
 int main (int argc, char **argv) {&lt;br /&gt;
   printf (&amp;quot;UID %d - EUID %d\n&amp;quot;, getuid(), geteuid());&lt;br /&gt;
   execve(&amp;quot;/usr/bin/voir_rep_root&amp;quot;, NULL, environ);&lt;br /&gt;
   printf (&amp;quot;Error : %d\n&amp;quot;, errno);&lt;br /&gt;
   return errno;&lt;br /&gt;
 }&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Celà vous donne un début de réponse lors de l&amp;#039;exécution (non ?) :&lt;br /&gt;
&lt;br /&gt;
 [root@ZAZOU /root]# chmod 4111 lanceur_de_script&lt;br /&gt;
 [root@ZAZOU /root]# mv -f lanceur_de_script /usr/bin/&lt;br /&gt;
 [root@ZAZOU /root]# su xavier&lt;br /&gt;
 [xavier@ZAZOU /root]$ lanceur_de_script&lt;br /&gt;
 UID 501 - EUID 0&lt;br /&gt;
 Contenu du répertoire de xavier&lt;br /&gt;
 ls: /root: Permission non accordée&lt;br /&gt;
&lt;br /&gt;
Oui, la réponse se situe dans la première ligne de sortie du programme. L&amp;#039;EUID du programme, celle fixée par le SUID bit est bien 0 (root) mais l&amp;#039;uid (celle utilisée pour l&amp;#039;appel du script) est 501. Or, 501 correspond d&amp;#039;après mon fichier &amp;lt;tt&amp;gt;/etc/passwd&amp;lt;/tt&amp;gt; à l&amp;#039;utilisateur xavier. D&amp;#039;où un problème dans le comportement attendu ! En fait le script est appelé avec l&amp;#039;UID et non l&amp;#039;EUID. Il faut donc faire un pas supplémentaire et dire au programme de lancer le script en temps que root, c&amp;#039;est à dire faire en sorte que l&amp;#039;UID devienne l&amp;#039;EUID.&lt;br /&gt;
&lt;br /&gt;
== Ça marche mais c&amp;#039;est dangereux ==&lt;br /&gt;
&lt;br /&gt;
Celà n&amp;#039;est rendu possible que parce que le programme est SUID root. Un programme lancé par le root peut prendre l&amp;#039;UID de n&amp;#039;importe qui, par contre un programme lancé par un utilisateur classique ne peut prendre comme UID que son EUID. C&amp;#039;est à dire l&amp;#039;UID de l&amp;#039;utilisateur qui l&amp;#039;a créé, sous réserve qu&amp;#039;il ait placé le SUID bit à 1.&amp;lt;br /&amp;gt; Bref ! Ce changement se fait grâce à la fonction &amp;lt;tt&amp;gt;setreuid&amp;lt;/tt&amp;gt;. Les fonctions &amp;lt;tt&amp;gt;seteuid&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;setuid&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;setreuid&amp;lt;/tt&amp;gt; servent à manipuler les UID et EUID d&amp;#039;un programme. &amp;lt;tt&amp;gt;setuid&amp;lt;/tt&amp;gt; modifie prend un paramètre qu&amp;#039;il affecte à l&amp;#039;UID et l&amp;#039;EUID. &amp;lt;tt&amp;gt;seteuid&amp;lt;/tt&amp;gt; prend un paramètre qu&amp;#039;il affecte à l&amp;#039;EUID. &amp;lt;tt&amp;gt;setreuid&amp;lt;/tt&amp;gt; en prend deux, affect le premier à l&amp;#039;UID et le second à l&amp;#039;EUID. Si un de ces paramètres vaut -1 la valeur correspondante n&amp;#039;est pas changée.&amp;lt;br /&amp;gt;&amp;#039;&amp;#039;&amp;#039;DONC&amp;#039;&amp;#039;&amp;#039; &amp;lt;tt&amp;gt;setuid(ID)&amp;lt;/tt&amp;gt; est équivalent à &amp;lt;tt&amp;gt;setreuid(ID, ID)&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;seteuid(ID)&amp;lt;/tt&amp;gt; est équivalent à &amp;lt;tt&amp;gt;setreuid(-1, ID)&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Voici l&amp;#039;illustration de cette partie dans le fichier lanceur_de_script_2.c :&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;errno.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 extern char **environ;&lt;br /&gt;
 extern int errno;&lt;br /&gt;
&lt;br /&gt;
 int main (int argc, char **argv) {&lt;br /&gt;
   uid_t uid, euid;&lt;br /&gt;
   uid=getuid();&lt;br /&gt;
   euid=geteuid();&lt;br /&gt;
   printf (&amp;quot;UID %d - EUID %d\n&amp;quot;, uid, euid);&lt;br /&gt;
   setreuid (euid, euid);&lt;br /&gt;
   uid=getuid();&lt;br /&gt;
   euid=geteuid();&lt;br /&gt;
   printf (&amp;quot;UID %d - EUID %d\n&amp;quot;, uid, euid);&lt;br /&gt;
   execve(&amp;quot;/usr/bin/voir_rep_root&amp;quot;, NULL, environ);&lt;br /&gt;
   printf (&amp;quot;Error : %d\n&amp;quot;, errno);&lt;br /&gt;
   return errno;&lt;br /&gt;
 }&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Une fois le code mis à jour :&lt;br /&gt;
&lt;br /&gt;
 [root@ZAZOU /root]# gcc -o lanceur_de_script_2 lanceur_de_script_2.c&lt;br /&gt;
 [root@ZAZOU /root]# chmod 4111 lanceur_de_script_2&lt;br /&gt;
 [root@ZAZOU /root]# mv lanceur_de_script_2 /usr/bin/&lt;br /&gt;
 [root@ZAZOU /root]# su xavier&lt;br /&gt;
 [xavier@ZAZOU /root]$ lanceur_de_script_2&lt;br /&gt;
 UID 501 - EUID 0&lt;br /&gt;
 UID 0 - EUID 0&lt;br /&gt;
 Contenu du répertoire de root&lt;br /&gt;
 .            .bash_history  .cshrc          .toprc  Mail&lt;br /&gt;
 ..           .bash_logout   .mysql_history  .vimrc  lanceur_de_script.c&lt;br /&gt;
 .Xauthority  .bash_profile  .parsecrc       .wmrc   lanceur_de_script_2.c&lt;br /&gt;
 .Xdefaults   .bashrc        .tcshrc         .zshrc&lt;br /&gt;
&lt;br /&gt;
Vous voyez qu&amp;#039;après l&amp;#039;appel à &amp;lt;tt&amp;gt;setreuid&amp;lt;/tt&amp;gt;, nous sommes non seulement UID root mais aussi EUID root et que de par le fait, tous les scripts que nous appelons s&amp;#039;exécutent avec l&amp;#039;identité root... Donc, ça marche ! Fin de l&amp;#039;article.&amp;lt;br /&amp;gt; Mais non, ce n&amp;#039;est pas la fin de l&amp;#039;article car vous vous rendez sûrement compte à ce niveau que le script n&amp;#039;a pas besoin d&amp;#039;être SUID root pour que celà fonctionne...&amp;lt;br /&amp;gt; Imaginons, un instant que l&amp;#039;on remplace l&amp;#039;appel statique au script par un appel à un script passé en paramètre... Ca devient super pratique mais aussi super dangereux, n&amp;#039;importe quel script pouvant être exécuté en temps que root...&lt;br /&gt;
&lt;br /&gt;
== Nicking ze danger ! ==&lt;br /&gt;
&lt;br /&gt;
Ouaip, ça marche ! Mais c&amp;#039;est dangeureux et cet article est là pour vous en faire prendre conscience... D&amp;#039;autre part, un autre point à comprendre est que &amp;lt;tt&amp;gt;setreuid&amp;lt;/tt&amp;gt; vous permet certes de gagner l&amp;#039;accés au privilèges du root dans un programme SUID mais qu&amp;#039;il vous permet aussi de les abandonner lorsque vous n&amp;#039;en avez plus besoin.&amp;lt;br /&amp;gt; Celà demande des exemples, allons y, créons le fichier createur_de_fichier.c en temps que root pour prendre conscience du côté éphémère de la toute puissance :&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;errno.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 extern char **environ;&lt;br /&gt;
 extern int errno;&lt;br /&gt;
&lt;br /&gt;
 int main (int argc, char **argv) {&lt;br /&gt;
   FILE * fd;&lt;br /&gt;
   uid_t uid, euid;&lt;br /&gt;
&lt;br /&gt;
   uid=getuid();&lt;br /&gt;
   euid=geteuid();&lt;br /&gt;
   printf (&amp;quot;UID %d - EUID %d\n&amp;quot;, uid, euid);&lt;br /&gt;
   if (!(fd = fopen(&amp;quot;/root/test&amp;quot;, &amp;quot;w&amp;quot;)))&lt;br /&gt;
     printf (&amp;quot;Je n&amp;#039;ai pas pu créer le fichier /root/test avant setreuid\n&amp;quot;);&lt;br /&gt;
   else {&lt;br /&gt;
     printf (&amp;quot;J&amp;#039;ai pu créer le fichier /root/test avant setreuid\n&amp;quot;);&lt;br /&gt;
     fclose(fd);&lt;br /&gt;
   }&lt;br /&gt;
   setreuid (euid, uid);&lt;br /&gt;
   uid=getuid();&lt;br /&gt;
   euid=geteuid();&lt;br /&gt;
   printf (&amp;quot;UID %d - EUID %d\n&amp;quot;, uid, euid);&lt;br /&gt;
   if (!(fd = fopen(&amp;quot;/root/test&amp;quot;, &amp;quot;w&amp;quot;)))&lt;br /&gt;
     printf (&amp;quot;Je n&amp;#039;ai pas pu créer le fichier /root/test après setreuid\n&amp;quot;);&lt;br /&gt;
   else {&lt;br /&gt;
     printf (&amp;quot;J&amp;#039;ai pu créer le fichier /root/test après setreuid\n&amp;quot;);&lt;br /&gt;
 	fclose(fd);&lt;br /&gt;
   }&lt;br /&gt;
 }&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dans le fichier ci-dessus on tente de créer un fichier en c dans un programme SUID puis après avoir inversé l&amp;#039;uid et l&amp;#039;euid. On se rend alors compte que contrairement au cas précédent, c&amp;#039;est l&amp;#039;uid qui compte lors des actions du programme.&lt;br /&gt;
&lt;br /&gt;
 [root@ZAZOU /root]# gcc -o createur_de_fichier createur_de_fichier.c&lt;br /&gt;
 [root@ZAZOU /root]# chmod 4111 createur_de_fichier&lt;br /&gt;
 [root@ZAZOU /root]# mv -f createur_de_fichier /usr/bin/&lt;br /&gt;
 [root@ZAZOU /root]# su xavier&lt;br /&gt;
 [xavier@ZAZOU /root]$ createur_de_fichier&lt;br /&gt;
 UID 501 - EUID 0&lt;br /&gt;
 J&amp;#039;ai pu créer le fichier /root/test avant setreuid&lt;br /&gt;
 UID 0 - EUID 501&lt;br /&gt;
 Je n&amp;#039;ai pas pu créer le fichier /root/test après setreuid&lt;br /&gt;
 [xavier@ZAZOU /root]$&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Pour ce qui est du danger&amp;#039;&amp;#039;&amp;#039;, il suffit de créer un programme en c permmettant d&amp;#039;exécuter un script passé en paramètre mais qui vérifie si ce script fait partie d&amp;#039;une liste de scripts autorisés stockée chez le root, dans le répertoire &amp;lt;tt&amp;gt;/root/.authoscripts/&amp;lt;/tt&amp;gt;, dans le fichier &amp;lt;tt&amp;gt;liste&amp;lt;/tt&amp;gt;. D&amp;#039;autre part, les scripts sont cherchés uniquement dans ce répertoire, ainsi, il n&amp;#039;y a que le root qui puisse en ajouter. Il y a quelques instructions à taper :&lt;br /&gt;
&lt;br /&gt;
 [root@ZAZOU /root]# mkdir .authoscripts&lt;br /&gt;
 [root@ZAZOU /root]# cd .authoscripts/&lt;br /&gt;
 [root@ZAZOU .authoscripts]# touch liste&lt;br /&gt;
 [root@ZAZOU .authoscripts]# cat &amp;gt;&amp;gt; liste&lt;br /&gt;
 voir_rep_root&lt;br /&gt;
 &amp;lt; Ctrl+D &amp;gt;&lt;br /&gt;
 [root@ZAZOU .authoscripts]#&lt;br /&gt;
 [root@ZAZOU .authoscripts]# mv /usr/bin/voir_rep_root ./&lt;br /&gt;
&lt;br /&gt;
Créons maintenant la prise en charge des SUID Scripts. On ajoute aux contraintes qu&amp;#039;il doit être possible de passer des paramètres aux scripts.&amp;lt;br /&amp;gt; Tout celà nous donne ce code ci :&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;#include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;errno.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;string.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 extern char **environ;&lt;br /&gt;
 extern int errno;&lt;br /&gt;
&lt;br /&gt;
 int main (int argc, char **argv) {&lt;br /&gt;
   FILE * fd;&lt;br /&gt;
   uid_t uid, euid;&lt;br /&gt;
   int isOK = 0;&lt;br /&gt;
   char tmpBuff[256];&lt;br /&gt;
&lt;br /&gt;
   if (argc&amp;lt;2) {&lt;br /&gt;
     fprintf(stderr, &amp;quot;USAGE : suscript nom_du_script param_1 param_2 ...\n&amp;quot;);&lt;br /&gt;
     return 1;&lt;br /&gt;
   }&lt;br /&gt;
   if (!(fd=fopen(&amp;quot;/root/.authoscripts/liste&amp;quot;, &amp;quot;r&amp;quot;))) {&lt;br /&gt;
     fprintf(stderr, &amp;quot;ERREUR : Impossible d&amp;#039;ouvrir le fichier liste dans\&lt;br /&gt;
  /root/.authoscripts.\n&amp;quot;);&lt;br /&gt;
     return 2;&lt;br /&gt;
   }&lt;br /&gt;
   while (!feof(fd)) {&lt;br /&gt;
     fscanf(fd, &amp;quot;%s&amp;quot;, tmpBuff);&lt;br /&gt;
     if (!strcmp(argv[1], tmpBuff)) {&lt;br /&gt;
       isOK++;&lt;br /&gt;
       break;&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
   fclose (fd);&lt;br /&gt;
   if (!isOK) {&lt;br /&gt;
     fprintf(stderr, &amp;quot;ERREUR : %s n&amp;#039;est pas un script autorisé...\n&amp;quot;, argv[1]);&lt;br /&gt;
     return 3;&lt;br /&gt;
   }&lt;br /&gt;
   uid=getuid();&lt;br /&gt;
   euid=geteuid();&lt;br /&gt;
   setreuid (euid, euid);&lt;br /&gt;
   sprintf (tmpBuff, &amp;quot;/root/.authoscripts/%s&amp;quot;, argv[1]);&lt;br /&gt;
   execve (tmpBuff, &amp;amp;argv[1], environ);&lt;br /&gt;
   printf (&amp;quot;Erreur : %d - %s\n&amp;quot;, errno, strerror(errno));&lt;br /&gt;
   return errno;&lt;br /&gt;
 }&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Que l&amp;#039;on compile et range ainsi :&lt;br /&gt;
&lt;br /&gt;
 [root@ZAZOU /root]# gcc -o suscript suscript.c&lt;br /&gt;
 [root@ZAZOU /root]# chmod 4111 suscript&lt;br /&gt;
 [root@ZAZOU /root]# mv suscript /usr/bin&lt;br /&gt;
&lt;br /&gt;
Dont on vérifie le bon foncionnement grâce à la série de commandes qui suit.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[root@ZAZOU /root]# cd .authoscripts/&lt;br /&gt;
 [root@ZAZOU .authoscripts]# cat &amp;gt; script_test&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 echo id: `whoami`&lt;br /&gt;
 echo &amp;quot;Params :&amp;quot; $*&lt;br /&gt;
 &amp;lt; Ctrl+D &amp;gt;&lt;br /&gt;
 [root@ZAZOU .authoscripts]# chmod a+x script_test&lt;br /&gt;
 [root@ZAZOU .authoscripts]# su xavier&lt;br /&gt;
 [xavier@ZAZOU .authoscripts]$ cd&lt;br /&gt;
 [xavier@ZAZOU xavier]$ suscript script_test 1 2 3 4 5 6 7 8 9 0&lt;br /&gt;
 id: root&lt;br /&gt;
 Params : 1 2 3 4 5 6 7 8 9 0&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== En savoir plus ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;man execve&amp;lt;/tt&amp;gt; et entre autres, la section NOTES :&lt;br /&gt;
&lt;br /&gt;
 NOTES&lt;br /&gt;
        SUID and SGID processes can not be ptrace()d SUID or SGID.&lt;br /&gt;
&lt;br /&gt;
        A maximum line length of 127 characters is allowed for the&lt;br /&gt;
        first line in a #! executable shell script.&lt;br /&gt;
&lt;br /&gt;
        Linux ignores the SUID and SGID bits on scripts.&lt;br /&gt;
&lt;br /&gt;
Vous avez compris le pourquoi de cet article ?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;man getuid&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;man setuid&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;man setreuid&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;man getlogin&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;man cuserid&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;man chmod&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tshaw ==&lt;br /&gt;
&lt;br /&gt;
C&amp;#039;est tout pour cette fois !&amp;lt;br /&amp;gt; N&amp;#039;hésitez pas à m&amp;#039;envoyer vos commentaires par mail, il reste sûrement des améliorations à faire.&amp;lt;br /&amp;gt; Retrouvez l&amp;#039;article remis en forme, les sources, archives et binaires sur mon site perso..., http://perso.club-internet.fr/xgarreau/&amp;lt;br /&amp;gt; Vous pouvez également me contacter dans le forum Développement de Léa, je le regarde (très) souvent. &amp;lt;br /&amp;gt; A bientôt,&amp;lt;br /&amp;gt; Xavier GARREAU&amp;lt;br /&amp;gt; Ingénieur de recherche PRIM&amp;#039;TIME TECHNOLOGY : http://www.prim-time.com/&amp;lt;br /&amp;gt; Membre fondateur et président (2002-20??) du ROCHELUG : http://lug.larochelle.tuxfamily.org/&amp;lt;br /&amp;gt; Pigiste ;-) (Léa-Linux et LinuxMag-France)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;merci&amp;quot;&amp;gt;Cette page est issue de la documentation &amp;#039;pré-wiki&amp;#039; de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Xavier GARREAU le 16/02/2002.&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>PingouinMigrateur</name></author>
	</entry>
</feed>