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
. 그러나 이 솔루션에는 두 가지 주요 문제가 있습니다.
- 누군가 로그인할 때마다
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 볼륨을 자동으로 마운트합니다.