読み取り専用bashシェルを開く方法

読み取り専用bashシェルを開く方法

いくつかのファイルを変更せずに参照したいと思います。特定のコマンドを使用しない可能性がありますが、予期しないことが起こるのではないかと心配です。

何も書く権限を持たないbashサブシェルを作成する方法はありますか?それはまるでbash donotmakechanges

他のユーザーを作成することもできますが、それはあまりにも過度に見えます。

答え1

バインドマウントを使用して、ディレクトリツリーを読み取り専用でマウントできます。ルートアクセスが必要です。

# mount -o ro --bind /home /home_ro
# cd /home_ro
# touch file
touch: cannot touch ‘file’: Read-only file system

次に、/home_roに移動します。

答え2

sudo -u nobody bash

ガイドライン

  1. 他のすべてのユーザーがアクセスできるファイルには引き続きアクセスできます。たとえば、everyone'sファイル:

    $ touch everyone\'s
    $ chmod 222 everyone\'s
    

    それでも次のように書くことができますnobody

    $ sudo -u nobody touch everyone\'s
    
  2. 他の誰もアクセスできないファイルにアクセスできます。たとえば、nobody'sファイル:

    $ touch nobody\'s
    $ sudo chown nobody nobody\'s
    

    一般ユーザーは以下を書き込めません。

    $ touch nobody\'s
    touch: cannot touch "nobody's": Permission denied
    

    ただし、次のように書くことができますnobody

    $ sudo -u nobody touch nobody\'s
    
  3. ユーザーは、nobody次の説明に従ってこの目的に使用することはできません。https://askubuntu.com/a/674397/1086669

  4. 実行するには権限が必要です。sudo

それに加えて、通常、書き込み可能ファイルを読み取り専用でレンダリングします。

$ touch mine
$ sudo -u nobody touch mine

関連情報