さまざまなユーザーに個別の/homeパーティションを設定する

さまざまなユーザーに個別の/homeパーティションを設定する

私は別の/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。ログインシェルのバリエーションを使用します。これは有効な例です。

  1. USBインストールが/media/portable
  2. 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
    
  3. /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
    
  4. /media/portable/portableuserディレクトリの有無にかかわらずテスト済みです。

以外のシェルを使用するには、bashそれに応じて実行可能ファイルの名前を変更します(たとえば、、dash-if-mountedzsh-if-mounted

おすすめ記事