sudoを使用してユーザーホームにファイルを書き込む

sudoを使用してユーザーホームにファイルを書き込む

まず、$HOME次のようにログインしました。/home/oleg

sudoを使用してコマンドを実行する必要があります。これはnpm installコマンドです。

sudo npm install -g suman

ただし、sumanモジュールのインストール後のスクリプト(現在構成済み)は元のユーザーのホームディレクトリに書き込みます/home/oleg/.suman。ただし、sudoを使用して上記のnpm installコマンドを実行しているため、そのディレクトリにアクセスできません/home/oleg/.suman

/home/oleg/.sumanこのディレクトリにrootアクセス権を付与できますか?

または、sumanのインストール後にスクリプトを単にrootユーザーのホームディレクトリにインストールする必要がありますか?

私はsumanを書いて以来:)777で.sumanディレクトリの内容を書くことができ、そのようにrootユーザーにフルアクセスを許可することができます。 rootユーザーとログインユーザーにのみ読み取り/書き込み/実行アクセスを提供するために.sumanディレクトリに定義する最小ファイル権限は何ですか?

ベストアンサー1

TL、DR:あなたの提案の中に良いことはありません。代わりに、rootとして実行するときにステータスファイルを以下に保存してください/var(に似ています/var/lib/suman)。

ルートにはすでに権限があります

ルートはシステム内のすべてのファイルにアクセスできます。したがって、ディレクトリの権限を変更しないでください。これはルートには影響しませんが、他のユーザーはディレクトリから読み書きできます。大衆の信仰にもかかわらず、chmod 777有用なことをすることはごくまれです。

ルートに許可するシステム上のすべてのファイルにアクセスします。一般的にこれで十分です。 「一般」ファイルシステムとは異なり、ユーザーを処理する特定のファイルシステムタイプに関連するいくつかの例外があります。 2つの主なケースは次のとおりです。

  • NFS:クライアントのルートは通常、サーバー上の他のユーザーにマップされますnobody。これは通常、ルートがファイルを開くときですnobody
  • FUSE(通常はホームディレクトリの暗号化に使用されるecryptfsを含む):特に設定しない限り(allow_otherルートでのみ使用可能なオプションを使用)、FUSEファイルシステムはそれをマウントしたユーザーのみが使用できます。

このような場合、ルートの明白な権限にもかかわらず、一部のファイルには直接アクセスできません。ルートはファイルを所有しているアカウントに切り替えることで、ファイルに効果的にアクセスできます。これはセキュリティ制限ではなく実装制限ですが、少し不便です。

ただし、ルートはこの権限を慎重に使用する必要があります。

通常、rootとして呼び出されますが、他のユーザーのホームディレクトリに設定されているプログラムがある場合は、そのユーザーがHOMEアクセスできないユーザーのホームディレクトリにファイルを作成しないでください。

すでに存在し、 oleg が所有している場合、/home/oleg/.sumanディレクトリ所有者は常にそのディレクトリのファイルを削除できるため、ファイルをどこに書き込むかは重要ではありません。必要なのは書き込み権限であり、所有者は常に自分にそれを付与できます。 )。 olegは、同じプログラムを実行するときに上書きする必要がある場合は、ルート所有ファイルを置き換えます。ただし、サブディレクトリを作成しないでください。 oleg は、サブディレクトリが空であってもそのサブディレクトリにアクセスまたは削除できません。

問題は、初めてrootとしてプログラムを実行すると/home/oleg/.suman

解決策

実行すると、sudo -H環境HOME変数がルートのホームディレクトリに設定されるため、プログラムはそのディレクトリにアクセスできません/home/oleg

しかし、時にはプログラムをrootとして実行し(root権限が必要なので)、ホームディレクトリを自分のディレクトリに設定するのが合理的です(設定ファイルを読むため)。もちろん、これはrootとして実行されているプログラムが設定ファイルを読み取ることができる場合にのみ機能します。ユーザーインターフェイスのカスタマイズは問題ありませんが、設定ファイルには実行コードなどを含めることはできません(たとえば、プリプロセッサを介したシェル転送なし)。この場合、プログラムは次のようになります。読むファイルは次から来ましたが$HOME記録されませんでした。

プログラムが一部の状態ファイルを保存する必要がある場合は、rootとして実行されたときにそのファイルを/varユーザーのホームディレクトリではなくシステムディレクトリ(下)に保存する必要があります。

おすすめ記事