전문가처럼 CHMOD 권한을 처리하는 방법은 무엇입니까? [복사]

전문가처럼 CHMOD 권한을 처리하는 방법은 무엇입니까? [복사]

수년 동안 나는 유닉스 권한이 어떻게 작동하는지 아는 척하려고 노력했지만 실제로는 아무것도 이해하지 못했습니다.

www-data는 apache2 사용자입니다. 내 사용자는 sudo 액세스 권한이 있는 my_user입니다. 루트를 사용하고 있습니다.sudo su -

www-data에는 /var/www/html/(755 www-data:www-data)의 모든 권한이 있습니다.

www-data로 연결할 수 없으며 my_user를 사용하여 이 서버에 PhpStorm을 배포하고 싶습니다.

따라서 기본적으로 모든 폴더는 rx이므로 www-data 그룹에 대한 전체 액세스를 루트로 허용합니다.

chmod -R g+rwx /var/www/html/project/themes

그런 다음 내 사용자를 그룹에 루트로 추가했습니다.

usermod -a -G www-data my_user

이제 my_user 및 phpstorm 배포를 기록하면 여전히 "권한 거부"가 반환됩니다. 사용자 연결을 끊었다가 다시 연결했더니 이제 작동됩니다... 무슨 일이 일어난 거죠? 그래서 PhpStorm을 다시 시작했는데 이제 잘 작동합니다.

새 폴더를 서버에 푸시했는데 이제 파일이 나열됩니다.

ls -la /var/www/html/project/themes

drwxrwx--- 2 my_user my_user 4096 2월 15일 09:51 새 폴더

와우, 읽고, 편집하고, 실행할 수 있으려면 www-data가 정말 필요합니다. www-data:www-data이 작업을 수행하려면 새 폴더와 파일을 소유하고 싶습니다. 하지만 아마도 내가 틀렸을 수도 있습니다 ...

그렇다면 이러한 권한 문제에 대한 가장 좋고 명확한 해결책은 무엇입니까?

답변1

따라서 Unix/Linux 권한은 숫자와 추가에 따라 작동합니다. 알겠죠? 이것을 이해하고 나면 상황은 매우 간단해집니다. 권한 측면에서 읽기(r로 표시), 쓰기(w로 표시) 및 실행(x로 표시)의 세 가지 가능한 권한을 조합하여 가질 수 있습니다. ls -l터미널에 입력할 때 왼쪽 열에 나타나는 알파벳 문자 입니다 .

이제 누구에게 이러한 권한을 부여합니까? 이러한 권한은 누구에게 있으며 어떻게 볼 수 있나요? 글쎄, 당신은 세 가지 범주로 나뉩니다.

  1. 사용자(즉, 파일을 소유한 사용자, 즉 파일을 생성/인계받은 사용자)
  2. 그룹(파일이 속한 사용자 그룹)
  3. 기타(이 파일 그룹에 속하지 않은 사용자)

이제 이러한 권한을 할당하고 수정하기 위해 이 문자에도 숫자가 할당됩니다:
r = 4
w = 2
x = 1
설명하기 전에목적이를 위해 어떻게 작동하는지 설명하겠습니다. 그럼, 이라는 파일이 있다고 가정해 봅시다 file.sh. 알겠죠? 당신은 그것에 몇 가지 권한을 부여하고 싶고 슈퍼유저이고 그것이 관례이기 때문에 ugo의 권한을 그 순서대로 정의하려고 합니다. rwx를 사용할 수 있지만 사용자에게 읽기 및 쓰기 권한만 부여하고 다른 사람에게는 실행 권한을 부여하지 않으려면 어떻게 해야 할까요? 읽기 및 실행 권한만 부여하고 쓰기 권한(읽기 전용 실행 파일)은 부여하지 않으려면 어떻게 해야 합니까? 여기서 숫자가 작용합니다.
r = 4
r + w =​ 6
r + x = 5
r + w + x = 7
따라서 모든 사람(ugo)에게 읽기 및 쓰기 권한을 부여하려면
$ chmod 666 file.txt.
모든 사람에게 읽고 실행할 수 있는 권한을 부여하고 싶으므로 계속 진행하세요
$ chmod 555 file.txt.
모든 사람에게 읽기 전용 권한을 부여하고 싶지만 모든 권한은 소유자에게 부여할 수 있습니다
$ chmod 744 file.txt.
모든 사람에게 모든 권리를 부여하려면
$ chmod 777 file.txt
항상 ugo: 사용자-그룹-기타 순서로 666, 555, 744, 777 번호로 이동합니다.

+r, +w 및 +x를 사용하여 개인 권한을 추가하고 -r, -w 및 -x를 사용하여 개인 권한을 제거할 수도 있지만 이는 더 힘든 프로세스입니다.


$ chmod 777 *
디렉토리로 가서 a를 실행하고 모든 사람에게 모든 권한을 부여하여 문제를 해결하는 것이 좋습니다 . 이것은 거칠고 다소 안전하지 않은 수정이지만 이러한 유형의 문제에 대해서는 항상 작동하며 누가 찾을 때까지 문제를 해결할 수 있습니다.아니요이러한 권한을 부여한 후 소급하여 제거하세요.
도움이 되었기를 바랍니다.

관련 정보