명령 행에 설정된 권한으로 파일을 작성할 수 있습니까? 작성할 때 mkdir -m <mode> <dir>,

디렉토리를 작성할 때 mkdir -m <mode> <dir>, 주어진 모드 / 권한이 (원자 적으로) 설정된 하나 이상의 디렉토리를 작성합니다.

명령 행에 파일을 작성하는 것과 동등한 것이 있습니까?

비슷한 내용 :

open("file", O_WRONLY | O_APPEND | O_CREAT, 0777);

사용 toucha로 다음 chmod여기 내 유일한 옵션은?


편집 : 사용하기 위해 teppic의 제안을 시도한 후 원자에 얼마나 가까운 지 확인하기 위해 install실행했습니다 strace. 대답은 그리 많지 않습니다.

$ strace install -m 777 /dev/null newfile
...
open("newfile", O_WRONLY|O_CREAT|O_EXCL, 0666) = 4
fstat(4, {st_mode=S_IFREG|0666, st_size=0, ...}) = 0
...
fchmod(4, 0600)                         = 0
close(4)                                = 0
...
chmod("newfile", 0777)                  = 0
...

여전히 단일 쉘 명령이며 이전에는 몰랐습니다.



답변

다음 install과 같은 더미 파일과 함께 명령 (GNU coreutils의 일부)을 사용할 수 있습니다.

install -b -m 755 /dev/null newfile

-b옵션은 백업 newfile이 이미 존재하는 경우. 이 명령을 사용하여 소유자를 설정할 수도 있습니다.


답변

touch파일이 존재하지 않는 경우 항상 파일을 작성하고 기호 링크를 따르며 파일을 항상 실행 불가능하게 만듭니다. umask를 통해 읽기 및 쓰기 비트를 결정할 수 있습니다 .

(umask 077; touch file)  # creates a 600 (rw-------) file
(umask 002; touch file)  # creates a 664 (rw-rw-r--) file

O_NOFOLLOW전통적인 쉘 도구로는 “안전한”원자 파일 작성 (특히 )을 사용할 수 없습니다. sysopen펄에서 사용할 수 있습니다 . BSD에서 영감을 얻은 mktemp유틸리티가 있다면 O_NOFOLLOW; chmod기본 모드 인 600이 맞지 않으면 나중에 전화 해야합니다.


답변

내 홈 디렉토리에 bash 스크립트 /home/anthony/touchmod.sh가 있습니다.

#!/bin/bash

touch "$2"
chmod "$1" "$2"

따라서 readme.txt644 권한 으로 작성해야하는 경우 다음을 입력 할 수 있습니다.

~/touchmod.sh 644 readme.txt