추가 읽기

추가 읽기

오늘 나는 Arch Linux를 실행하는 내 컴퓨터가 존재하지 않는다는 ssh사실에 놀랐습니다 ./run/user/$(id -u)

이것XDG 기본 디렉토리 사양설명하다:

$XDG_RUNTIME_DIR사용자별 필수적이지 않은 런타임 파일과 기타 파일 개체(예: 소켓, 명명된 파이프...)를 저장해야 하는 기본 디렉터리를 기준으로 정의합니다. 디렉토리는 사용자가 소유해야 하며 해당 디렉토리에 대한 읽기 및 쓰기 액세스 권한을 가진 유일한 사람이어야 합니다. Unix 액세스 모드는 이어야 합니다 0700.

디렉토리의 라이프사이클은 로그인한 사용자에게 바인딩되어야 합니다. 사용자가 처음 로그인할 때 디렉터리를 생성해야 하며, 사용자가 완전히 로그아웃하면 디렉터리를 삭제해야 합니다. 사용자가 여러 번 로그인하는 경우 동일한 디렉터리를 가리켜야 하며 해당 디렉터리는 첫 번째 로그인부터 마지막 ​​로그아웃까지 시스템에 남아 있어야 하며 이 기간 동안 삭제할 수 없습니다. 디렉터리의 파일은 재부팅이나 전체 로그아웃/로그인 주기 후에 유지될 수 없습니다.

systemd상자 에서 /run/user/$(id -u)선호하는 위치 는 무엇입니까 $XDG_RUNTIME_DIR(생성해야 하는 경우에도?)

그렇지 않은 경우 이를 만드는 가장 좋은 방법은 무엇입니까 $XDG_RUNTIME_DIR?

"완전히" 로그아웃할 때만 디렉토리가 삭제되도록 하려면 어떻게 해야 합니까?

("완료"는 로그인 쉘에 의해 생성된 모든 프로세스가 종료되었음을 의미합니까? 확인하는 방법은 무엇입니까?)

답변1

디렉토리, 서비스 및 환경 변수는 시스템별 플러그형 인증 모듈 및 서비스에 의해 관리됩니다. 첫 번째 로그인 시 디렉터리를 생성하고 여기에 마운트된 파일 시스템을 생성한 다음 마지막 로그아웃 시 서비스를 시작하고 서비스를 중지하고 파일 시스템을 마운트 해제하고 디렉터리를 삭제합니다. 이 동작은 계정에 systemd 옵션이 설정되면 변경됩니다./run/user/Nuser@NXDG_RUNTIME_DIRlogindlinger

다른 시스템은 다르게 작동합니다.

추가 읽기

답변2

$XDG_RUNTIME_DIR로그인 시 설정/생성

  • $XDG_RUNTIME_DIR설정된 경우 기존 항목이 사용됩니다.
  • systemd그렇지 않으면 s가 있으면 사용하세요./run/user/$UID
  • 그렇지 않으면 생성하여 사용하세요./tmp/$USER-runtime

소유권 및 권한 확인$XDG_RUNTIME_DIR

  • /tmp/"$USER"-runtime-XXXXXX권한이 좋지 않으면 생성하여 사용하세요.
if [ -z "$XDG_RUNTIME_DIR" ]; then  # It's not already set
  XDG_RUNTIME_DIR=/run/user/$UID  # Try systemd created path
  if [ ! -d "$XDG_RUNTIME_DIR" ]; then
    # systemd-created directory doesn't exist
    XDG_RUNTIME_DIR=/tmp/$USER-runtime
    if [ ! -d "$XDG_RUNTIME_DIR" ]; then  # Doesn't already exist
      mkdir -m 0700 "$XDG_RUNTIME_DIR"
    fi
  fi
fi
# Check dir has got the correct type, ownership, and permissions
if ! [[ -d "$XDG_RUNTIME_DIR" && -O "$XDG_RUNTIME_DIR" &&
    "$(stat -c '%a' "$XDG_RUNTIME_DIR")" = 700 ]]; then
  echo "\$XDG_RUNTIME_DIR: permissions problem with $XDG_RUNTIME_DIR:" >&2
  ls -ld "$XDG_RUNTIME_DIR" >&2
  XDG_RUNTIME_DIR=$(mktemp -d /tmp/"$USER"-runtime-XXXXXX)
  echo "Set \$XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR" >&2
fi

관련 정보