일반 사용자 스크립트를 사용하면 해당 파일을 사용자가 읽을 수 있고 쓸 수 있는지 확인해야 하기 때문에 궁금합니다(읽기 작업의 일부).
if ! [ -r "$1" ]; then
dump_args "$@"
print_error__exit "! [ -r $1 ]" "The file is not readable by you!"
fi
내 질문은: 루트가 읽거나 쓸 수 없는 전체 Linux(필요한 경우 Mint 또는 Debian과 같은) 시스템에 파일이 있습니까?
전반적으로 내 믿음은 루트가 무엇이든 할 수 있지만 모든 것에는 한계가 있다는 것입니다. 그게 제가 이 질문을 하는 이유입니다. 감사해요.
답변1
/proc 아래의 많은 파일은 쓸 수 없으며 /sys 아래에도 쓰기는 가능하지만 읽을 수 없는 파일도 있습니다. 예:
echo something > /proc/$$/cmdline
cat /sys/block/sda/device/delete
(주의: echo > /sys/block/sda/device/delete
시스템에서 sda를 "분리"합니다)
이는 /proc 및 /sys가 특수 파일 시스템이기 때문입니다. 일반적인 파일 권한과는 아무 관련이 없습니다.
다른 예도 있습니다:
- DVDROM과 같은 읽기 전용 파일 시스템
- 읽기 전용으로 마운트된 파일 시스템
- 루트 스쿼시가 있는 NFS와 같이 루트가 높은 권한을 가진 사용자에게 매핑되지 않은 네트워크 파일 시스템
- 읽기 또는 쓰기만 허용하는 장치의 장치 파일
답변2
또한/proc
및 아래의 파일/sys
, FUSE 파일 시스템은 기본적으로 루트에 액세스할 수 없습니다.루트로 실행해도 /run/user/1000/gvfs를 읽을 수 없는 이유는 무엇입니까?더 알아보기.
또한 시스템이 루트를 제한하도록 필수 액세스 제어 시스템(예: SELinux)을 설정할 수도 있습니다. Russell Coker는 공개적으로 접근 가능한놀이 기계시스템에 해를 끼치지 않고 누구나 루트로 로그인할 수 있습니다.
프로세스는 호스트 시스템에 대한 실제 루트 액세스 권한을 부여하지 않고도 사용자 네임스페이스에서 루트로 실행될 수 있습니다. 마찬가지로 원격 파일 시스템에는 클라이언트의 루트가 특정 파일이나 디렉터리에 액세스할 수 없도록(어떤 경우에는 전혀 액세스할 수 없도록) 사용자 매핑이 있을 수 있습니다.