장치를 읽으려면 관리자 권한이 필요한 이유는 무엇입니까?

장치를 읽으려면 관리자 권한이 필요한 이유는 무엇입니까?

내 썸 드라이브를 이미지로 저장하는 백업 스크립트를 만들려고 합니다. 자동으로 만들겠습니다. 저는 항상 썸 드라이브가 나열되어 있는 것을 보고 /dev/sdb이를 gzip으로 압축된 tarball로 저장하는 스크립트를 만들었습니다.

복제하려고 시도하는 동안 dd다음 오류를 발견했습니다.

dd: failed to open ‘/dev/sdb’: Permission denied

이것이 단지 우연인지 궁금해서 cat명령을 파이핑하려고 시도했는데 dd다음 오류가 발생했습니다.

cat: /dev/sdb: Permission denied
0+0 records in
0+0 records out
0 bytes (0 B) copied, 0.000620078 s, 0.0 kB/s

물론 저는 슈퍼유저이기 때문에 sudo이 작업을 수행할 수 있습니다. 하지만 이렇게 하면 스크립트의 자동 요소가 제거됩니다.

장치를 수정하지 않는 경우 왜 슈퍼유저 권한이 필요합니까? 또한, 이 문제를 해결할 수 있는 방법이 있나요?

답변1

Unix/Linux 시스템은 다중 사용자입니다. 원본 저장 장치에 대한 읽기 액세스 권한이 있는 사람은 파일 소유자 및 해당 권한에 관계없이(물론 암호화된 파일 시스템의 모듈로) 해당 장치에 있는 모든 파일을 읽을 수 있습니다. 따라서 전통적으로 원시 장치는 root관리 그룹(예: or)의 구성원에게만 액세스를 허용하며 신뢰할 수 있는 관리 사용자 또는 백업 작업 사용자를 해당 그룹에 배치할 수 있습니다.operatordisk

udev를 실행하는 GNU/Linux 배포판에서 50-udev-default.rules플로피나 테이프가 아닌 모든 블록 및 SCSI 장치를 그룹에 넣고 그룹에 읽기/쓰기 권한을 부여하십시오. 따라서 가능한 해결책 중 하나는 이 그룹에서 직접 편집을 사용하거나 자신을 추가하는 것입니다. 로그아웃했다가 다시 로그인하세요./devdiskusermod/etc/group

답변2

장치를 읽으려면 관리자 권한이 필요한 이유는 무엇입니까?

먼저 여기에 몇 가지 질문이 있습니다.

  1. mount물리적 저장 장치와 여기에 포함된 파티션을 관리합니다.
  2. 해당 파일에 액세스하고 조작합니다.

파일 시스템이 ext2, 3, 4와 같이 권한 기반인 경우 권한은 파일별로 정의됩니다.

사용자에게 장치를 설치하기 위해 특별한 관리 권한이 필요한 이유에는 몇 가지 이유가 있습니다. 이러한 이유는 비즈니스 유형 상황에 적용될 가능성이 더 높으며 개인 컴퓨팅에는 적용될 가능성이 적습니다. 물론 여전히 관련성이 있을 수 있습니다.

  1. 프로그램의 독서 남용을 방지합니다. 디스크가 마운트되면 이제 신뢰할 수 없는 프로그램의 전체 모음을 실행할 수 있으며 이는 운영 체제를 남용할 수 있습니다. 시스템을 관리하는 경우 일반 사용자가 자신의 디스크에서 자신의 프로그램을 업로드할 수 없는 경우 이러한 일이 발생하지 않을 것이라고 더 확신할 수 있습니다.
  2. 민감한 비밀 데이터 쓰기/저장 시스템에 회사 비밀이나 사용자 비밀번호가 있고 누군가 승인되지 않은 저장 장치에 액세스할 수 있는 경우 이를 복사할 수 있습니다.

전체 스크립트를 sudo로 실행한 다음 sudo스크립트 내에서 일반 사용자로 다시 전환하여 루트로 실행하고 싶지 않은 명령을 실행하면 sudo 문제를 해결할 수 있습니다(예,할 수 있는이렇게 하세요) 예를 들면

문서:스크립트 파일

#!/bin/sh

# this dd command now works
dd if=<source> of=<target> bs=<byte size>

# normal cammand you want to run as "mathmaniac" user
sudo -u "MathManiac" bash -c "touch foo.bar" 

따라서 다음 명령을 사용하여 이 스크립트를 실행할 수 있습니다.

sudo ./script.sh

빠르고 지저분하지만 일반적으로 권장되지 않는 또 다른 방법은 단순히 스크립트 내의 명령 앞에 sudo를 넣는 것입니다. 인터프리터가 이를 발견하면 sudo스크립트 실행을 중지하고 계속하기 전에 sudo 비밀번호를 묻습니다.

답변3

edit fstab을 사용하여 루트 권한 없이 파일 시스템을 마운트할 수 있지만 이렇게 하면 블록 장치의 이미지가 제공되지 않습니다.

백업 스크립트가 비밀번호를 입력하지 않고도 특정 명령을 sudo할 수 있도록 sudoers 파일을 편집할 수 있습니다.

관련 정보