'/root/CentOS-7-x86_64-Minimal-1611.iso'를 열 수 없습니다: 권한이 거부되었습니다.

'/root/CentOS-7-x86_64-Minimal-1611.iso'를 열 수 없습니다: 권한이 거부되었습니다.

CentOS 7 호스트에서 CentOS 7 게스트 가상 머신을 생성하기 위해 virt-install을 사용하려고 하면 다음 오류가 발생합니다.

Could not open '/root/CentOS-7-x86_64-Minimal-1611.iso': Permission denied

CentOS 7 게스트 가상 머신을 성공적으로 설치하려면 이 오류를 해결하기 위해 어떤 구체적인 단계를 수행해야 합니까?

세부사항은 다음과 같습니다:


오류를 재현하는 단계:

먼저 isocentos 미러에서 파일을 다운로드했습니다.

[root@remote-host ~]# wget http://centos.mbni.med.umich.edu/mirror/7/isos/x86_64/CentOS-7-x86_64-Minimal-1611.iso
--2017-03-13 12:52:53--  http://centos.mbni.med.umich.edu/mirror/7/isos/x86_64/CentOS-7-x86_64-Minimal-1611.iso
Resolving centos.mbni.med.umich.edu (centos.mbni.med.umich.edu)... 141.214.186.162
Connecting to centos.mbni.med.umich.edu (centos.mbni.med.umich.edu)|141.214.186.162|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 713031680 (680M) [application/octet-stream]
Saving to: ‘CentOS-7-x86_64-Minimal-1611.iso’

100%[============================================================================================================================>] 713,031,680 14.2MB/s   in 50s

2017-03-13 12:53:43 (13.5 MB/s) - ‘CentOS-7-x86_64-Minimal-1611.iso’ saved [713031680/713031680]

다음으로 다음 설치 명령을 실행했는데 오류가 발생했습니다.

[root@remote-host ~]# virt-install \
> --name centos7 \
> --ram 2048 \
> --disk path=/dev/mapper/centos-third,size=242 \
> --vcpus 1 \
> --os-type generic \
> --os-variant generic \
> --network bridge=virbr0 \
> --graphics none \
> --console pty,target_type=serial \
> --cdrom ./CentOS-7-x86_64-Minimal-1611.iso
WARNING  CDROM media does not print to the text console by default, so you likely will not see text install output. You might want to use --location. See the man page for examples of using --location with CDROM media

Starting install...
ERROR    internal error: qemu unexpectedly closed the monitor: 2017-03-13T19:58:02.701397Z qemu-kvm: -drive file=/root/CentOS-7-x86_64-Minimal-1611.iso,format=raw,if=none,id=drive-ide0-0-1,readonly=on: could not open disk image /root/CentOS-7-x86_64-Minimal-1611.iso: Could not open '/root/CentOS-7-x86_64-Minimal-1611.iso': Permission denied
Domain installation does not appear to have been successful.
If it was, you can restart your domain by running:
  virsh --connect qemu:///system start centos7
otherwise, please restart your installation.
[root@remote-host ~]#

권한 문제를 평가하기 위해 다음과 같이 디렉토리의 내용을 확인했습니다.

[root@remote-host ~]# ls -al
total 696356
dr-xr-x---.  4 root root      4096 Mar 13 12:52 .
dr-xr-xr-x. 24 root root      4096 Mar 13 12:00 ..
-rw-------.  1 root root      2365 Mar 12 11:14 anaconda-ks.cfg
-rw-------.  1 root root      1091 Mar 13 12:13 .bash_history
-rw-r--r--.  1 root root        18 Dec 28  2013 .bash_logout
-rw-r--r--.  1 root root       176 Dec 28  2013 .bash_profile
-rw-r--r--.  1 root root       176 Dec 28  2013 .bashrc
drwxr-xr-x.  4 root root        36 Mar 13 12:42 .cache
-rw-r--r--.  1 qemu qemu 713031680 Dec  5 15:44 CentOS-7-x86_64-Minimal-1611.iso
drwxr-xr-x.  3 root root        17 Mar 13 10:52 .config
-rw-r--r--.  1 root root       100 Dec 28  2013 .cshrc
-rw-r--r--.  1 root root       129 Dec 28  2013 .tcshrc

root다른 사용자의 파일에 액세스할 수 있어야 한다는 것을 알고 있지만 사용자를 root다음과 같이 변경하고 명령을 다시 실행해 보았습니다.

[root@remote-host ~]# chown root:root CentOS-7-x86_64-Minimal-1611.iso                                                                                       [root@remote-host ~]# ls -al
total 696356
dr-xr-x---.  4 root root      4096 Mar 13 12:52 .
dr-xr-xr-x. 24 root root      4096 Mar 13 12:00 ..
-rw-------.  1 root root      2365 Mar 12 11:14 anaconda-ks.cfg
-rw-------.  1 root root      1091 Mar 13 12:13 .bash_history
-rw-r--r--.  1 root root        18 Dec 28  2013 .bash_logout
-rw-r--r--.  1 root root       176 Dec 28  2013 .bash_profile
-rw-r--r--.  1 root root       176 Dec 28  2013 .bashrc
drwxr-xr-x.  4 root root        36 Mar 13 12:42 .cache
-rw-r--r--.  1 root root 713031680 Dec  5 15:44 CentOS-7-x86_64-Minimal-1611.iso
drwxr-xr-x.  3 root root        17 Mar 13 10:52 .config
-rw-r--r--.  1 root root       100 Dec 28  2013 .cshrc
-rw-r--r--.  1 root root       129 Dec 28  2013 .tcshrc
[root@remote-host ~]# virt-install --name centos7 --ram 2048 --disk path=/dev/mapper/centos-third,size=242 --vcpus 1 --os-type generic --os-variant generic --network bridge=virbr0 --graphics none --console pty,target_type=serial --cdrom ./CentOS-7-x86_64-Minimal-1611.iso
WARNING  CDROM media does not print to the text console by default, so you likely will not see text install output. You might want to use --location. See the man page for examples of using --location with CDROM media

Starting install...
ERROR    internal error: qemu unexpectedly closed the monitor: 2017-03-13T20:06:07.525792Z qemu-kvm: -drive file=/root/CentOS-7-x86_64-Minimal-1611.iso,format=raw,if=none,id=drive-ide0-0-1,readonly=on: could not open disk image /root/CentOS-7-x86_64-Minimal-1611.iso: Could not open '/root/CentOS-7-x86_64-Minimal-1611.iso': Permission denied
Domain installation does not appear to have been successful.
If it was, you can restart your domain by running:
  virsh --connect qemu:///system start centos7
otherwise, please restart your installation.
[root@remote-host ~]#

[root@remote-host ~]# virsh --connect qemu:///system start centos7
error: failed to get domain 'centos7'
error: Domain not found: no domain with matching name 'centos7'

[root@remote-host ~]#

보시다시피 동일한 오류가 발생합니다. 게스트 가상 머신이 성공적으로 설치될 수 있도록 이 오류를 해결하려면 또 무엇을 수행해야 합니까?

답변1

또한 SELinux를 활성화했지만(좋습니다) ISO의 컨텍스트로 인해 qemu가 이를 읽지 못할 수도 있습니다.

ISO를 /tmp.

ISO를 이동한 후에도 qemu가 여전히 ISO에 액세스할 수 없는 경우 /tmp내용을 확인하여 /var/log/audit/audit.log액세스 위반이 기록되었는지 확인하세요.

/tmp예 를 들어 ISO를 이동한 후 SELinux 컨텍스트를 보려면 ls -lZ /tmp/.

이는 파일에 액세스하는 프로그램의 컨텍스트가 무엇인지 알려주지 않지만 현재 컨텍스트를 표시합니다. 이 파일의 다른 파일(프로그램이 이미 액세스할 수 있는 파일)의 컨텍스트를 비교하면 이 파일을 설정할 수 있는 컨텍스트를 좁히는 데 도움이 됩니다.

이 경우 ISO가 qemu가 액세스할 수 있는 디렉터리에 있는 한 qemu가 읽을 수 있도록 ISO의 컨텍스트를 설정할 수 있습니다.chcon -t virt_content_t <filename>.iso

답변2

디렉터리에는 /root권한 0550과 소유자 및 그룹 소유자가 있습니다 root. 또한 .에 표시된 대로 SELinux 컨텍스트도 있습니다 dr-xr-x---.. 그룹 내의 사용자만 디렉터리에 있는 파일을 root읽고 실행할 수 있습니다 . /root또한 잘못된 SELinux 컨텍스트로 인해 SELinux가 시행될 때마다 파일 액세스가 차단될 수 있습니다. 즉, 디렉토리 권한이 0777(모든 사용자에게 모든 접근을 허용)하더라도 SELinux 컨텍스트가 올바르게 설정되지 않으면 qemu 사용자는 파일을 읽을 수 없습니다. SELinux 컨텍스트를 표시 하는 데 사용됩니다 ls -lZ. 다음은 /root디렉터리에 대한 기본 결과 입니다 .

dr-xr-x---. root root system_u:object_r:admin_home_t:s0 root

보시다시피, admin_home_t이는 사실이 아니 virt_image_t거나 다른 허용된 SELinux 컨텍스트가 아닙니다.

아래와 같이 FTP나 웹 서버를 사용하는 등 이를 수행하는 더 많은 방법이 있습니다.

웹 서버 사용

yum install -y httpd
systemctl enable httpd
mkdir /var/www/html/centos
mount -o loop centos.iso /mnt
cp -a /mnt/. /var/www/html/centos
chcon -R --reference=/var/www/html /var/www/html/centos
firewall-cmd --permanent --add-service=http
firewall-cmd --reload
systemctl restart httpd
umount /mnt

이 방법 -l http://x.x.x.x/pub/centos으로 --cdrom.

FTP 서버 사용

yum install -y vsftpd
systemctl enable vsftpd
mkdir /var/ftp/pub/centos
mount -o loop centos.iso /mnt
cp -a /mnt/. /var/ftp/pub/centos
chcon -R -t public_content_t /var/ftp/
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload
systemctl restart vsftpd
umount /mnt

이 방법 -l ftp://x.x.x.x/pub/centos으로 --cdrom.

즉, 권한과 SELinux 컨텍스트를 수정하거나 위에서 설명한 대체 방법을 사용하세요.

답변3

Centos 6.9 서버에서 가상 머신을 생성하려고 할 때 오류(운영 체제 파일(Windows 10)에 대한 권한이 거부됨)이 발생했습니다. DVD의 파일을 노드(/virt)의 디렉터리에 복사한 후 컨텍스트를 확인했습니다. /etc/libvirt/qemudir의 컨텍스트가 /virt예상되는 콘텐츠로 변경됩니다.

$ ls -lZ
-rw-r--r--. root root system_u:object_r:virt_etc_t:s0  qemu.conf

$ls -lz 
drwxr-xr-x. root root system_u:object_r:virt_etc_rw_t:s0 virt

컨텍스트 유형을 추가하여 이 작업을 수행합니다.

semanage -a -t virt_etc_rw_t '/virt(/.*)?'

그 다음에,

$ restorecon -RFvv /virt
127  semanage fcontext -l qemu
145  semanage fcontext -a -t virt_etc_rw_t '/virt(/.*)?'
210  history | grep semanage

[root@centos libvirt]# history | grep restore
146  restorecon -RFvv /virt

그러면 문제 없이 ISO 파일을 사용할 수 있습니다.

관련 정보