chmod 000 /dev/stdin이 터미널을 영원히 비활성화합니까?

chmod 000 /dev/stdin이 터미널을 영원히 비활성화합니까?

다음 문제를 해결 중입니다.유닉스 교과서 (8장 16호, 207쪽):

및 명령과 chmod동일한 작업을 수행하는 명령줄을 제공합니다. (팁: 터미널을 포함한 모든 하드웨어 장치에는 디렉터리에 관련 파일이 있습니다.)mesg nmesg y/dev

나는 그 대답이 다음과 같다고 믿는다:

mesg n=chmod 770 /dev/stdout

mesg y=chmod 777 /dev/stdout

하지만 을 사용하면 어떻게 되는지 궁금합니다 chmod 000 /dev/stdin.

터미널에 명령을 입력할 수 없도록 잠겨 있습니까?

답변1

/dev/stdin아니요 , /dev/stdout잘못된 장치입니다. 이는 터미널 장치가 아니며 각각 표준 입력 및 표준 출력의 별칭입니다. 정의에 따르면 표준 입력과 표준 출력은 다음과 같습니다.파일 설명자응용 프로그램은 열릴 것으로 예상하며 일반적인 의미를 갖습니다(파일 설명자는 각각 0과 1이고 2는 표준 오류입니다). /dev/stdin및 같은 장치는 응용 프로그램에 파일 이름이 필요하지만 응용 프로그램 사용자가 특정 파일을 여는 대신 특정 파일 설명자에 액세스하기를 원할 때 유용합니다. /dev/stdoutUnix 변형에 따라 장치 파일이 아닐 수도 있습니다. 예를 들어 Linux에서는 /proc/self/fd/0해당 파일 설명자에서 프로세스가 연 모든 파일에 대한 "마법의" 심볼릭 링크입니다.

/dev/stdin에 대한 권한을 변경하면 /dev/stdout이러한 파일 이름이 명시적으로 사용되는 경우에만 변경됩니다. 권한은 특정 파일 이름을 열 때만 중요하기 때문에 터미널과 관련된 어떤 것에도 영향을 주지 않으며 표준 입력 및 표준 출력의 일반적인 사용에도 영향을 주지 않습니다.

하는 일은 mesg프로세스의 권한을 변경하는 것뿐입니다.제어 터미널. 터미널에서 실행되는 애플리케이션의 경우 터미널은 표준 입력, 표준 출력 및 표준 오류(파일 설명자 0, 1 및 2)에서 열립니다. 명령을 사용하여 tty터미널 장치가 무엇인지 확인할 수 있습니다. mesg n와 동등 chmod g-w "$(tty)"하고 mesg y동등합니다 chmod g+w "$(tty)".

관련 정보