sedは別のユーザーとして実行されていますか?

sedは別のユーザーとして実行されていますか?

sed変更するスクリプトがあります/etc/shadow。実際の変更は重要ではありません。ただ例を挙げます。

root@device:~ sed -i 's/root:\(.*\):0:0/root:\1:10:0/' /etc/shadow
sed: can't create temp file '/etc/passwdH5HWP7': Permission denied

出力が示すように、一部の権限エラーがあるようですが、コマンドを実行しています。root

組み込みディストリビューションがsed使用されます。BusyBox v1.22.1

既定のフォルダで例を試してもエラーは発生しません。そして、/etc/shadowテキストエディタを介しても正常に編集が可能です。

sedroot以外のユーザーとしてファイルを作成していますか?

答え1

/これは、(contain /etc)が読み取り専用ファイルシステムですが、シンボリックリンクと読み取り/書き込みファイルシステムに他の動的ファイルがある/etc/shadowため/etc/passwdです。

shadowこれにより、直接編集してファイルを送信できますpasswdsed -i実装が実際に更新されていないため失敗します。代わりに、一時ファイルを作成し、変更を記録し、元のファイルを一時コピーに置き換えます。表示されるエラーメッセージは、sed(一時)ファイルを書き込めないことを示します/etc/passwdH5HWP7

解決策?-i一時ファイルの場所を直接使用して制御しないか、-iフラグのファイル名を指定してください。どちらの場合も、読み取りおよび書き込みアクセス権がある場所にファイル名を指定する必要があります。

関連情報