그래서 시스템에서 일부 권한을 가지고 놀았는데 파일을 다른 곳으로 보내도록 지정된 권한이 없다는 것을 발견했습니다.
일반 사용자로서 다음 명령을 시도했습니다. 메시지 수신에 만족하지만 파일을 보내는 데 필요한 권한이 무엇인지 아직 잘 모르겠습니다.mail -a //etc/shadow [email protected]
Permission Denied
즉, mail
메일 프로토콜에는 명령을 사용하지만 다른 명령이나 프로토콜은 어떻습니까?
그런데 이 파일의 권한은 다음과 같습니다 shadow
.
-rw-r----- 1 root shadow 1759 Oct 23 2017 shadow
답변1
아니요, 파일을 "보내는" 것은 실제로 파일 시스템 수준 작업이 아니기 때문입니다. 이 mail
명령이 수행하는 작업은 읽기 위해 파일을 열고 데이터를 읽은 다음 네트워크 소켓을 통해 전송(쓰기)하는 것입니다(이메일의 경우 인코딩될 수 있지만 중요하지 않음). 마찬가지로 FTP 클라이언트 scp
나 다른 클라이언트도 동일한 작업을 수행하며 파일을 정상적으로 읽습니다.
읽기 권한이 없으므로 사용자 ID로 실행 /etc/shadow
하면 mail
읽을 수 없습니다.
리눅스에는sendfile()
시스템 호출read()
, 이는 두 파일 설명자 간에 직접 데이터를 복사하지만 이는 write()
기본적으로 하나의 파일 설명자를 호출하고 다른 파일 설명자를 호출하는 것과 동일하지만 커널에서 발생하므로 시스템 호출 오버헤드가 적습니다. 또한 읽으려면 소스 코드를 열어야 합니다.