Unix 권한, chmod 및 ls-la 이해


와!이, 당신은 왜 단말기 명령을 씁니까?나는 이것이 전단 블로그인 줄 알았다.
듣다나는 많은 사람을 포함하고 있다.그리고 창고의 위치가 어떻든지 간에 당신은 어느 때 권한 문제에 부딪힐 수 있기 때문에 왜 이곳에서 무슨 일이 일어났는지 이해하지 못합니까?
차갑다차갑다시작합시다.

왜 나는 이 스크립트를 실행할 수 없습니다!?


컴퓨터에서 스크립트를 실행하고 싶다고 가정해 보세요.어딘가에서 다운로드했거나 창고에서 넘쳐나 복사된 것일 수도 있다.어쩌면 네가 쓴 대본일지도 모르는데, 누가 알겠니?만약 당신이 이런 멋진 각본을 가지고 있다면:
#!/bin/bash

echo "Have a great day!"

따라서 터미널에 뛰어들어 ./my-script.sh을 실행하면 다음과 같은 정보를 받을 수 있습니다.
$ ./my-script.sh
permission denied: ./my-script.sh

따라서 창고로 이동하여 "run scriptpermission denied"또는 다른 내용을 검색한 다음 chmod 744 <filename>의 간결한 답을 얻을 수 있습니다.따라서 터미널에 복사하여 실행할 수 있습니다. 유닉스의 비밀을 진정으로 걱정할 필요는 없습니다.
$ chmod 744 ./my-script.sh
$ ./my-script.sh
Have a nice day!

만족스러우면 당신의 업무를 계속하고 단말기의 적당한 환영을 받는 것 같습니다.
그러나 당신의 잠재의식 깊은 곳에서 당신은 자신도 모르게 작은 코드 악마를 방출했다.이 임프는 목욕을 하거나 잠들 때까지 기다렸다. 기본적으로 당신이 인도하기 어려운 평온한 선태를 찾았을 때, 당신의 뇌에 "이 명령은 무엇입니까?"라는 질문을 던졌다.
그 순간, 당신은 왜 유닉스에 익숙하지 않은지 알고 싶고, 당신 자신과 당신의 능력을 의심하고, 그 느낌을 판도라의 상자에 담아 하루를 계속합니다.

나의 주문서류는 어디로 갔습니까?


만약 1분간 프로그래밍을 했다면, 점 파일을 사용하고 있을 수도 있습니다.아마도 프로젝트에 .env의 API 키 파일이 있거나git 역사 기록을 철저히 삭제하고 프로젝트에 있는 .git 폴더를 삭제하는 것이 마지막 선택일 것입니다.
어떤 상황에서도 터미널에 뛰어들어 신뢰할 수 있는 ls 명령을 실행할 수 있습니다.
$ ls
work stuff morestuff not_file_you_want.js

바이올리니스트!내 서류는 어디에 있습니까?그것은 vscode에 나타나는데 왜 여기에 없습니다!?
스택 오버플로우에 다시 액세스하면 ls -la이 녹색으로 선택되어 다음 정보가 제공됩니다.
$ ls -la
drwxr-xr-x 15 you you 4096 Apr 24 11:16 .
drwxr-xr-x 3 root root 4096 Mar 30 12:09 ..
-rw-r--r-- 1 you you 38 Apr 24 11:04 .mydotfile
drwxr-xr-x 9 you you 4096 Apr 16 09:50 work
drwxr-xr-x 9 you you 4096 Apr 13 09:50 stuff
drwxr-xr-x 9 you you 4096 Apr 11 09:50 morestuff
-rw-r--r-- 1 you you 38 Apr 24 11:04 not_file_you_want.js

성공이것은 나의 점 파일로 .mydotfile으로 적절하게 명명되었다.그런데 네 머릿속에 있는 그 임프가 끼어들었다. "처음에 알파벳과 대시가 뭐야?"
아!사칭 증후군!의심하다겁나다어둠의 면!
너 자신에게 물어봐, 왜 나는 이렇게 컴퓨터를 잘 사용하지 못하니!?

Unix 사용 권한 배우기 및 문제 해결


우리 먼저 그 이상한 자모와 대시를 이야기합시다.
-rw-r--r-- 1 you you 38 Apr 24 11:04 .mydotfile

-rw-r-r--r-- 문자열은 이 파일의 권한 목록입니다!잠시 후, 우리는 이 점의 의미를 상세하게 소개할 것이다.
왼쪽에서 오른쪽으로 이어지는 추가 정보는 해당 파일에 대한 링크 수 (1), 소유자, 그룹 소유자, 파일 크기 (38), 마지막으로 수정된 날짜/시간 및 파일 이름입니다.
그럼, 그 알파벳/대시 번호의 쓸데없는 말은?
-rw-r--r--

이것은 사실상 네 개의 서브셋 정보로 구성된 그룹이다.
type | owner | group | everyone else
------------------------------------
-    | rw-   | r--   | r--

형식에 대해 대시 번호는 이것은 단지 일반적인ol 파일일 뿐이라는 것을 나타낸다.d은 디렉터리를 표시하고, l은 링크를 표시하며, 터미널에서 다른 색을 볼 수도 있습니다.
나머지 열에는 세 개의 정보가 있습니다. 이것은 시스템상의 모든 호자 집합의 특정한 권한입니다.'Owner'는 파일의 창설자이고,'그룹'은 Owner가 속한 사용자 그룹이며, 마지막 부분은 시스템의 모든 다른 사용자입니다.
알파벳 자체에 대해서는 (r)ead(w)rite와 e(x)ecute를 표시합니다.따라서 위의 예제에는 다음과 같은 내용이 있습니다.
type | owner | group | everyone else
------------------------------------
-    | rw-   | r--   | r--
file | read/ | read  | read
       write

이것은 사용자(소유자)가 파일을 읽고 쓸 수 있지만 다른 사용자는 파일만 읽을 수 있다는 것을 의미합니다.
다음은 디렉터리에서 자주 볼 수 있는 다른 권한 그룹입니다.
type      | owner   | group   | everyone else
------------------------------------------
d         | rwx     | r-x     | r-x
directory | read/   | read/   | read/
            write/    execute   execute
            execute

이것은 당신이 이 모든 것을 완성할 수 있다는 것을 의미하지만, 다른 사람들은 cd을 디렉터리에 읽을 수 있다.

권한 변경


너무 좋아요.이제 이 미친 알파벳들이 무슨 뜻인지 알겠어.근데 한번 바꿔볼까요?ls -la을 실행할 때의 예제 디렉토리를 살펴보겠습니다.
$ ls -la
drwxr-xr-x 15 you you 4096 Apr 24 11:16 .
drwxr-xr-x 3 root root 4096 Mar 30 12:09 ..
-rw-r--r-- 1 you you 38 Apr 24 11:04 .mydotfile
drwxr-xr-x 9 you you 4096 Apr 16 09:50 work
drwxr-xr-x 9 you you 4096 Apr 13 09:50 stuff
drwxr-xr-x 9 you you 4096 Apr 11 09:50 morestuff
-rw-r--r-- 1 you you 38 Apr 24 11:04 not_file_you_want.js

not_file_you_want.js 파일에 대한 사용 권한을 변경하고 소유자에게 실행 권한을 추가하려는 경우
이를 위해 chmod 명령을 사용합니다.
$ chmod u+x not_file_you_want.js

이곳의 u+x 부분은 너를 걸어 넘어뜨릴 수도 있지만, 다시 보자.이것은 (u)ser+e(x)ecute를 가리키거나 사용자에게 실행 권한을 추가합니다.
그럼 더 세밀한 권한은요?다른 사용자의 모든 권한을 삭제하려면 어떻게 해야 합니까?
우리는 chmod을 사용하여 초특이성을 실현할 수 있다.
$ chmod u=rwx,g-rwx,o-rwx not_file_you_want.js

그래서 이 명령은 (u)ser 권한은 (r)ead, (w)rite, e(x)ecute와 같아야 한다고 합니다.그룹에서 모든 권한을 삭제하고 다른 모든 사용자에서 모든 권한을 삭제합니다.

바이너리 단축키



따라서 원하는 파일 권한을 명시적으로 설정할 수 있습니다.그러나 그 꼬마 뇌귀는 여전히 우리의 첫 번째 창고에 답을 쏟아내며 비명을 질렀을지도 모른다.
$ chmod 744 ./my-script.sh

744는 도대체 무슨 뜻입니까?
이것은 사실상 -rwxr--r--의 약어이다.각 숫자는 하나의 호자집을 대표한다.첫 번째 숫자(7)는 사용자이고 중간은 그룹이며 마지막은 모든 다른 사용자입니다. 앞에서 보듯이 rwx | r-- | r--입니다.
각 숫자는 실제로 세 개의 권한 조합의 이진 표시이다.사용자 권한 보기:
2^2  | 2^1   | 2^0
read | write | execute
---------------------------
1    | 1     | 1

여기에서 우리는 모든 세 개의 권한 (rwx) 이 필요하다고 표시하기 때문에, 우리는 2^2, 2^1, 2^0을 합쳐서 7을 얻는다.
다른 그룹의 경우:
2^2  | 2^1   | 2^0
read | write | execute
---------------------------
1    | 0     | 0

우리는 2^2만 계산하고 그룹과 다른 사람의 권한에 대해서는 4와 같다. 게다가 우리의 7을 더하면 우리는 744를 얻는다.
다음은 몇 가지 일반적인 권한 예입니다.
777 = 111 111 111 = rwxrwxrwx
666 = 110 110 110 = rw-rw-rw-
644 = 110 100 100 = rw-r--r--
600 = 110 000 000 = rw-------

미친 거 아니야?
지금 이 명령을 보았을 때:
$ chmod 700 my-file.sh

사용자에게 모든 권한을 주고 다른 사람의 모든 권한을 삭제했다는 것을 의미한다.너 가는 거 봐, 이 리눅스 마스터야.😎.

이별 생각


특히 제 동료인 클레 벤슨이 전화 회의에서 저에게 이 점을 설명해 주셔서 감사합니다.여러 해 동안 나는 rwx의 작은 문자열을 쳐다보며 그 의미를 찾으려고 애쓰지 않았고, 단지 그것을 궁극의 마법으로 돌려서 자신을 무지에 빠뜨렸다.사실, 나는 유닉스 파일 권한 디자인의 논리에 놀랐다. 내가 바이트 수학을 배우고 이 글을 쓰도록 자극했을 때, 바이트 수학은 나를 깜짝 놀라게 했다.
다음에 창고에서 linux 마법사를 넘길 때 연구를 하면 얼마나 배웠는지 놀랄 수도 있습니다.알아요. 그럴게요.

좋은 웹페이지 즐겨찾기