파일이 644인데도 Permission denied라면 상위 디렉터리의 x를 본다
파일이 644여도 경로의 디렉터리에 탐색 권한이 없으면 열리지 않는다. 비특권 Linux에서 ls의 이름 조회와 cat의 읽기를 비교하고, 파일 모드를 유지한 채 막힌 디렉터리의 x만 복원하는 판단을 설명한다.
빌드노트
Linux·운영 카테고리의 글입니다.
총 48개의 글
파일이 644여도 경로의 디렉터리에 탐색 권한이 없으면 열리지 않는다. 비특권 Linux에서 ls의 이름 조회와 cat의 읽기를 비교하고, 파일 모드를 유지한 채 막힌 디렉터리의 x만 복원하는 판단을 설명한다.
같은 8MiB 파일을 tmpfs와 WSL 9p에서 만들고 stat·du·du --apparent-size를 비교했다. 논리 길이와 할당 블록의 차이, du -b의 의미, sparse 절약이 보이지 않을 때 확인할 파일시스템 조건을 설명한다.
목록을 읽는 while read 안의 자식 명령이 같은 stdin을 소비하면 루프가 첫 항목에서 끝날 수 있다. cat으로 남은 두 줄이 읽히는 출력을 비교하고, 빈 입력 제공과 read -u 3을 통한 입력 분리를 선택한다.
Bash에서 printf "$value"는 값 속의 %와 역슬래시를 형식으로 읽는다. percent%s의 조용한 손실과 100%의 부분 출력·오류를 비교하고, 고정 형식의 %s로 원문을 출력하는 방법과 %b로 의도적으로 이스케이프를 해석하는 경우를 구분한다.
Bash의 =~ 오른쪽에서 정규식 변수를 인용하면 패턴 전체가 리터럴이 된다. 같은 입력의 상태·캡처와 패턴 문자 자체의 매칭을 비교하고, 리터럴 접두사와 숫자 정규식을 섞어 인용하는 방법 및 compat31 예외를 확인한다.
Bash는 선행 0이 붙은 정수 상수를 8진수로 읽어 08·09에서 오류를 낸다. 새 셸의 실제 비교를 바탕으로 한두 자리 십진 입력을 검증한 뒤 10#으로 변환하고, 계산하지 않을 날짜 문자열은 그대로 유지하는 방법을 설명한다.
GNU cp에서 기존 대상을 건너뛰어도 종료 코드 0이 나오는 조건을 실제로 비교했다. 실행 파일·배포 패키지와 대상 내용을 확인하고, 건너뛰기 허용·내용 일치·실패 처리 중 완료 정책을 정한다.
모든 줄에 LF가 필수인 Bash 입력에서 마지막 줄을 거부해도 앞선 작업은 남을 수 있다. 작은 파일을 배열에 모아 전체 검증 뒤 처리하는 코드와 실제 기록 1개→0개 비교로 부분 처리를 막는 범위와 한계를 설명한다.
Bash 함수를 if 조건이나 || 왼쪽에서 호출하면 set -e가 함수 내부에서도 무시될 수 있다. 단독·조건·OR 호출의 실제 출력과 종료 상태를 비교하고, 명시적 return과 호출자의 실패 종료를 나누어 고친다.
GNU timeout의 124와 자식 오류·실행 실패를 실제 종료 상태와 남은 파일로 구별한다. preserve-status의 143·0, TERM 무시 후 kill-after의 137을 비교하고 재실행 전에 완료 범위와 중복 가능성을 확인한다.
GNU find의 -prune은 하강을 멈추고 참을 반환한다. 작은 임시 트리에서 기본 출력과 명시적 -print의 위치를 비교하고, 괄호·-o·시작 경로·-depth로 결과가 달라지는 이유를 확인한다.
Bash 명령 치환은 큰따옴표 안에서도 끝의 LF를 모두 제거한다. 바이트 비교로 중간 개행 보존과 인용하지 않은 확장의 단어 분리를 구별하고, 원본 보존이 필요한 처리는 파일·파이프로 유지한다.