web-dev-qa-db-ja.com

システムに新しいパーティションを追加し、プログラムの実行時に「許可が拒否されました」

可能性のある複製:
buntuはデータパーティションから権限を奪いました

NTFSパーティションをext4で再フォーマットしました。Windowsではなく、現在のUbuntuインストールで使用したいからです。 /etc/fstabにエントリを追加して、起動時にマウントします。マウントポイントは/home/username/binです。 /home/username/binとそのすべてのサブディレクトリの所有者を通常のアカウントとそのユーザーグループに変更しました。最後に、すべてのアクセス許可を755に設定します。

私の/etc/fstabは次のようになります。

proc        /proc               proc    nodev,noexec,nosuid               0       0
UUID=[uuid] /                   ext4    errors=remount-ro                 0       1       
UUID=[uuid] /data               vfat    utf8,umask=007,gid=46             0       1
UUID=[uuid] /home               ext4    defaults                          0       2
UUID=[uuid] /home/username/bin  ext4    rw,suid,dev,exec,auto,user,async  0       2
UUID=[uuid] none                swap    sw                                0       0

私の問題は、この新しいパーティションでファイルを読み書きできるのに、そこにあるアプリケーション/プログラムを実行できないことです。通常のユーザーとして、私は常に「permission denied」エラーを受け取ります。ルートとして(Sudoを使用)、何も起こりません。つまり、すぐにシェルプロンプトに戻ります。アプリケーションはテキスト出力を生成するか、ウィンドウを開く必要があります。これらのアプリケーションの一部はバイナリであり、一部はスクリプトです。私は./programでそれらを起動しようとします。それらをホームフォルダーにコピーして戻すと、問題なく実行できます。

実際、これらのアプリケーションをホームフォルダーの別のサブディレクトリ/home/username/appsに数か月間保持し、そこから問題なく実行しました。

どうすれば修正できますか?何が間違っていますか? :)

5
Caspar

解決しました。問題は、/etc/fstabのマウントオプションでした。それらをdefaultsに変更する(usernouserに変更するのと同等)ことで問題が解決し、すべてが正常に機能するようになりました。

2
Caspar

新しく作成したext4パーティション上のファイルにアクセスできますが、プログラムを実行することはできません。実行すると、「Permission denied」エラーが表示されます。 reverendj1 には 推奨 があるため、これは2つの可能性を示唆しています。

  • ファイルには、execute permissions がない場合があります。コマンドラインからファイルに実行権限を付与するには、次を実行します。

    chmod +x filename

    ファイルの所有者に実行許可を与えるだけの場合:

    chmod u+x filename

    Nautilus(ファイルブラウザ)でファイルに実行権限を付与するには、ファイルを右クリックして、Propertiesをクリックします。 許可タブをクリックします。 ファイルをプログラムとして実行することを許可するボックスをチェックし閉じる

    enter image description here

  • パーティションはnoexecでマウントできます。これを確認するには、mountを実行し、noexecが関連するエントリの横にリストされているかどうかを確認します。 /etc/fstabからマウントしているので、noexecを削除できます。

さらに、次のことに注意してください。

  • 通常、常にではありませんが、実行可能ファイルは通常の場所に保存する必要があります:/bin/sbin/usr/bin/usr/sbin/usr/local/bin/usr/local/sbin/opt/bin~/bin。本当にそのドライブに実行可能ファイルが必要ですか?質問の編集を行い、達成したいことに関する詳細情報を提供することができます。

  • 相対パスを指定して、現在のディレクトリにあるコマンドラインからプログラムを実行するには、その前に./を付ける必要があります。

    ./program
  • アプリケーションではなく.desktopファイルを起動する場合:

    1. 実行可能ビットを設定する必要はありません。
    2. スクリプトやプログラムであるかのように実行するのではなく、代わりに このように

      xdg-open application.desktop
  • これらがWineで実行しているWindows実行可能ファイルである場合、実際には実行可能ビットを設定する必要はありません。そうでない場合は、右クリックしてWine Windows Program Loaderで開くか、次のようにコマンドラインから起動します。

    wine program.exe

(これは以前の回答と非常によく似たアドバイスを提供するので、これを作成することにしました community-wiki 。)

4
Eliah Kagan

これを無視する-元の投稿はNTFSを暗示していますが、そうではありません。

NTFSパーティションをマウントすると、ext3やext4とは異なり、グループのみが許可を持たないユーザーのみに設定されたアクセス許可でマウントされます(rwx ------)。 chmodを使用して権限を設定するか、chownを使用して所有者を設定すると、ディレクトリの権限のみが変更され、ディレクトリ内のすべての権限は変更されません。

解決策は、/etc/fstab/で正しいパラメーターを指定することです。自分を所有者にするために私が正常に使用するのはこれです(0000000000000000を正しいUUIDに変更し、LOGIN_NAMEをログイン名に変更します):

UUID=0000000000000000 /home/LOGIN_NAME/bin ntfs-3g auto,users,uid=LOGIN_NAME,gid=LOGIN_NAME,utf8,dmask=002,fmask=113 0 0

これは、すべてfstabの1行である必要があります。

これは、NTFSアクセス許可がネイティブのLinuxアクセス許可とは異なる方法で実行されるため、Linuxで使用される特定の翻訳を指定する必要があるためです。

これを無視して終了 -------------

編集:

方向を間違えてすみません。

〜/ binディレクトリの所有者を変更することでこれを修正できると思いますafter初めてマウントします。 bashシェルで、コマンドSudo chown LOGIN_NAME:LOGIN_NAME /home/LOGIN_NAME/binを入力し、もちろんLOGIN_NAMEを自分の名前に変更します。

USBドライブを使用してこれをテストし、binディレクトリに正常にマウントしました。唯一の違いは、fstabでオプション「auto」のみを使用したことです。

2
Marty Fried

上記のようにfstabを編集した後でも、NTFSに保存されているシェルスクリプトを実行できず、Sudoでも同様の問題が発生していました。

マウントポイントディレクトリを作成したことがないことがわかりました。パーティションをアンマウントし、パーティションのマウントポイントディレクトリを作成しました。

mkdir /media/Windoze7

その後、再度マウントします。

Sudo mount -a
1
user15972

実行許可を設定する必要があります。 Nautilus(ファイルブラウザ)から、プログラムファイルを右クリックし、[アクセス許可]タブを選択します。 [ファイルをプログラムとして実行することを許可する]チェックボックスをオンにします。ターミナルから、次のこともできます。

Sudo chmod +x /path/to/myfile

また、fstabのパーティションにnoexecを指定していないことを確認してください。これにより、パーティション全体の実行が無効になります。

1
reverendj1

このext4パーティションをホームディレクトリ外のどこかにマウントしようとしましたか?たとえば、/ etc/fstabに次のようなエントリを設定します。

UUID=[uuid] /ext4bins  ext4    rw,suid,dev,exec,auto,user,async  0       2

他の場所にマウントしてファイルやアプリケーションを実行できる場合は、次のようなシンボリックリンクを作成することで、〜/ binからアプリケーションを実行できるという2番目の手順を実行して、目的の動作を取得できます。

ln -s /ext4bins /home/[username]/bin

[username]を自分のユーザー名に置き換えてください。これにより、/ ext4binsにマウントされたパーティションが/ home/[username]/binにマウントされているように見え、ファイルが/ ext4binsで実行可能である限り、〜/ binからも実行できます。例えば。

/ext4bins/myscript.sh

と同じように実行されます

~/bin/myscript.sh
0
OpensourceFool