새로운 사용자가 위험한 행동을하지 못하게하는 방법은 무엇입니까?


31

최근에 새로운 사용자로 리눅스를 시험해보기 위해 서버에 Ubuntu 서버를 설치했습니다. chmod 777웹 서버 디렉토리에 작성 해야 할 웹 서버를 설정하는 방법에 대한 자습서를 따랐습니다 .

어쨌든, 나는 한 친구를 위해 새 계정을 만들었습니다.

adduser francis

계정을 만든 후 그가 가진 액세스 권한을 확인했습니다.

groups francis

그것은 "francis : francis"라고 말했지만 문제는 아닙니다. 우분투는 기본적으로 어떤 그룹에도 그를 포함시키지 않았습니다. 이는 의미가 있습니다. 일주일 후, 절대적이고 완전한 공포 속에서, 나는 그가 SUDO와 같은 일을 할 수 없지만 시스템 디렉토리에서 엉망이더라도 서버의 거의 모든 것에 완전히 액세스 할 수 있음을 알았습니다. 예를 들어 그는 / var / www의 웹 서버 파일에 대한 전체 읽기 / 쓰기 액세스 권한을 가졌으며 (따라서 PHP 설정 파일 등에 저장된 비밀번호) 해당 디렉토리가 그의 홈 디렉토리에 있지 않고 그 그룹을 추가 할 수있는 그룹에 추가하지 않았습니다. 그 디렉토리에 액세스하거나 adduser를 수행 한 후에도 그에게 특별한 액세스 권한을 부여했습니다.

어쨌든, 여기서 무슨 일이 일어나고 있습니까? 중요한 것에 대한 그의 접근을 어떻게 죽이나 요? / media 또는 / var / www와 같은 항목에 액세스 할 수 없어야합니다. 나는 새로운 사용자가 기본적으로 위험하거나 스누핑을하지 말아야 할 곳은 없다고 생각했다.

그래서 요약하면, 내가 수동으로 지정하는 디렉토리에 + + 그가 제대로 작동 해야하는 디렉토리 (홈 디렉토리, vim, nano 등)에 액세스 할 수 있어야합니다.

고맙습니다


30
chmod 777을하고 왜 모두가 쓰기를 읽을 수 있는지 묻고 있습니까? chmod를위한 매뉴얼 페이지를 읽기
안와르

16
네, 여러 가지 이유로 777이 문제입니다.
Android Dev

21
@ Askerman-아니요, 777을 제공하면 모든 사람모든 것에 액세스 할 수 있습니다 . linux.com/learn/understanding-linux-file-permissions
Android Dev

11
우리는 특히 완전히 새로운 환경에서 학습 할 때 실수를합니다. 이것은 Linux 기반 OS를 사용할 때 Windows에서 작동하는 방식에 대한 개념을 없애는 것이 현명합니다. 권한을 되 돌린 후에는 사용자가 할 수없는 것을 변경할 수 없습니다. chmod다른 곳에서 사용한 경우 다른 문제가있을 수 있습니다.
Arronical

8
참고로,이 질문은 실제로 새로운 사람들이 찾기에 좋은 질문이기 때문에이 질문에 찬성합니다. 그리고이 오해는 아마도 우리가 생각하는 것보다 더 일반적 일 것입니다. 이것은 또한 당신이 무엇을하는지 모르고 인터넷에서 찾은 명령을 복사해서는 안되는 이유에 대한 좋은 예입니다.
Aaron

답변:


40

이것은 설계된대로입니다. 그리고 더 나쁘다. chmod 777의 의미는 ... "소유자, 그룹의 모든 사람 및 모든 사람이 읽기, 쓰기 및 실행 권한을 갖기를 원합니다"

꽤 끔찍하다.

그리고 웹 서버의 경우 777이 최적이 아닙니다. 755 (소유자에게는 전체 권한 그룹이 있고 다른 사용자에게는 읽기 + 실행이 있음)가 일반적인 기본값 이지만 소유자 (웹 서버 사용자)에 대해 최소한 읽기 / 쓰기 또는 읽기 / 쓰기 실행을 원한다고 말했을 수 있습니다. 그룹 및 사용자에 대한 권한이 없습니다. serverfault 에 적절한 권한 레벨이 무엇인지에 대한 더 완전한 질문이 있지만 640 또는 740과 같은 것을 고려하십시오.

즉, 사용자를 자신의 작은 세계에 배치 할 수 있습니다-사용자 시스템의 자신의 공간에 유지하기 위해 chroot를 설정 하십시오. 이 작업을 수행하는 데 도움이되는 가이드가 있습니다. 예를 들어 oli의 훌륭한 답변 은 필요에 따라 옵션 일 수 있습니다.


4
사소한 점 : "소유자, 그룹 내 모든 사람 ..."-파일 소유자가 반드시 파일 그룹에 속할 필요는 없습니다.
alex_d

2
좋은. servfault에 대한 정식 답변을 언급 한 것이 좋습니다.
Geek

3
이 상황에 대한 역사적인 전문 용어는 " 세계 읽기 가능 / 쓰기 가능"입니다.
Kaz

19

기본적으로 다음과 같이 분류됩니다.

R = 4 (read)
W = 2 (write)
X = 1 (execute)

따라서 읽기 권한은 4, 읽기 및 쓰기는 6, 읽기 및 실행은 5, 모두 (읽기, 쓰기, 실행)는 7입니다. 이는 소유자, 소유자 그룹에 대한 권한 옥텟 값을 계산하는 방법입니다. 또는 모두.

이러한 권한을 chmod파일 또는 디렉토리 위치에 적용 할 때 위에 계산 된 숫자는 소유자, 그룹 및 모든 사람에 대해 각각 8 진수로 다음과 같이 적용됩니다.

     $ chmod _ _ _ <file or directory>
             | | |
owner--------  | |
owner's group--  |
everyone---------

따라서 내 자신과 내 그룹에 내가 소유 한 폴더에 대한 읽기, 쓰기 및 실행 권한을 부여하고 싶지만 모든 사람 이 읽을 수 없도록하려면 다음을 사용합니다.

$ chmod 770 myDirectory

자세한 내용 은 chmod 매뉴얼 페이지를 확인하십시오 .

$ man chmod

올바른 순서로 올바른 권한을 부여하기 위해 함께 추가해야 할 비트를 기억할 수없는 경우에는 읽기가 더 쉽습니다 chmod ugo+rwx <...>. 문자가 서 U SER, g의 roup, THER; R의 EAD, w 의식, 즉 X ecute. '-'를 사용하여 제거 할 수 있습니다 (예 :) chmod go-wx <...>. 입력 한 내용 만 추가하거나 제거합니다. 그룹 / 기타에 대한 액세스를 제거 chmod ugo+rwx <file>; chmod u+rwx <file> 하지 않습니다 .
ReactiveRaven

@ReactiveRaven 좋은 지적입니다. 그러나 OP는 chmod 777그 일 에 대해 분명히 혼란스러워서 설명을 지시했습니다.
Aaron

@ 잔나 좋은 전화!
Aaron

6

다른 사람들이 언급했듯이 권한을 777로 설정해서는 안됩니다.

여기 내가 사용하는 유용한 참조 시트가 있습니다.

+-----+---+--------------------------+
| rwx | 7 | Read, write and execute  |
| rw- | 6 | Read, write              |
| r-x | 5 | Read, and execute        |
| r-- | 4 | Read,                    |
| -wx | 3 | Write and execute        |
| -w- | 2 | Write                    |
| --x | 1 | Execute                  |
| --- | 0 | no permissions           |
+------------------------------------+
You can use the octal notation, where the three digits correspond to the user, then group, then other. 
Perhaps this might help 
+------------+------+-------+
| Permission | Octal| Field |
+------------+------+-------+
| rwx------  | 700  | User  |
| ---rwx---  | 070  | Group |
| ------rwx  | 007  | Other |
+------------+------+-------+

1
좋은! 이것은 시각적 학습자 인 사람들 (나 같은 사람)에게 큰 도움이됩니다.
Aaron

3

로그인 한 사람과 파일을 공유하기 위해 특별히 할 필요는 없습니다. 기본 데비안 설치에서는 사용자가 서로의 홈 디렉토리에 액세스 할 수 있습니다.

예를 들어

$ ls -ld ~
drwxr-xr-x 65 zwets zwets 4096 Sep 29 12:06 /home/zwets

내 홈 디렉토리에 대한 권한은 시스템의 모든 사용자에 대한 읽기 (r)액세스 (x) 입니다. 오직 추가로 쓰기 (w) 액세스 권한이 있습니다.

또한 umaskUbuntu 의 기본값 은 사용자가 만든 파일과 디렉토리를 기본적으로 읽을 수 있도록 하는 것 입니다. 당신은 설정할 수 umask077당신이 원하는하지 않은 경우.

이것은 기본 설정에서 사용자 you~/README.txt나와 문서를 공유 you하려면 할 필요가 없음을 의미 합니다. 간단히 볼 수 있습니다.

$ who am i
zwets    pts/26       2016-09-29 08:05 (:pts/19:S.6)
$ ls -l ~you/README.txt
-rw-r--r-- 1 you you 24 Sep  8 11:23 /home/you/README.txt
$ cat ~you/README.txt
You's shared thoughts.

파일을 편집하거나 제거 할 수 없지만 쓰기 권한이있는 위치로 파일을 복사 할 수 있습니다. 그런 다음 사본을 소유합니다.

$ echo "Adding my thoughts." >> ~you/README.txt
bash: /home/you/README.txt: Permission denied
$ rm ~you/README.txt
rm: remove write-protected regular file '/home/you/README.txt'? yeah!
rm: cannot remove '/home/you/README.txt': Permission denied
$ cp ~you/README.txt ~zwets
$ ls -l ~/README.txt
-rw-r--r-- 1 zwets zwets 24 Sep  29 14:09 /home/zwets/README.txt

AskUbuntu에 대한 다른 답변에서 설명했듯이 대부분의 시스템이 기본적으로 세계에서 읽을 수있는 이유가 있습니다 . 그러나 공유 시스템에서는 비 소유자가 홈 디렉토리에 액세스 할 수 없도록하는 것이 좋습니다.

$ chmod o-rwx ~
$ ls -l ~
drwxr-x--- 65 zwets zwets 4096 Sep 29 12:06 /home/zwets

... 많은 사용자가 기본값-QED ;-)을 모르는 것 같습니다. 파일 권한이 비밀을 보호하지 않는다는 것을 사용자에게 알리는 것이 현명합니다.


1

Ubuntu에서 모든 사용자는 'sudo'그룹에 추가 된 수퍼 유저 권한을 가지고 있습니다.이 그룹에 다른 사용자가 추가되지 않았는지 확인하십시오.

다른 사용자로부터 파일과 디렉토리를 보호하기 위해 위의 답변에서 Journeyman Geek가 제안한대로 권한을 설정할 수 있습니다.

특수 권한을 사용하여 파일 및 디렉토리를 다른 사람으로부터 보호 할 수도 있습니다.

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