chownでファイル所有者なのに別の所有者に変更できない

このQ&Aのポイント
  • SunOS 5.10を使用している場合、chownコマンドを使用してファイルの所有者を変更しようとすると、「所有者ではありません。」というエラーメッセージが表示されることがあります。
  • ファイルの所有者(またはスーパーユーザー)だけが、ファイルの所有者を変更できます。ただし、SunOS 5.10ではPOSIX_CHOWN_RESTRICTEDというコンフィギュレーションオプションが有効になっており、ファイルの所有者は所有者IDを変更できません。
  • ただし、スーパーユーザーは所有者IDを変更することができます。POSIX_CHOWN_RESTRICTEDを無効にするには、/etc/systemファイルに「set rstchown = 0」を挿入します。
回答を見る
  • ベストアンサー

chownでファイル所有者なのに別の所有者に変更できない

SunOS 5.10を使っていますがchownでファイルの所有者変更をしたいのですが、所有者で実行しても「所有者ではありません。」とメッセージがでてエラーとなります manで見ると 「ファイルの所有者(またはスーパーユーザー)だけが、ファイルの所有者を変更できます。 オペレーティングシステムは所有者の変更を制限するコンフィギュレーションオプション{_POSIX_CHOWN_RESTRICTED}を持っています。 このオプションが有効なときは、ファイルの所有者はそのファイルの所有者IDを変更することができません。 このオプションに関係なく、スーパーユーザーだけが所有者IDを変更できます。コンフィギュレーションオプションを設定する場合は、 /etc/systemファイルに次の行を挿入してください。 set rstchown = 1 このオプションを無効にする場合は、/etc/system ファイルに次の行を挿入してください。 set rstchown = 0 デフォルトでは{_POSIX_CHOWN_RESTRICTED}は有効です。system(4)とfpathconf(2)を参照してください。」 と書いてあり所有者でも使えそうですが、使える方法がmanで見てもわかりません。

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

オンラインのマニュアルを読んだら (英語の) system(4) の最後にこんな記述がありました: Notes The /etc/system file is read only once, at boot time. ちゃんと man に書いてあるやん.

kashi0729
質問者

補足

すいません。man chown で見る限り 「デフォルトでは{_POSIX_CHOWN_RESTRICTED} は有効です。system(4) とfpathconf(2) を参照してください。」 とは書いてありました。 system(4)へのたどりつき方がわかりませんでした。 man -s 4 system でいけるのですね知りませんでした・・・ 翻訳すると ブート時刻に、/etc/systemファイルは一度だけ読まれます。 ですね。 set rstchown=0 と/etc/systemに記述してリブートすれば所有者でも使用できるという事になるようですね。セキュリティの問題はあるみたいですが。 色々ありがとうございました。初心者なので助かりました。

その他の回答 (2)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

最近 SunOS には全然触っていないのでなんともですが, /etc/system は書き換えるだけじゃダメで再起動する必要があるとか, そんなことはないですかね.

kashi0729
質問者

補足

hostsやpasswdなどのファイルへの追加は編集した後すぐに使用できるようになるので再起動は必要ないと思うんですけどね・・・ manにも書いていないし・・・ ただ環境変数にsetですよね?manの追加してくださいって所は。 となるとsystemがいつ読み込まれるかってことになるんですかね? 少なくともchownコマンドがsystemファイルを見ていてさらに rstchownの環境変数を見てるって事になるはずですよね。 他のUNIX関係のコマンド紹介のようなサイトでスーパーユーザ以外 使えないと書いてあるところもあるのですが、それだったらmanのような 書き方しないよなぁ~って思ったのですが。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

その man の文章をよく読めば, 「使える方法が man に書いてある」ことが分かります. 実際, ・デフォルトでは所有者であっても chown できない ・コンフィギュレーションオプションを変更すれば所有者が chown できるようになる ・そのためには /etc/system を変更しなければならない と書いてありますね.

kashi0729
質問者

補足

Tacosanさん回答ありがとうございます。 補足です。 管理者でもなくあまり詳しくないのですが、 確かに今デフォルト状態の為使用できないようです。 「このオプションを無効にする場合は、/etc/system ファイルに次の行を挿入してください。 set rstchown = 0」 とあるので、実際/etc/system ファイルに上記setを追加したのですが 結果は同じでした。

関連するQ&A

  • chownの使い方

    chownを使ってプログラミングしていますが、所有者が変わりません。 変更したいファイルはtmpの中にあります chownの書式は chown ユーザーID(直接入力),グループID(直接入力),"tmp/.$id._pfl" or die "chown 失敗"; です。 よろしくお願いします。

  • <自分が所有者のファイルの所有者を変更出来ません>

    <自分が所有者のファイルの所有者を変更出来ません> SUSE Linux で、chown コマンドで所有者を変更しようとするのですが、 エラーとなり、困っています。 現象としては以下のようなものです。 (yamada 所有の sample.csh を、yamada 自身 が 所有者を kato にしようとしています) # who am i yamada pts/0 2010-05-11 13:53 (XXX.XXX.XXX.XXX) # ls -l sample.csh -rwxrwxrwx 1 yamada irap 10347 2010-05-11 10:14 sample.csh* # chown kato sample.csh chown: `sample.csh' の所有権を変更中: 許可されていない操作です

  • ファイルの所有者を変更する

    Windows XP Pro SP3 を使っています ある時ふと気づくと起動しないアプリケーションが出てきました。 「指定されたデバイス、パス、またはファイルにアクセスできません。アクセス許可がない可能性があります。」と表示されます。 そこで、そのアプリケーション(Winamp) を入れ直そうと思いアンインストールしましたが、アンインストーラーでファイルが削除出来ませんでした。 dir /Q で見てみると (抜粋) 2008/09/01 10:10 <DIR> COLON\manager System 2008/08/04 07:50 64,000 ... tataki.dll 2008/08/04 08:04 1,345,376 ... winamp.exe 2008/08/04 07:50 46,592 ... zlib.dll と、所有者が「...」と存在しないユーザになっていました。 SYSTEM 権限になってコマンドプロンプトから del コマンドを発行してみましたが「アクセスが拒否されました。」と表示され SFU の chown, rm でも、「(chown|rm): winamp.exe: Permission denied」と変更できません。 このファイルを削除するにはどうすれば良いのでしょうか。

  • Thunderbirdのファイルで所有者の変更

    少し確かめたいことがありまして Thunderbird の Profiles の中の Inbox -rwxr-xr-x 1 llb root 25712987 1月 11 16:34 Inbox の所有者の変更を試そうとしたのですが、 llb@myship:‾$ su - パスワード: root@myship:‾# chown temp /media/Datas/Thunderbird/Profiles/m94ksibx.default/Mail/pop.gmail.com/Inbox chown: `/media/Datas/Thunderbird/Profiles/m94ksibx.default/Mail/pop.gmail.com/Inbox' の所有者を変更中: 許可されていない操作です となってしまいます。 別パーティションのファイルは 所有者を変更する時に 特別な配慮が必要ということでしょうか? もし Thunderbird の仕様ということなら、あきらめるしかありません。 可能性としては考えにくいですけど。 なぜこのようなメッセージが出るのでしょうか? よろしくお願いします。

  • 所有者の設定について

    元々rootだったファイルの所有者を変えて、後で、ファイルの所有者をchown で「システム」(root)に戻すと、元の状態にもどりますか?それとも何か副作用がありますか?

    • ベストアンサー
    • Mac
  • ファイル所有者を「apache」へ変更する理由は?

    ■現状 ・VPS(CentOS 6.x)に、phpMyAdminを入れている最中です ■質問1 ・所有者をapacheへ変更する理由は? ・ネットを見ていたら、「phpMyAdmin」ディレクトリの所有者をapacheへ変更しているサイトがあるのですが、どうしてrootから変更するのでしょうか? そうしなければいけない? あるいはそうした方が良い? ■質問2 ・サイトによって書き方に違いがあるのですが、何が違うのでしょうか? ・chown apache:apache /★★/phpmyadmin/config.inc.php ・chown -R root.apache /★★/phpmyadmin/ ■質問3 ・yumを利用してインストールした場合、リンク先のようになったのですが、この2つにはそれぞれどういう役割の違いがあるのでしょうか? ・また、一般的に「yumを利用してインストール」する場合、このような感じで設定ファイルは自動作成されるものなのでしょうか?(質問趣旨としては、出来れば事前に、もしくは事後にでも、コマンド打つことにより何らかのファイルが自動生成されるなら知りたいです) ・慣れの問題でしょうか? ▽【Linux】【phpMyAdmin】メモ -- config.inc.phpの場所について - zhuweichenの日記   http://d.hatena.ne.jp/zhuweichen/20130228/1362044999

  • 所有権の一括変換

    RedHatLinux9でサーバーを作りました。 その際旧サーバーのSolarisからFTPでバックアップをとり、 データを移動させたのですが 当り前と言えば当り前で、所有者とグループが全部rootになってしまったんです。ftpはrootでログインしましたから。(tarで固めてからできればよかったんですが容量に余裕がなくFTPで落したんです。) この為、所有者の変更をしなければならないのですが ユーザー数が400程ある為、とても手作業ではできないので、ユーザー名をpasswdファイルから抜き出し chown user user chown user1 user1 chown user2 user2 ・ ・ ・ ・ ・ ・ といった内容のhenkan.prnというファイルを作り実行属性をつけて source henkan.prn としたらカレントディレクトリ内のファイルの所有者は問題なく修正できました。ただこれだとその下のフォルダ内のファイルには全く適用されないので困ってます。 何かいい方法はないでしょうか?? chmod なら-R つければできますよね。 でもchownでは使えないみたいなので。 よろしくお願いします

  • htmlファイルの要素を別ファイルにしたい

    ローカルで利用するhtmlファイルを作成しています。 <input type="text" autocomplete="on" list="mylist"> <datalist id="mylist"> <option value="1行目"></option> ・ ・ <option value="200行目"></option> </datalist> datalistのoptionが200行以上あり、 HTMLに直接書いて管理するのがキツイと判断しました。 そこで、別のテキストファイルなどにし HTMLにChildを追加していけば良いのではないかと思ったのですが ローカルのテキストファイルが読めずに困っています。 最初の「require」で引っかかってしまうため上手くいきません。 要素を別ファイルに置いておき、参照できるような いい方法は無いでしょうか。 <script language="javascript"><!-- function TEST() { const fs = require('fs'); const readline = require('readline'); const rs = fs.createReadStream('data/List.txt'); const rl = readline.createInterface({ input: rs }); rl.on('line', (line) => { console.log(line);}); } // --></script> お手数をおかけしますが、回答よろしくお願いいたします。

  • PHPにて所有者名を変更出来る方法を教えて下さい。

    下記プログラムのように、あるサーバーの中のデーターをディレクトリー(/hogehoge)ごと別の ディレクトリー(../test)にコピーを行い、FFFTPにてファイルの更新を行いたいのですが、 コピー後は所有者名が変わってしまい属性(パーミッション)の変更が出来ず、修正や削除も出来ません。 どうも所有者名がApacheになっているようです。 勿論プログラム上からなら削除や修正は可能ですが、どうしてもFFFTPから操作出来ないと困るのです。 プログラムから所有者名を指定する方法を教えて戴きたいのです。 FFFTPで見ますと、所有者名は今までのどのファイルもディレクトリーも数字で、「1664」ですが、 PHPで作成コピーしたファイルを見ますと「48」です。 所有者名を「1664」にしたいのです。 そうすればパーミッションの変更が出来ると思います。 因みにこの方法を試しましたが変更出来ませんでした。 使い方が間違っているのでしょうか。それともスーパーユーザでないからかもしれません。 スーパーユーザにはどうしてなれるのでしょうか。 // 使用するファイル名とユーザ名 $file_name= "foo.php"; $path = "/home/sites/php.net/public_html/sandbox/" . $file_name ; $user_name = "root"; // ユーザを設定します chown($path, $user_name); 所有者名変更方法(末端の階層ディレクトリー及びファイルまで)をご教授下さいませ。 以上宜しくお願い致します。 <?php //あらかじめ指定された元フォルダ名 $imageDir = "hogehoge"; // 作りたいフォルダ構造 $structure = '../test'; // 入れ子構造を作るには、$recursive パラメータを // mkdir() に指定しなければなりません if (!mkdir($structure, 0777, true)) { die('Failed to create folders...'); } chmod($structure, 0777); $path = '../test/'; $user_name = 'myname'; // ユーザを設定します chown($path, $user_name); //あらかじめ指定されたコピー先フォルダ名 $destDir = "../test"; copyDirectory($imageDir,$destDir); function copyDirectory($imageDir, $destDir) { $handle=opendir($imageDir); while($filename=readdir($handle)) { if(strcmp($filename,".")!=0 && strcmp($filename,"..")!=0) { if(is_dir("$imageDir/$filename")) { if(!empty($filename) && !file_exists("$destDir/$filename")) mkdir("$destDir/$filename"); copyDirectory("$imageDir/$filename","$destDir/$filename"); } else { if(file_exists("$destDir/$filename")) unlink("$destDir/$filename"); copy("$imageDir/$filename","$destDir/$filename"); } } } } print ディレクトリー作成成功しました。 ?>

    • 締切済み
    • PHP
  • solaris10のコンフィグレーションファイルが反映されません

    solaris10のコンフィグレーションファイルが反映されません。/etc/systemにセマフォなどを設定し、再起動をかけても設定した情報が反映されません。どうしてでしょうか?