뭔가를 설정 중입니다. 정확히 무엇인지는 중요하지 않을 것입니다.
어쨌든 내 응용 프로그램에서 /dev/random 및 /dev/urandom이 필요하지만 누락되었다는 오류가 발생합니다.
그래서 그것들이 포함된 Linux 버전에서 그것들을 복사했는데 모든 것이 잘 작동했습니다.
이거 괜찮아? 내가 이렇게 하면 무엇이 잘못될 수 있겠습니까? 이것이 작동하지 않으면 /dev/random 및 /dev/urandom을 생성하는 "올바른" 방법이 있습니까?
답변1
두 개의 장치를 올바르게 생성하려면 다음을 사용하십시오.
mknod -m 444 /dev/random c 1 8
mknod -m 444 /dev/urandom c 1 9
/dev/random
높은 엔트로피 의사 난수 데이터가 생성됩니다. 엔트로피가 소진되면 새 PRD에 대해 충분한 엔트로피가 생성될 때까지 차단됩니다.
/dev/urandom
엔트로피가 충분히 높은지 신경 쓰지 않으면 현재 암호화 이해에 따르면 실제로 의미가 없습니다. 결과는 urandom
엔트로피 가뭄 중에 차단되지 않지만 초기 시드가 충분한 엔트로피를 사용하기 때문에 무작위성에 대한 "약점"은 이 시점에서 순전히 이론적입니다.
답변2
예, /dev/random
장치를 복사할 수 있습니다. 이를 가져오는 Linux 파일 시스템에 호환 가능한 정의(동일한 메이저 및 마이너 번호)가 있으면 작동합니다.
매개변수 없이 파일을 사용할 수는 없습니다 cp
. 파일 시스템 개체 대신 임의의 데이터를 복사하기 때문입니다. 사용 cp -a
. ( -a
이것은 "모든 것을 유지"하는 GNU 옵션입니다).
둘째, 물론 루트여야 합니다. /dev
항목을 만들려고 하면 루트인 것으로 간주될 수 있습니다. 일반 사용자가 시도하면 다음을 cp -a /dev/random foo
받게 됩니다.
cp: cannot create special file `foo': Operation not permitted
권한이 있으면 cp -a
특수(문자 장치) 파일의 복사본이 생성됩니다.
또 다른 방법은 mknod입니다. 장치의 메이저 번호 random
가 1이고 마이너 번호가 8이라는 것을 알게 되면 다음과 같이 할 수 있습니다.
mknod foo c 1 8 # character device, major 1, minor 8
이제 foo
와 동일한 커널 장치를 가리킵니다 /dev/random
. 권한도 중요합니다. 항목을 만들 때 사용되는 /dev
권한과 -m
매개변수 에 주의하세요 mknod
.
/dev/random
기존 Linux 파일 시스템 트리 복사를 사용하는 경우 cp -a
이미 올바른 권한(물론 소유권)이 있어야 합니다.
그러나 귀하의 시스템에 이러한 항목이 없는 이유를 조사하겠습니다!