さまざまなユーザーに個別の/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

答え2

要求どおりにできない場合があります。現在のパスワード。

認証とロギングを実行するソフトウェアツールチェーンは、自動マウントを処理するツールチェーンとは別のものです。

あなたは何ですか可能あなたができることは、UniounFS-FUSEと(bash仮定)bashrcファイルを使用して、特定のUUID(またはその他)を持つUSBファイルシステムがあることを確認し、ログイン時にそれらを統合マウントすることです。

あるいは、ログインにディスクマウントが必要であると思うことを放棄し、/home/portableUserに/etc/fstabをマウントし、「logout」のみを含む.bashrcファイルを作成してください。これにより、USBディスクがマウントされていない場合にログインするとすぐにログアウトされます。マウントされている場合(非共用マウントを使用)、bashrcはマウントされたファイルシステムによってマスクされ(テスト結果は完全に15年前の別の質問メモリからのものです)、ログインは成功します。

また、PortableUserのホームディレクトリは何でも設定できます。 /home にある必要はなく、ディスクが通常マウントされるどこでも可能です。

答え3

皆様のご回答ありがとうございます。結局のところ、問題は私が疑ったことではありませんでした。その結果、テキストモードシェルからシステムにログインできました。ログインするとKDEのみ停止します。私のUSBパーティションは、私のオフィスコンピュータ上の/ homeパーティションの複製です。私のオフィスコンピュータにDebian Busterがインストールされていて(plasmashell 5.14.5を使用して)、私の家のラップトップである私の家のコンピュータにインストールしたいと思います。 Ubuntu 16がインストールされています。ノートブック(plasmashell 5.5.5を使用)今、私はこれら2つのKDEバージョン間のいくつかの非互換性が私の問題の原因だと思います。今私の家のラップトップにBusterをインストールした後、fstabに2行を追加すると、すべてがうまく機能するためです。

UUID=xxxxxxxxxxxxxx...    /mnt/portableUserUSB  ext4  nofail    0   2
/mnt/portableUserUSB/portableUser /home/portableUser none bind,nofail 0 0

(nofailパラメータが重要です!)

関連情報