プライベート/ユーザー固有のフォルダーなどを作成できますか?

プライベート/ユーザー固有のフォルダーなどを作成できますか?

私はよく、 にインストールしたソースから構築されたソフトウェアをいじっています$HOME/.local。それを実行するには、 などのさまざまな変数をエクスポートする必要がありますLD_LIBRARY_PATH。しかし、それらをすべて手動でエクスポートするのは避けたいのです。いつか、そのソフトウェアのいくつかを使いたいです。それらのほとんどは、$HOME/.profileおよび.bashrcファイルにエクスポートできますが、 はできませんLD_LIBRARY_PATH。これは でのみ変更できます/etc/ld.so.conf。しかし、ルートのファイルを変更したくありません。そこで私の質問は、ホーム フォルダー / の任意の場所にフォルダーを作成して、自動的に 2 番目のフォルダーとして扱うことはできますか/etc、またはそのようなディレクトリを指すように設定できる環境変数はありますか ?

答え1

あなたは 共有解除コマンド 好きなファイルやフォルダをマウントして置き換えることができます。 という解決策もありますchrootが、実装がはるかに重くなります。

良い例は投稿にあります /etc/hosts を補完するユーザー固有の hosts ファイルを作成できますか?

frielpによる回答 ファイルを置き換える良い例は次のとおりですhosts

このコマンドで作成されたプライベート マウント スペースはunshare、シェル プロセスとそのシェルから開始された後続の子プロセスにプライベート /etc/hosts ファイルを提供するために使用できます。

# Start by creating your custom /etc/hosts file
[user] cd ~
[user] cat >my_hosts <<EOF
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
127.0.0.1 news.bbc.co.uk
EOF

[user] sudo unshare --mount
# We're now running as root in a private mountspace. 
# Any filesystem mounts performed in this private mountspace
# are private to this shell process and its children

# Use a bind mount to install our custom hosts file over /etc/hosts
[root] mount my_hosts /etc/hosts --bind

[root] cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
127.0.0.1 news.bbc.co.uk

[root] exec su - appuser

[appuser] # Run your app here that needs a custom /etc/hosts file

[appuser] ping news.bbc.co.uk
PING news.bbc.co.uk (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.062 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.026 ms
^C
--- news.bbc.co.uk ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.026/0.044/0.062/0.018 ms

このunshareコマンドはファイルやフォルダを置き換えます。追加の一部のファイルでは/etc、元のコンテンツにデータを追加して置換ファイルを作成する必要があります。

関連情報