“chmod + x <filename>”의 기능은 무엇이며 어떻게 사용합니까?


36

"일괄 파일"(쉘 스크립트)의 우분투 아날로그를 작성하고 싶습니다. 그러나 스크립트를 실행할 수 있도록 명령 을 사용하는 방법을 모르겠습니다 . 어디서 사용해야하는지 모르겠습니다.chmod +x filename


1
사이트 참고 사항으로 : Linux는 배치 파일을 사용하지 않습니다. 쉘 스크립트를 사용합니다. 이들은 대부분 BASH (Bourne Again SHell)에 의해 실행됩니다.
s3lph

@the_Seppi 우분투의 기본 쉘은 대시 (데비안 Almquist 쉘)는 bash는 아니지만 대시와 bash는 비슷하며 원하는 경우 bash를 사용할 수 있습니다.
워렌 힐

이것은 명확하지 않았지만 주제를 벗어나지 않았습니다. 사람들이 이것이 Windows 및 DOS 용 실제 배치 파일을 작성하는 것에 관한 것이라고 생각 했습니까? chmod해당 OS에는 실제로 적용되지 않으며 "일괄 파일"은 따옴표로 묶여 있습니다. 여기의 OP (최근에 본 2014)는 배치 파일과 비슷한 것을 작성하고 실행하려고했습니다. 유닉스 계열 OS와 달리 Windows (및 DOS) 사용자는 chmod +x실행 바이너리를 시작하는 것과 같은 방식으로 스크립트를 실행할 수 있도록하기 위해 다른 것을 사용할 필요가 없습니다 . 질문을 명확히하기 위해 약간 편집했으며 다시 열기로 투표하고 있습니다.
Eliah Kagan

답변:


37

한마디로 :

chmod +x파일 (스크립트)은 실행 가능하게 만듭니다. 스크립트를 마우스 오른쪽 버튼으로 클릭하고 속성 -> 권한 -> 파일을 프로그램으로 실행 허용을 선택 하면 터미널의 명령과 동일한 결과가 나타납니다.

권한을 변경하려는 파일이 시스템 디렉토리 내에있는 root경우 다음과 같이해야합니다. ( sudo명령 을 사용하는 동안주의하십시오 )

sudo chmod +x /usr/share/testfolder/aFile 

또한 정확히 여기에 보관하려는 것이 확실하지 않습니다. 질문을 편집하고 실제 문제에 대한 자세한 정보를 제공하십시오!

자세한 내용은이 질문을 참조하십시오. chmod u + x '대'chmod + x


길게 :

입력 man chmod터미널 창에서 ( Ctrl+ Alt+ T) 다음과 같은 출력을 얻을 수 있습니다 :


이름 : chmod-파일 모드 비트 변경

개요

chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...

기술

This  manual page documents the GNU version of chmod.  chmod changes the
file mode bits of each given file according to mode, which can be either
a  symbolic representation of changes to make, or an octal number repre
senting the bit pattern for the new mode bits.

The format of a symbolic mode  is  [ugoa...][[+-=][perms...]...],  where
perms  is  either  zero or more letters from the set rwxXst, or a single
letter from the set ugo.  Multiple symbolic modes can  be  given,  sepa
rated by commas.

A  combination  of  the letters ugoa controls which users' access to the
file will be changed: the user who owns  it  (u),  other  users  in  the
file's  group (g), other users not in the file's group (o), or all users
(a).  If none of these are given, the effect is as if a were given,  but
bits that are set in the umask are not affected.

The  operator  +  causes  the selected file mode bits to be added to the
existing file mode bits of each file; - causes them to be removed; and =
causes them to be added and causes unmentioned bits to be removed except
that a directory's unmentioned set  user  and  group  ID  bits  are  not
affected.

The  letters  rwxXst  select file mode bits for the affected users: read
(r), write (w), execute (or search for directories) (x),  execute/search
only  if  the  file is a directory or already has execute permission for
some user (X), set user or group ID on execution (s),  restricted  dele
tion  flag  or sticky bit (t).  Instead of one or more of these letters,
you can specify exactly one of the letters ugo: the permissions  granted
to  the  user  who  owns  the file (u), the permissions granted to other
users who are members of the  file's  group  (g),  and  the  permissions
granted  to  users  that  are in neither of the two preceding categories
(o).

A numeric mode is from one to four octal digits (0-7), derived by adding
up  the  bits with values 4, 2, and 1.  Omitted digits are assumed to be
leading zeros.  The first digit selects the set  user  ID  (4)  and  set
group ID (2) and restricted deletion or sticky (1) attributes.  The sec‐
ond digit selects permissions for the user who owns the file: read  (4),
write  (2),  and  execute  (1);  the third selects permissions for other
users in the file's group, with the same  values;  and  the  fourth  for
other users not in the file's group, with the same values.

chmod  never changes the permissions of symbolic links; the chmod system
call cannot change their permissions.  This is not a problem  since  the
permissions  of  symbolic  links are never used.  However, for each sym‐
bolic link listed on the command line, chmod changes the permissions  of
the  pointed-to file.  In contrast, chmod ignores symbolic links encoun‐
tered during recursive directory traversals.

SETUID 및 SETGID 비트

chmod clears the set-group-ID bit of a regular file if the file's  group
ID  does  not  match  the user's effective group ID or one of the user's
supplementary group IDs, unless the  user  has  appropriate  privileges.
Additional  restrictions may cause the set-user-ID and set-group-ID bits
of MODE or RFILE to be ignored.  This behavior depends on the policy and
functionality of the underlying chmod system call.  When in doubt, check
the underlying system behavior.

옵션

Change the mode of each FILE to MODE.

   -c, --changes
          like verbose but report only when a change is made

   --no-preserve-root
          do not treat `/' specially (the default)

   --preserve-root
          fail to operate recursively on `/'

   -f, --silent, --quiet
          suppress most error messages

   -v, --verbose
          output a diagnostic for every file processed

   --reference=RFILE
          use RFILE's mode instead of MODE values

   -R, --recursive
          change files and directories recursively

   --help display this help and exit

   --version
          output version information and exit

   Each MODE is of the form `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.

맨 페이지는 + x에 대해 아무 것도 말하지 않기 때문에 여기에 오기 전에 맨 페이지를 먼저 읽었 기 때문에이 대답은 나에게 재미 있습니다. 맨 페이지 전체를 여기에 붙여 넣은 이유가 있습니까? 당신의 '짧은'은 내가 필요한 대답 (chmod에서 + x는 무엇입니까?)이지만 내 (아마도 무지한) 관점에서는 붙여 넣은 매뉴얼 페이지의 요약이 아닙니다.
Alex

1
알렉스를 지적하는 것이 옳습니다. 나는 정보를 찾고 있지만 아직 얻지 못한 사람이라면 그 방법을 선호하기 때문에 완성을 위해 전체 매뉴얼 페이지를 추가했습니다. 나는 실제로 과거에 많은 매뉴얼 페이지가 여기에서 설명하는 것과 비슷하다는 것을 알았습니다. 도와 줄 수있어서 다행입니다!
v2r

"파일 (스크립트)에서 chmod + x는 실행 가능하다는 의미 일뿐입니다." 모든 사용자가 실행할 수 있다는 의미 입니까? 그것이 맨 페이지를 최소한 해석하는 방법입니다. chmod u+x그것은 단지 당신에게 실행 할 것
짐 아호

3

먼저, 스크립트는 사용할 인터프리터를 선언해야합니다. 파일의 첫 번째 줄에서이 작업을 수행하십시오. 쉘 스크립트 인 경우 #!/bin/sh또는 이어야합니다 #!/bin/bash.

여기에 사용자 이름을 쓰는 스크립트가 있습니다 : echo-whoami.sh

#!/bin/sh echo $(whoami)

실행 가능하게하려면을 사용하십시오 chmod +x echo-whoami.sh. 그런 다음을 사용하여 실행할 수 있습니다 ./echo-whoami.sh.


3

배치 파일쉘 스크립트 를 효과적으로 리눅스에서 같은 의미 두 용어이다. 하지만 스크립트 라는 용어 가 훨씬 자주 사용됩니다 .

가장 간단한 셸 스크립트 파일 에는 명령 줄 (Bash 명령 인터프리터)에 입력 한 명령 만 포함 됩니다. 이론적으로 통역사를 원하는 언어로 바꾸거나 통역사를 가질 수도 있습니다. 보다 명확하게하기 위해 첫 줄을 시작하는 것이 좋습니다.

#!/bin/sh (레거시 시스템으로 이식성을 극대화하지 않으려는 경우)

또는

#!/bin/bash (추가 기능을 원한다면 오늘은 신경 쓰지 않을 것입니다)

이 줄이 끝나면 각 줄에 하나씩 명령을 입력하십시오. 이 질문의 범위를 넘어 별도의 구조가 많이 있습니다, 참조 man bash또는 http://www.tldp.org/LDP/Bash-Beginners-Guide/Bash-Beginners-Guide.pdf (초보자 용) 또는 HTTP : // WWW .tldp.org / LDP / abs / abs-guide.pdf (자세한 질문은).

실제로 스크립트를 실행하려면 두 가지 요구 사항이 있습니다. 첫째, 인터프리터 프로세스 는 파일읽고 두 번째 는 실행 가능으로 표시되어 있는지 확인해야합니다 . 편의상 스크립트에 쓸 수있는 것도 유용합니다 (따라서 수정하거나 수정해야 함).

팀원 및 기타 팀원이 스크립트를 실행 (및 참조) 할 수 있기를 원하지만 팀원이 스크립트를 조작하지 않기를 원한다고 가정하면,

  • (모든 권한을 실행 a+x또는 +x으로, a기본값),
  • (모든 권한을 읽 a+r거나 +r로, a다시 기본값),
  • 나만을위한 권한 쓰기 ( u=w)

일반적으로 파일 권한의 적절한 값입니다. 쉼표로 구분하여 연결된 단일 조치를 입력 할 수 있습니다.

이 "액션 언어"는 매우 매력적이지만 ( 변경하기 전에 권한 설정에 따라 결과가 달라지는 연산자 +=연산자 의 차이점에 유의하십시오 ), 입력하기가 지루합니다.

모든 작업이 내부적으로 적용되는 비트 마스크를 만들 때 비트 마스크를 man chmod직접 입력 할 수도 있습니다 ( 자세한 내용 참조).

쉘 모드 chmod 755 myscript.sh 는 모든 경우의 95 % 이상에서 가장 의미가 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.