web-dev-qa-db-ja.com

Bash:ファイル書き込みの許可が拒否されました

私はこれに従いました チュートリアルガイド 「LKMを使用してCプログラムでLinuxProcファイルを作成する方法」。

モジュールを正常に作成してロードしました。次に、procファイルにエコーして、呼び出されるはずのメソッドが呼び出されることを確認します。

私が試してみました:

$ echo "hello" > /proc/procEntry123       # But it says permission is denied!
$ Sudo echo "hello" > /proc/procEntry123  # Same error message.

このファイルにエコーする権限を昇格するにはどうすればよいですか?私はこのシステムの唯一のユーザーおよび管理者です。

7
Sam

しかし、それは許可が拒否されたと言っています!

create_proc_entry()を呼び出すときに制限付きのアクセス許可を設定しているため、おそらくそう言っています。 (0644は "u = rw、go = r"に変換され、所有者に書き込み権限のみを付与します。デフォルトはrootになります。)

その前に「Sudo」を付けました。同じメッセージです。

>|などのリダイレクトは、実行中のシェルによって実行されます。beforeSudoを呼び出します。

Sudo sh -c "echo blah > /proc/blah"を使用するか、Sudo -sでルートシェルを実行する必要があります。

私は唯一のユーザーです-これは私自身の個人用マシンです!

Linuxではこれは問題ではありません。コンピューターの使用者に関係なく、ファイルのアクセス許可が適用されます。

それを望まない場合は、rootとしてログインするか、pam_capを使用してcap_dac_override機能を自分に与えますが、どちらの方法でもwill遅かれ早かれ問題が発生します。

14
user1686