すべてのユーザーがプログラムにアクセスできるように正しいフォルダ権限を設定するにはどうすればよいですか?

すべてのユーザーがプログラムにアクセスできるように正しいフォルダ権限を設定するにはどうすればよいですか?

マイコンピュータのすべてのユーザーがアクセスできるプログラムXがあります。だからホームフォルダに入れることはできません。だから私は聞いた/usr/local 正しい場所ですそしてそれを試しました。

ただし、そのフォルダのフォルダ権限/usr/local/bin/はですdrwxr-xr-x調べるはい755。だから私はprogramsusingというフォルダを作成し、sudo mkdir programsその権限をusingを使用して変更します。sudo chmod 775 programsホームフォルダ内のフォルダに権限があり、775これが付与するのが正しい権限だと思うからです。

cd /usr/local/programs/これで、プログラムXをデフォルトフォルダからこのprogramsフォルダにコピーしようとしましたが、mv ~/X/ .エラーが発生しますmv: cannot move '/home/nav/X/' to './X': Permission denied

/usr/local/programs私はこれが本当かどうかを再確認し、775実際にそうしました。今はその時を使っXてコピーできると思いましたが、programssudoコマンドを使用した変換すべてのファイルを入れましたが、programs全体775のプロセスに何か問題があるような気がします。

それでは、どのようにインストールし、Xすべてのユーザーがアクセスできるようにしますか?これをやろうとする理由は、一度入れたら、/usr/local/programs/以下のスクリプトを作成してアプリケーションメニューからアクセスできるようにしたいからです。

スクリプト:

スクリプトの生成:
sudo -H gedit /usr/share/applications/X.desktop

このファイルに以下を貼り付けます。

[Desktop Entry]
Version=1.0
Name=X
Comment=Program X
GenericName=IDE
Keywords=SomeProgram, X
Exec=/usr/local/programs/X/xyz %u
Terminal=false
X-MultipleArgs=false
Type=Application
Icon=/usr/local/programs/X/icons/icon.xpm
Categories=GNOME;GTK;
StartupNotify=true

答え1

/usr/local/bin プログラムを配置するための正しいディレクトリ。だから:

sudo cp ~/X/xyz /usr/local/bin

そして動かさないで移動すると権限も移動するため、コピー中にプログラムにデフォルトの権限が付与されます/usr/local/bin

また、/usr/local/binすでにパスにアイコンを配置している場合は、/usr/share/pixmapsデスクトップファイルは次のようになります。

[Desktop Entry]
Version=1.0
Name=xyz
Comment=Program xyz
GenericName=IDE
Keywords=SomeProgram, xyz
Exec=xyz %u
Terminal=false
X-MultipleArgs=false
Type=Application
Icon=icon.xpm
Categories=GNOME;GTK;Development;IDE
StartupNotify=true

ホームディレクトリにアイコンファイルがあるパスxyzにあるプログラムの場合。Xicon.xpm

公式カテゴリ一覧ねえ

答え2

マイコンピュータのすべてのユーザーがアクセスできるプログラムXがあります。だからホームフォルダに入れることはできません。それでぴったりの場所という言葉を聞いて/usr/local一度試してみました。

はい、/usr/localシステム管理者はコンピュータのすべてのユーザーが利用できる適切な場所にプログラムをインストールできます。

ただし、/usr/local通常はサブディレクトリに分割され、バイナリ、ライブラリ、その他のデータディレクトリなどのサブディレクトリにプログラムをインストールする必要がありますbinlibshare/usr/local/bin/X/usr/local/lib/libX.so.1share

通常、ビルドしたLinuxプログラムは/usr/localこのコマンドを使用してmake installインストールできます。より正確には、sudo make installルートだけがこれらのサブディレクトリに書き込むことができるからです。 (少なくともこれはソースコードで構築されたソフトウェアのためのかなり一般的な規則です。)

/optまた、各プログラムを独自のサブディレクトリに保持する階層もあるため、ディレクトリには独自のサブディレクトリなどが/opt/X-1.0/あります。たぶんこれはあなたが描いたものに近いです。binlibshare

ちなみに、そのフォルダのフォルダ権限が755/usr/local/bin/drwxr-xr-x確認されました。

権限が正しいです。

実際に経験している問題は権限とは関係ありませんが、唯一のルート書くことができる/usr/local、それはまさにそれです。

ソースインストーラの使用に関する上記のポイントを参照してくださいsudo make install(ソースからビルドし、ソースがこの機能をサポートするMakefileを使用していると仮定します)。簡単に言えば、sudo期待どおりにrootとしてこれらのファイルを作成し、rootの所有権を持つ必要があります。

そのため、sudo mkdirプログラムを使用してプログラムというフォルダを作成し、sudo chmod 775プログラムを使用してその権限を変更しました。なぜなら、ホームフォルダのフォルダに権限775があって正しい権限だと思ったからです。

しないでください。/usr/local実際にはこのように使用してはいけません。 (だからといって、人々が同様の方法で乱用しないという意味ではありませんが、正しく使用する方法を学ぶか、より適切な場所を見つけることをお勧めします。)

CDに移動し、/usr/local/programs/次のコマンドを使用してプログラムXをホームフォルダからプログラムフォルダにコピーしようとしましたが、mv ~/X/ .エラーが発生しました。mv: cannot move '/home/nav/X/' to './X': Permission denied.

問題はルートが必要だということです。使用するとsudo役に立ちますが、以下のファイルはX/依然としてユーザー所有です。 (これを行うと、システムの他のユーザーがそのファイルを使用することを必ずしも防ぐことはできませんが、通常、これらのファイルをルートが所有することを/usr/local望みます。)

権限に問題はありません。通常、ルートの場合は0755が正しいです。必要なのは、ユーザーがこれらのバイナリを実行できるように、「他の」ビットを読み取って実行することだけです。

前述のように、プログラムを独自のサブディレクトリに保存するには、その場所が/optより適切である可能性があります。しかし、この場合でも、一般的にこれらのファイルのルート所有権を持ちたいです。また、/opt人気が減少するにつれて、これはやや珍しい選択になる可能性があります。

これを正しく行う方法

残念ながら、Linuxでソフトウェアを正しくインストールすることは、インストールするソフトウェアによって大きく異なります。インストール方法は通常、ビルド方法と使用するプログラミング言語によって異なります。

私は以下をお勧めします:

  1. まず、Linuxディストリビューションにそのソフトウェアパッケージが付属していることを確認してください。その場合は、該当するパッケージマネージャ(など)を使用してapt-getパッケージyumdnfインストールしてください。デフォルトのリポジトリにパッケージがない場合は、パッケージをインポートできる拡張リポジトリがあることを確認してください。

  2. ウェブサイトからこのソフトウェアをダウンロードした場合は、バイナリを含むタールボール()ではなく、配布用のバイナリパッケージ(またはなど.deb)で提供されていることを確認してください。.rpm.tar

パッケージのインストールはシステムに正しく統合されているため、常に好まれます。 Linuxディストリビューションのパッケージ(利用可能でディストリビューションによって提供されるバージョンを受け入れることができると仮定)は、システムで正しく機能する可能性が高くなります。

  1. ソースからビルドした場合にインストールしてみてください/usr/local。これは通常、autoconf/automake を使用するパッケージの場合のデフォルト値です。./configure.shビルドの開始時に実行したいスクリプトがある場合は、通常パラメータを渡すことで--prefixカスタマイズ./configure.sh --prefix=/usr/localできます。ソフトウェアをビルドしたら、sudo以下を使用してインストールしますsudo make install

  2. ソフトウェアが他のビルドシステムおよび/またはプログラミング言語を使用している場合は、同じことを行うために同等の指示があることを確認してください。ソースパッケージには通常、INSTALLソースツリーの上部に大文字の名前を付けたファイルが用意されており、そのファイルを構築/インストールして使用を開始する方法に関するガイドラインが含まれています。READMEお読みください。

残念ながら、そこには多くの変更があります。いくつかの標準がありますが、実際には多すぎます。 Linux/Unixでソフトウェアを構築/インストールするには、混乱したエラーメッセージを解読し、指示を見つけて読んで、期待どおりに動作しているか確認するなど試行錯誤が伴うことが多いです。してください...定期的に始めると作業が簡単になりますが、解決すべき珍しい点は常にあります。

そのため、ディストリビューションのパッケージを使用する方がはるかに優れています。少なくとも標準があり、パッケージをインストールして管理するための標準ツールセットがあり、ビルドの詳細はすべて処理されます。

  1. ウェブサイトでバイナリタールボールを入手した場合は、タールボールを解凍して使用する方法の手順を確認してください。推測することができますが、間違いを犯すことも、少なくともきれいではないかもしれません。ルートとして直接tarballを解凍することを検討してください(使用sudo)。 tarball にプログラム名を付けたサブディレクトリが付属している場合は、そのサブディレクトリをベース/optディレクトリとして使用することを検討してください。ユーザーがコマンドラインから呼び出すバイナリの場所の1つにシンボリックリンクを作成することを検討してください$PATH(大丈夫です/usr/local/binが、/opt/binすでにファイルにある場合にのみ可能です)。$PATH

事前にビルドされたバイナリセットを解凍するのが最も難しいことがよくあります。このようなことがある場合は、パッケージを正しく開く方法についての指示を見つけてください。

この情報があなたが持っている特定のパッケージを管理する方法を決定するのに役立つことを願っています!

関連情報