<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>web tips around me &#187; sudo</title>
	<atom:link href="http://yamazon.org/tag/sudo/feed" rel="self" type="application/rss+xml" />
	<link>http://yamazon.org</link>
	<description>iphoneアプリ開発,ホームページ制作,SEO,CMS ...</description>
	<lastBuildDate>Wed, 25 May 2011 07:58:48 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>[LINUX] php で　sudo</title>
		<link>http://yamazon.org/other/239</link>
		<comments>http://yamazon.org/other/239#comments</comments>
		<pubDate>Tue, 02 Feb 2010 09:49:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[雑記]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[sudo]]></category>

		<guid isPermaLink="false">http://yamazon.org/?p=239</guid>
		<description><![CDATA[ブラウザからPHPスクリプトにアクセスして、PHPプログラムからsudoコマンドを実行する方法です。 私の場合は、手元のfedoraが動いているサーバで試してみましたが、「anysense-devel」さんの記事通りに実行出来ましたので、ご紹介、というか今後の自分のためにもメモしておきます。 以下、参照元「anysense-devel」さんの記事です。 ご存知の通りPHPからコマンドを実行するにはexec()やsystem()等を使えばいいんですが、Apacheに実行権限が無いファイルを扱う場合はsudoしてから実行する必要があります。 &#60;?PHP $cmd = "echo 'password' &#124; sudo -S ls /root"; exec($cmd, $output); print_r($output); ?&#62; みたいに-Sを付けてやればパイプでパスワードを渡すことが出来ます。 ここで入力するのはもちろんapacheが動いているユーザーのパスワードです。 apacheがどのユーザー権限で動いているかはhttpd.confのUserディレクティブとGroupディレクティブで確認できます。 因みにCentOS5.1でyumでapacheをインストールした場合はapacheというグループのapacheというユーザーとして動いています。 PHPスクリプト内のexec()関数で呼び出されたコマンドもこのユーザーとして実行されます。 以下、Apacheを実行しているユーザーをapacheと仮定して書きます。apacheは環境に応じて適当に読み替えてください。 sudoする際に渡すパスワードはapacheのものですが、デフォルトではapacheユーザーにはパスワードがありません。パスワードが無い場合sudoできませんので何でもいいのでパスワードを指定してあげましょう。 sudo passwd apache 次にapacheユーザーがsudoできるようにsudoersファイルを編集します。ルート権限で visudo と入力するとsudoersファイルを編集できますので、末尾に apache ALL=(ALL) ALL と追記します。さらに Defaults requiretty という行をコメントアウト(行頭に#を追加)して端末を持たないユーザーからのsudoを許可します。 これでapacheユーザーからsudo出来るようになりました。冒頭のPHPスクリプトへブラウザからアクセスして/rootの中身が見れたら成功です。 http://hogehack.blog80.fc2.com/blog-entry-36.html]]></description>
			<content:encoded><![CDATA[<p>ブラウザからPHPスクリプトにアクセスして、PHPプログラムからsudoコマンドを実行する方法です。<br />
私の場合は、手元のfedoraが動いているサーバで試してみましたが、「anysense-devel」さんの記事通りに実行出来ましたので、ご紹介、というか今後の自分のためにもメモしておきます。</p>
<blockquote><p>
以下、<a href="http://hogehack.blog80.fc2.com/blog-entry-36.html">参照元「anysense-devel」さん</a>の記事です。</p></blockquote>
<p><span id="more-239"></span></p>
<p>ご存知の通りPHPからコマンドを実行するにはexec()やsystem()等を使えばいいんですが、Apacheに実行権限が無いファイルを扱う場合はsudoしてから実行する必要があります。</p>
<pre>&lt;?PHP
$cmd = "echo 'password' | sudo -S ls /root";
exec($cmd, $output);
print_r($output);
?&gt;</pre>
<p>みたいに-Sを付けてやればパイプでパスワードを渡すことが出来ます。<br />
ここで入力するのはもちろんapacheが動いているユーザーのパスワードです。<br />
apacheがどのユーザー権限で動いているかはhttpd.confのUserディレクティブとGroupディレクティブで確認できます。<br />
因みにCentOS5.1でyumでapacheをインストールした場合はapacheというグループのapacheというユーザーとして動いています。<br />
PHPスクリプト内のexec()関数で呼び出されたコマンドもこのユーザーとして実行されます。<br />
以下、Apacheを実行しているユーザーをapacheと仮定して書きます。apacheは環境に応じて適当に読み替えてください。</p>
<p>sudoする際に渡すパスワードはapacheのものですが、デフォルトではapacheユーザーにはパスワードがありません。パスワードが無い場合sudoできませんので何でもいいのでパスワードを指定してあげましょう。</p>
<blockquote><p>sudo passwd apache</p></blockquote>
<p>次にapacheユーザーがsudoできるようにsudoersファイルを編集します。ルート権限で</p>
<blockquote><p>visudo</p></blockquote>
<p>と入力するとsudoersファイルを編集できますので、末尾に</p>
<blockquote><p>apache  ALL=(ALL)       ALL</p></blockquote>
<p>と追記します。さらに</p>
<blockquote><p>Defaults requiretty</p></blockquote>
<p>という行をコメントアウト(行頭に#を追加)して端末を持たないユーザーからのsudoを許可します。</p>
<p>これでapacheユーザーからsudo出来るようになりました。冒頭のPHPスクリプトへブラウザからアクセスして/rootの中身が見れたら成功です。</p>
<p><a href="http://hogehack.blog80.fc2.com/blog-entry-36.html">http://hogehack.blog80.fc2.com/blog-entry-36.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://yamazon.org/other/239/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

