디렉토리를 작성할 때 mkdir -m <mode> <dir>
, 주어진 모드 / 권한이 (원자 적으로) 설정된 하나 이상의 디렉토리를 작성합니다.
명령 행에 파일을 작성하는 것과 동등한 것이 있습니까?
비슷한 내용 :
open("file", O_WRONLY | O_APPEND | O_CREAT, 0777);
사용 touch
a로 다음 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.txt
644 권한 으로 작성해야하는 경우 다음을 입력 할 수 있습니다.
~/touchmod.sh 644 readme.txt