10.9 Mavericksではsudoの動作が変わった?

‘/private/etc’以下に新規ファイルを作りたいと思って、

$ sudo echo ‘some text’ | tee /private/etc/some.txt

とやっても書き込めません。

2013-11-15 15.47.05

作業をしているのは管理者権限を持ったユーザアカウントで、グループは‘staff’です。
色々とやってみて分かったことは、どうやら‘root’アカウントでなければ、‘root’管理下のシステムファイル/ディレクトリは改変できないということのようです。

○どうやって‘root’になるのか

  • 初期状態のままでは‘root’ユーザのアクセスは許可されていません
  • $ su rootとやっても拒否されます(そもそも‘root’ユーザが無効になっているのですから…)

■‘root’ユーザアクセスを許可する方法
かつてのNet Infoの時代と異なって、現在は、ディレクトリユーティリティ.app</System/Library/CoreServices/Directory\ Utility.app>を使って‘root’ユーザアクセスを許可することができます<http://support.apple.com/kb/PH14281?viewlocale=ja_JP&locale=ja_JP>。
ディレクトリユーティリティ.appを立ち上げて、ウィンドウ左下のカギアイコンをクリックしてからログインアカウント(管理者権限)とパスワードを入力して鍵を解除し、「編集」メニューの「ルートユーザを有効にする」を選択し、‘root’ユーザのパスワードを設定すればOKです。
これで、漸く、

$ su root

が有効になります。そこで、

$ echo ‘some text’ | tee /private/etc/some.txt
$ exit

とやれば、上記の処理は完了できます。

■‘root’ユーザアクセスが無効の状態で‘root’ユーザアクセスをする
常に‘root’ユーザアクセスが有効であるのは剣呑(?)だという場合には、次の要領で‘root’ユーザアクセスセッションを作ることができます。

$ sudo /Applications/Utilities/Terminal.app/Contents/MacOS/Terminal

で、もう1つターミナルを開く。この時、ユーザは‘root’になります。

2013-11-15 12.46.48

セッションをログアウトし、‘root’ユーザでのターミナルを終了すれば、元のユーザアカウントのターミナルに戻ります。

■ところがFinderでは
‘root’管理下のエリアへのアクセスを、sudoからは排除するという考え方は、分からないでもないものです。これにとやかく言うつもりはないのですが、Finderで、‘/etc’を開いてドキュメントをそのウィンドウにドラッグすると、パスワード入力を求められますが、ユーザパスワードを入力するとコピーできてしまいます。つまり、‘some.txt’をユーザエリアの任意の場所で作って、それを‘/etc’にドラッグ&ドロップすればコピーできてしまうのです。もちろん、アクセス権は勝手に修正されませんので、必要であれば、‘root:wheel’のユーザ/グループ変更も含めて処理は必要となりますが、移動は簡単にできてしまう訳です。
この辺りの振る舞いに首尾一貫性を求めたいと思うのですが、いかがなものでしょうか?

• 補遺
拙作の‘Exchange_Locale.app’<http://wp.me/p1Cs3W-6b>もsudoで‘/etc/hosts’ファイルを書き込みます。従って、Mavericksではエラーが出てもおかしくありません。早速試してみました。が、正常動作します。
そこで、上記のターミナルでエラーが出る構文をそのままAppleScriptで実行してみることにしました。

$ sudo echo ‘some text’ | tee /private/etc/some.txt

を、

do shell script “sudo echo ‘some text’ | tee /private/etc/some.txt” user name “my account” password “my password” with administrator privileges

という風にAppleScriptで実行すると、結果は、OKです。
???
どちらを是とするのか判断できませんが、もう少し様子を見ていようと思います。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中