GUI에 장착하는 방법은 “후드”에서 어떻게 작동합니까? 정보 틀린 경우 수정하십시오 :

최신 정보

틀린 경우 수정하십시오 : Debian이라는 GNU / Linux 배포판을 사용하여 컴퓨터에서 작업하는 경우 명령을 입력하고 응용 프로그램을 시작하고 파일을 여는 등 두 가지 방법을 알고 있습니다.

  • 텍스트를 입력 하는 명령 줄 인터페이스
  • 그래픽 사용자 인터페이스 [일명 GUI ] : “창”을 제공하는 인터페이스, 문자 등

“창 관리자”라는 이름으로 뭔가가 있습니다. GNU / Linux를 사용하면서 X-Window System 에서 작업하고 있습니다.

여기에 이미지 설명을 입력하십시오


원본 게시


상황 : /etc/fstabUSB 스틱 [예 : /dev/sdb1] 에 대해 자동 마운트를 비활성화했습니다 . 마운트는 창 관리자 (!)가 아닌root 최소한 명령 줄에sudo 입력 해야합니다 . 나는 automount윈도우 매니저에서 “심볼을 클릭”한다는 것은 아무런 질문없이 GUI에서 디바이스를 연다는 것을 의미하지 않는다.

질문 : GUI의 마운트는 “후드”에서 어떻게 작동합니까? 거기 config에 윈도우 관리자를위한 파일은 일반적으로 또는 하나 개별적으로 설정해야합니까?

나는 mount명령을 이해하고 사용 하며, 읽고 구성하는 방법을 이해 /etc/fstab하고 항목의 /etc/mtab의미 와 의미를 어디에서 볼 수 있는지 알고 싶습니다 .



답변

이것은 상황에 대한 나의 이해이지만, 나는 전문가가 아니기 때문에 다른 답변보다 기술적이지 않습니다. 이것이 수년간이 시스템을 사용한 후에 이해 한 것이므로 자세히 연구하지는 않았습니다.

여기에는 세 가지 주요 플레이어가 있으며 그 사이에는 마운트를 관리합니다.

  • 퓨즈 : 위키 백과 페이지에 설명 된 바와 같이 모든 것의 중심에 있습니다 .

    FUSE (Filesystem in Userspace)는 권한이없는 사용자가 커널 코드를 편집하지 않고 자신의 파일 시스템을 만들 수 있도록하는 Unix와 유사한 컴퓨터 운영 체제의 운영 체제 메커니즘입니다. FUSE 모듈은 실제 커널 인터페이스에 “브릿지”만 제공하는 반면 사용자 공간에서 파일 시스템 코드를 실행하면됩니다.

    따라서 기본적으로 권한이없는 사용자가 파일 시스템을 마운트 할 수 있습니다.

  • gvfs: Gnome 데스크탑 환경 (Gnome, Mate, Cinnamon 포함)에서 새로 연결된 드라이브를 자동으로 마운트하는 데몬입니다. FUSE 를 통해 그렇게 합니다. KDE 제품군에 해당하는 것을 KIO 라고 믿습니다 (그러나 잘못되었을 수도 있음).

    의 주요 프로세스는 다음 gvfsman gvfs같습니다.

    • gvfsd-기본 gvfs 데몬
    • gvfs-fuse-daemon-gvfs를 퓨즈 파일 시스템으로 마운트
    • gvfsd-metadata-gvfs 메타 데이터를 씁니다.
  • udev: 새 장치를 감지하고 연결시 스크립트 / 명령을 실행할 수있는 시스템입니다. 예를 들어 udev새 화면을 감지하여 바탕 화면을 미러링 할 수 있습니다.

    udev는 Linux 커널의 장치 관리자입니다. 기본적으로 / dev에서 장치 노드를 관리합니다. devfs와 hotplug의 후속 버전이므로 펌웨어로드를 포함하여 장치를 추가 / 제거 할 때 / dev 디렉토리와 모든 사용자 공간 작업을 처리합니다.

    특히, udisk 기반 볼륨 모니터가 gvfs작동 gvfs-udisks2-volume-monitor하는 것 같습니다 . udisks그러나 그 자체에 의존합니다 udev(참조 man 7 udisks).

따라서 기본적으로 ( “끔찍한 단순화”읽기) 드라이브를 연결 udev하면 드라이브를 감지하고 gvfs데몬에 경고하여 FUSE 장치로 마운트합니다.

FUSE udev는 모든 데스크탑 환경에서 동일하며 udev, 드라이브를 FUSE 파일 시스템으로 모니터링 하고 마운트하는 DE 데몬이 변경 되었습니다.


답변

창 환경 (GNOME / KDE / etc.)에 따라 다르지만 예를 들어 그놈에서는 데몬이 실행되는 것을 볼 수 있습니다 gvfs-*-volume-monitor. 이 데몬은 데스크탑 환경을 실행할 때 장치를 마운트하는 역할을하며 /etc/fstab, 관련이 없으며 완전히 독립적으로 작동합니다.

구성 파일까지는 DE, 실행중인 사용자의 홈 디렉토리에있는 파일과 관련된 파일이 있습니다 $HOME/.local/share/gvfs-metadata.

이 U & L Q & A : gvfs 란 무엇이며 왜 내 시스템에서 원하는가요? , GVFS가 무엇인지 설명하려고 시도합니다. 그것을 설명하는 OK 일을합니다. 그러나 당신이 정말로 요구하는 것은 USB 디스크 자동 마운트 (작동 방식) 라는 제목의 U & L Q & A에 의해 더 많이 해결 된다고 생각합니다 .


답변

간단한 대답은 그들이 속이는 것입니다. 그들은을 사용하지 않습니다 fstab. 일반적으로 udev후크를 사용하여 삽입 이벤트를 포착하고로 디스크를 수동으로 마운트 합니다. 파일 관리자에게 새 디스크가 있거나 마운트 해제 대신 유틸리티를 사용할 root수 있음 dbus을 알리기 위해 전달 될 수 있습니다 . 불행히도 이에 대한 표준 구성 옵션이 없으며 데스크탑 이동이 복잡성을 숨기고 있기 때문에 사용자 설명서, 개발자 설명서에서만이를 문서화하지 않으며 단일 사용자 시스템을 가정하므로 USB 드라이브 만 작동합니다. X 서버에 처음 로그인 한 사용자suiddbus


답변

PolicyKit (또는 Polkit)은 권한이없는 프로세스가 권한있는 프로세스와 통신 할 수 있도록 하는 정책을 정의하고 처리하기위한 응용 프로그램 수준 툴킷입니다 .

권한이없는 (데스크톱) 응용 프로그램에 대한 권한있는 작업 (예 : Mount () 메서드 호출)에 대한 액세스 권한 부여와 관련하여 의사 결정 프로세스를 중앙 집중화하기위한 프레임 워크입니다.

인증 에이전트는 세션의 사용자가 세션의 사용자가 실제로 사용자 (사용자로 인증) 또는 관리 사용자 (관리자로 인증)임을 증명하는 데 사용됩니다.

GVFS 는 가상 파일 시스템으로 로컬 및 원격 파일 시스템 을 휴지통 지원과 함께 사용자로 마운트 할 수 있습니다 . 또한 GIO를 사용하지 않는 응용 프로그램이 GVFS 파일 시스템에 액세스 할 수 있도록하는 FUSE 지원이 있지만 대부분의 DE는 컴퓨터를 최대 절전 모드 및 종료 및 NetworkManager와 같은 다른 용도로 Policykit을 통해 인증을 수행하므로 필요하지 않습니다. 퓨즈를 사용하십시오.

두 부분으로 구성됩니다.

  1. GIO를 지원하는 응용 프로그램에 의해로드되는 공유 라이브러리.
  2. GVFS 자체에는 D-Bus를 통해 서로 통신하는 데몬과 GIO 모듈이 포함되어 있습니다.

polkit 규칙에 대한 polkit-gnome과 함께 gvfs 패키지를 설치해야합니다. 그래픽 인증 에이전트가 설치되고 자동 시작되었는지 확인하십시오.

권한 관리를위한 구성 파일은 각 배포마다 달라야합니다. 아치 위키는 아래에 파일을 만들도록 지시합니다 /usr/share/polkit-1/rules.d/. 데비안에서는에 있습니다 /etc/polkit-1/.

출처 : 데비안의 Policykit || 아치 위키에 Polkit || 아치 위키의 GVFS || 그놈 위키의 GVFS!


답변

당신이 찾고있는 하나 개의 공통 요소는 FUSE , 예를 들어, 그놈의 GVFS, 후드 것을 사용합니다. 1 이것은 커널과의 인터페이스이며 Linux의 모든 권한이없는 (자동) 마운트 시스템에 공통적이라고 생각합니다 [그러나 주석을보십시오]. 개별 DE는 커널 패치가 필요하기 때문에 자체 버전을 만들지 않습니다.

여기서 언급했듯이 FUSE는 몇 년 전에 공식 커널의 일부가되었지만 프로젝트의 기원과 목적을 설명 하기 때문에 해당 홈페이지 링크는 실제로 구식 입니다.

다양한 시스템이이를 넘어서 스타일을 벗어나게하는 이유는 다양한 데스크탑 환경을 가지고있는 것과 같은 이유입니다. GUI가 어떻게 / 무엇인지에 대한 다른 비전을 나타냅니다. 이들은 사용자 인터페이스의 형태와 기능을 관리하지만 FUSE는 실제 마운팅 및 커널 수준의 작업을 수행합니다. FUSE는 실제로 “자동”부분을 수행하지 않으며 “권한이없는”부분에 대한 것이지만 자동 부분은 매우 간단합니다. 예를 들어 폴링 만하면 /dev됩니다. 이런 식으로 작동하는 탑재 응용 프로그램을 작성했습니다. 새로운 노드의 출현 만 감시합니다. 2 그 부분은 아마도 100 줄 정도의 C ++ 일 것입니다. 손쉬운-해당 수준에서 공통 API가 필요하지 않습니다.

1 또는 실제로 권한이없는 마운트를 수행하는 경우 가능합니다. Teresa의 답변은 일반 마운트에 대한 액세스를 허용하는 새로운 접근법을 다룰 수 있습니다.

2 hildred가 관찰했듯이 udev 콜백은 더 나은 해킹 방법이 아닙니다.


답변