init = / myscriptを使用して起動コマンドラインから呼び出す独自のPID 1初期化スクリプトを作成しようとしています。すべてのカーネルの物理ファイルシステムで動作させるにはどうすればよいですか?
initrdで実行すると、うまく機能し、背中をマウントできます。ただし、initrdなしでファイルシステムで使用すると、次の理由でマウントできません。
mount: only root can do that (effective UID is 1000)
失敗したコマンドを追跡すると、必然的にgeteuid32()が実行され、1000が返されます。なぜ?どのようにeuid 0で実行できますか?
答え1
init
on には特別な処理がないので、initrd
他の問題があるでしょう。
次回実行すると、root
このビットが設定されるとeuid
バイナリの所有者が一致します。setuid
タイトルを確認してください/bin/mount
。
答え2
権限のないアカウントでSudoを使用する
このエラーは問題を通知します。つまり、マウントを呼び出すために、UID 0のルートアカウントではなく、UID 1000の「削除」アカウントを使用しています。多くのシステム機能をrootとして実行する必要があります。 initrdなどの多くのプロセスがrootとして実行されるため、コマンドを実行するのに十分な権限があります。ただし、毎日のユーザーアカウントで何かを実行するには、次のものが必要です。数またはSudo他のユーザーで操作を実行します。
~のため山、次のように呼び出したいと思います。
sudo mount /mnt/foo
このフラグを指定しないと、-u
sudo コマンドのユーザーはデフォルトで root に設定されます。 UID 1000のアカウントが適切に設定されている場合は、sudoを介してコマンドを実行して説明した問題を解決します。/etc/sudoersまたは/etc/sudoers.d文書。
また、見ることができます
man 5 sudo
man 5 sudoers
man 8 visudo