可能性のある複製:
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
に数か月間保持し、そこから問題なく実行しました。
どうすれば修正できますか?何が間違っていますか? :)
解決しました。問題は、/etc/fstab
のマウントオプションでした。それらをdefaults
に変更する(user
をnouser
に変更するのと同等)ことで問題が解決し、すべてが正常に機能するようになりました。
新しく作成したext4パーティション上のファイルにアクセスできますが、プログラムを実行することはできません。実行すると、「Permission denied」エラーが表示されます。 reverendj1 には 推奨 があるため、これは2つの可能性を示唆しています。
ファイルには、execute permissions がない場合があります。コマンドラインからファイルに実行権限を付与するには、次を実行します。
chmod +x filename
ファイルの所有者に実行許可を与えるだけの場合:
chmod u+x filename
Nautilus(ファイルブラウザ)でファイルに実行権限を付与するには、ファイルを右クリックして、Propertiesをクリックします。 許可タブをクリックします。 ファイルをプログラムとして実行することを許可するボックスをチェックし、閉じる。
パーティションはnoexec
でマウントできます。これを確認するには、mount
を実行し、noexec
が関連するエントリの横にリストされているかどうかを確認します。 /etc/fstab
からマウントしているので、noexec
を削除できます。
さらに、次のことに注意してください。
通常、常にではありませんが、実行可能ファイルは通常の場所に保存する必要があります:/bin
、/sbin
、/usr/bin
、/usr/sbin
/usr/local/bin
、/usr/local/sbin
、 /opt/bin
、~/bin
。本当にそのドライブに実行可能ファイルが必要ですか?質問の編集を行い、達成したいことに関する詳細情報を提供することができます。
相対パスを指定して、現在のディレクトリにあるコマンドラインからプログラムを実行するには、その前に./
を付ける必要があります。
./program
アプリケーションではなく.desktop
ファイルを起動する場合:
スクリプトやプログラムであるかのように実行するのではなく、代わりに このように :
xdg-open application.desktop
これらがWineで実行しているWindows実行可能ファイルである場合、実際には実行可能ビットを設定する必要はありません。そうでない場合は、右クリックしてWine Windows Program Loaderで開くか、次のようにコマンドラインから起動します。
wine program.exe
(これは以前の回答と非常によく似たアドバイスを提供するので、これを作成することにしました community-wiki 。)
これを無視する-元の投稿は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」のみを使用したことです。
上記のようにfstabを編集した後でも、NTFSに保存されているシェルスクリプトを実行できず、Sudoでも同様の問題が発生していました。
マウントポイントディレクトリを作成したことがないことがわかりました。パーティションをアンマウントし、パーティションのマウントポイントディレクトリを作成しました。
mkdir /media/Windoze7
その後、再度マウントします。
Sudo mount -a
実行許可を設定する必要があります。 Nautilus(ファイルブラウザ)から、プログラムファイルを右クリックし、[アクセス許可]タブを選択します。 [ファイルをプログラムとして実行することを許可する]チェックボックスをオンにします。ターミナルから、次のこともできます。
Sudo chmod +x /path/to/myfile
また、fstabのパーティションにnoexec
を指定していないことを確認してください。これにより、パーティション全体の実行が無効になります。
この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