私は別の/rootと/homeパーティションを持つDebianシステムを持っています。 /homeパーティションにはすでにいくつかのユーザーアカウントがあります。このシステムには別のユーザーアカウントが必要です。問題は、ポータブルUSBディスク用の/ homeパーティションを作成したいということです。
USBが接続されていない場合は、ローカルユーザーの1人でのみログインできるという考えです。 USBが接続されている場合は、システムがそれを検出してUSBパーティションをマウントした後に設定ファイルにアクセスできるようにPortableUserとしてログインできるようにする必要があります。
最も簡単な方法は何ですか?私は2つの方法を考えました。
a) usbdisk/portableUser ディレクトリを /home/portableUser ディレクトリにシンボリックにリンクします。
b) usbdisk は fstab から /home パーティションにマウントされています。
私は成功せずに終日fstabとシンボリックリンクで遊んだ。また、これを行う方法の簡単な説明が見つかりません。 bashコマンドの形で助けてくれてありがとう... :)
ベストアンサー1
USBマウントポイントを変更しないでください。代わりに、マウントされたUSBになるようにHOME
ディレクトリを変更するだけです。portableuser
たとえば、USBインストールがある場合は、ディレクトリ/media/portable
にユーザーアカウントを作成します。HOME
/media/portable/portableuser
ただし、ログインが中断されるわけではありませんportableuser
。ログインシェルのバリエーションを使用します。これは有効な例です。
- USBインストールが
/media/portable
。 portableuser
ホームディレクトリ/media/portable/portableuser
とログインシェルを使用してファイルを作成します/usr/local/bin/bash-if-mounted
。これは次の項目です/etc/passwd
。portableuser:x:1004:1004:Portable user:/media/portable/portableuser:/usr/local/bin/bash-if-mounted
/usr/local/bin/bash-if-mounted
次のように実行可能なシェルスクリプトを作成します。#!/bin/bash # # bash-if-mounted ################################################################ # name="${0##*/}" shell=$(type -p "${name%%-*}" 2>/dev/null) if [[ -d "$HOME" ]] then [[ -n "$shell" ]] && export SHELL="$shell" exec "$SHELL" "$@" echo "No shell" >&2 else echo "No home directory at $HOME" >&2 fi sleep 2 exit 1
/media/portable/portableuser
ディレクトリの有無にかかわらずテスト済みです。
以外のシェルを使用するには、bash
それに応じて実行可能ファイルの名前を変更します(たとえば、、dash-if-mounted
)zsh-if-mounted
。