로그인하지 않는 모든 비대화형 쉘 명령 전에 umask를 설정하십시오.

로그인하지 않는 모든 비대화형 쉘 명령 전에 umask를 설정하십시오.

SSH 서버에 연결하기 위해 PHP 스크립트를 사용하고 있습니다. 명령을 실행하고 종료됩니다. 비대화형 및 비로그인 셸에 연결합니다. 그래서 파일이 로드 .bashrc되지 않거나 거기에서 제대로 설정할 .bash_profile수 없습니다 . ssh의 내부 작동에 대한 정보를 검색해 보니 ssh가 연결된 후 파일을 사용하여 일부 명령을 실행할 umask수 있는 것 같습니다 . ~/.ssh/rc내 거~/.ssh/rc 서버에서나는 다음에 연결하고 있습니다 :

#!/bin/bash

echo "Setting umask to 002"
umask 002
echo "Umask set"

문제는 내 umask가 잘못 설정되어 있다는 것입니다. 스크립트를 실행하고 umask서버에서 명령을 실행 하면 0022umask가 표시됩니다.

Run: cd /local/web/ && umask
> Setting umask to 002
> Umask set
> 0022

왜 작동하지 않나요?

답변1

umask내장 명령으로 실행할 때만 유효합니다.

스크립트를 이름으로 호출하지 말고 . script현재 쉘 프로세스에서 실행되도록 호출하십시오.

0022하지만 인쇄된 값이 헷갈릴 경우에는 022차이가 없고 값은 동일합니다.

더 나은 이해하기 쉬운 출력을 위해 POSIX를 사용해 보십시오 umask -S.

관련 정보