RHEL / CentOS 7サーバーが接続されているWindows(AD)ドメイン(SSSD / realmd)があります。ユーザーは AD 資格情報を使用して SSH を介してサーバーにログインします。これで、ユーザーはWindows共有の一部をRHELサーバーにマウントできるようになりました。しかし、すべてのユーザーに(u)マウントに対するsudo権限を与え、(u)マウントにSUIDフラグを設定することを避けたいと思います。
gvfs-mount
私に必要なようなコマンドを見つけたので、私は引き続き必要なパッケージをインストールしました。アプリケーションはセッションDBusにアクセスする必要があるため、DBUS_SESSION_BUS_ADDRESS
この変数をエクスポートする必要があります。 DBus-Daemon()を起動するためにdbus-launch
このパッケージをインストールしましたdbus-x11
。
コマンドの実行
export $(dbus-launch)
gvfs-mount smb://DOMAIN\;USER@HOST/SHARE
共有が正常にマウントされました。
私の最初のアイデアは、最初の行をに入れることでした.bash_profile
。ただし、このソリューションには2つの主な問題があります。
- 誰かがログインするたびに
dbus-daemon
新しいインスタンスが作成され、ログアウト時に終了しません。仮に、パッケージはdbus-x11
ログインするたびにインスタンスを起動するスクリプトをインストールしますが、/etc/X11/xinit/xinit.rc.d/00-start-message-bus.sh
アドレス変数はどのように取得されますか? - ユーザーが共有のマウント解除を忘れた場合、アドレス変数がわからないため、後続のログイン時に共有をマウント解除できません。
理想的には、dbus-daemon
アドレス変数はログイン時に開始してエクスポートする必要があります。 SSHセッションが終了したら(ログアウトはオプション)、まだマウントされているすべての共有をアンマウントし、デーモンを終了する必要があります。エレガントな方法でこれを達成するにはどうすればよいですか?
関連していますが、古く、ほとんど答えがありません。ログインセッション全体でD-Busセッションを再利用する
答え1
gvfs-mount
実際、グラフィカルログインにautofsを使用するのではなく、autofsを使用してこれを正常に実行しました。
/etc/auto.master.d/にwinhome.autofsというautofs設定ファイルがあります(.autofsで終わる必要があります)。
/winhome -fstype=cifs,sec=krb5,uid=&,user=&,cruid=& ://sharename/&
Kerberosチケットを取得するためにsssdを設定している限り、ユーザーがディレクトリを開くと(グラフィックアプリケーションを使用するかシェルを介して)、そのチケットを使用してボリューム\sharename\usernameを自動的にマウントします。