CentOS 8에서 시스템 uuid 및/또는 제품 uuid 사용

CentOS 8에서 시스템 uuid 및/또는 제품 uuid 사용

사용

dmidecode -s system-uuid

나는 돌아왔다:

/sys/firmware/dmi/tables/smbios_entry_point: Permission denied
/dev/mem: Permission denied

관리자 비밀번호를 사용하면 sudo문제가 없습니다.

웹 서버 데이터베이스에서 로컬 컴퓨터를 식별하기 위해 Python 스크립트에서 UUID를 사용하고 싶지만 이 로컬 스크립트는 관리자 권한으로 실행되어서는 안 되며 자격 증명을 하드코딩하고 싶지도 않습니다. 어떡해?

비슷한 순수한 Python 방식이 있습니까 machineId = os.popen("cat /etc/machine-id").read()?

확장된 질문

  1. 출력에는 400 권한이 있는 파일과 dmidecode -s system-uuid동일한 값이 있습니다 . /sys/devices/virtual/dmi/id/product_uuid테스트 목적으로 444로 변경했는데 이제 관리자 권한 없이 읽을 수 있습니다. 위험이 있나요? 그렇지 않은 경우 문제가 해결됩니다.

  2. Product-uuid와 system-uuid는 이름만 다를 뿐 동일합니까? 어떻게 계산되나요? 컴퓨터를 켤 때마다 다시 시작해야 합니까? /sys/devices/virtual/dmi/id/product_uuid전체 디스크가 dd 복제되어 새/다른 마더보드에서 실행되는 경우 저장된 이 값이 변경되어 덮어쓰이나요?

machine-id를 사용하지 않는 이유는 내가 아는 한 전체 시스템이 dd를 통해 복제되고 다른 마더보드에서 사용될 때 machine-id가 변경/덮어쓰지 않기 때문입니다. 저는 서비스를 단순화하기 위해 동일한 디스크 이미지를 갖춘 동일한 컴퓨터 세트로 다중 POS 시스템을 개발 중입니다. 하지만 각각은 고객의 대시보드에 등록되어 다른 작업에 할당되어야 합니다.

답변1

순수한 Python 방식은 파일을 읽는 것인데, 아시다시피 적절한 권한이 필요합니다. UUID를 특권 정보로 간주하지 않는 한 파일 권한 변경은 특별히 위험하지 않지만 시스템이 시작될 때마다 권한을 변경해야 합니다.

dmidecode -s system-uuid동일한 정보를 나타내며 /sys/devices/virtual/dmi/id/product_uuid시스템 펌웨어에 저장되며 이론적으로 고유합니다(그러나 고유성은 보장되지 않으며 일부 제조업체는 이 필드를 적절하게 설정하지 않습니다).

대신에 이를 사용하는 것이 좋습니다 /etc/machine-id. 시스템 복제 프로세스에서 이를 제거했는지 확인하세요. 바라보다/etc/machine-id를 변경할 수 있습니까?더 알아보기.

관련 정보