modprobe -r psmouse
root権限なしでユーザーがorを実行するだけで実行できるシェルスクリプトを作成したいと思います
modprobe psmouse
。可能ですか?私はこのモジュールを持っています:
$ ls -l /lib/modules/4.4.0-116-generic/kernel/drivers/input/mouse/psmouse.ko
-rw-r--r-- 1 root root 219670 Feb 12 17:06 /lib/modules/4.4.0-116-generic/kernel/drivers/input/mouse/psmouse.ko
権限を変更するだけで十分ですか?
答え1
sudoセキュリティポリシーを調整してルールを作成します/etc/sudoers.d
。
- 定義されたユーザーセット(必要に応じて1人のユーザーまたはユーザーのセットにすることもできます)
- だけ実行
modprobe
しrmmod
、 - cmdパラメータでのみ
psmouse
、 - sudoパスワードの有無にかかわらず。
これは"/etc/sudoers.d"が一般的に使用されています。だからここに...(単一のホスト構成を仮定し、見つかったファイルがソートされた語彙順に解析されることを/etc/sudoers.d
覚えています。)sudo
- その行を必ず
/etc/sudoers
含めてください。#include /etc/sudoers.d
/etc/sudoers.d/00_aliases
私は通常、ユーザー、cmd、ホスト、およびグループエイリアスを定義する個人用の基本ファイルを使用します。これにより、デフォルトのデフォルトシステム設定を含むsudo visudo
Tweakの使用を大幅に減らすことができるだけでなく、他のファイルでも最初に解決されるエイリアスを使用します。/etc/sudoers
/etc/sudoers.d/
sudo
/etc/sudoers.d/00_aliases
/etc/sudoers.d
たとえば、20_psmouseという名前のファイルをに配置します。
含まれている sudoers.d ファイルを広く使用する予定がない場合は、次のことができます。いいえ/etc/sudoers.d/00_aliases
次のように一時エイリアスを作成し、埋め込みファイルに直接含めます。
User_Alias MOUSE_TWKR = user1[, user2[, user3[, ...]]]
Cmnd_Alias MOUSE_MOD_TWK = /usr/bin/modprobe, /usr/bin/rmmod
MOUSE_TWKR your-host = NOPASSWD: MOUSE_MOD_TWK psmouse
真実はプリンにあるので、次のことを行う必要があります。
1)それを参照してくださいman sudoers
(Archlinuxの例は2038年の1911行目から始まります!)
2)いくつかの実験を行う必要があります。たとえば、上記のルールが許可されすぎていて、cmdおよび管理対象コンテキスト内で
オプションの使用を制限したい場合は、ファイルエントリを次のように置き換えます。modprobe
rmmod
MOUSE_TWKR your-host = NOPASSWD: MOUSE_MOD_TWK [!-] psmouse
...そしてパスワードを強制的に入力してください。
MOUSE_TWKR your-host = MOUSE_MOD_TWK [!-] psmouse
(*)「your-host」をホスト名に変更するか、ALL
すべてのホストを許可に置き換えると、ホストの例になります。
答え2
ファイルの権限を変更すると、psmouse.ko
誰かがファイルを変更できるようにする以外に多くのことを行いません(悪いことになるでしょう!)と実行を許可することができますが、modprobe
理論rmmod
的にロードしてアンロードできるので危険です。 。システムにすべてのカーネルモジュールがインストールされています!
必要なのは、小さなヘルパースクリプトを作成し、許可されたユーザーがそれを実行できるようにすることですroot
。
スクリプトの作成:
/usr/local/bin/load_mouse.sh
#!/bin/sh /sbin/modprobe psmouse
/usr/local/bin/unload_mouse.sh
#!/bin/sh /sbin/rmmod psmouse
/usr/local/bin
これらのスクリプトは、所有者root:root
と権限を持つ公的にアクセス可能なディレクトリ(私が好むが個人的な好み)になければなりません755
。root
所有権は必須ではありませんが、人々が変更するのは難しくなります。このスクリプトはスーパーユーザーとして実行する必要があるため、安全でなければならないことを忘れないでください。ユーザーが実行できるようにする
visudo
に含まれるファイルを使用または追加するには、/etc/sudoers.d
以下を追加します。username ALL=(root) /usr/local/bin/load_mouse.sh,/usr/local/bin/unload_mouse.sh
username
適切なユーザー名に置き換える%groupname
か、グループメンバーがこのコマンドを実行できるようにしたい場合。sudo /usr/local/bin/load_mouse.sh
これで、ユーザーは(または)を使用してスクリプトを実行できますunload_mouse
。/usr/local/bin
それが彼らのものなら、それもPATH
大丈夫sudo load_mouse.sh
です。(オプション)
sudo
通話終了sudo
最後に、これを簡単に入力/実行できるように、別のスクリプトでラップできます。/usr/local/bin/mouse_on
#!/bin/sh sudo /usr/local/bin/load_mouse.sh
/usr/local/bin/mouse_off
#!/bin/sh sudo /usr/local/bin/unload_mouse.sh
特別な権限は必要ありませんが、
root:root
権限があることが好きです755
。これで、ユーザーはmouse_on
andmouse_off
(スクリプトの実行を許可する限り)のみを入力できます。