리눅스에서 ls -ail 명령어를 쳐 보면, 앞에 10자리의 이상한 문자열이 온다는 것을 알 수 있어요. 그리고, 우리는 권한 755를 준다. 664를 준다. 이런 말도 많이 하고요. 이게 무엇을 의미하는지 천천히 보도록 하겠습니다.

 

 


 home 디렉토리에서, ls -ail 명령을 입력해 보았습니다.

 

 

 먼저, 앞에 오는 것을 빼고 3자리씩 끊어서 읽으시면 되는데요. 예를 들어 283269번 파일은 rwx, ---, --- 이렇게 온다는 것을 알 수 있습니다. 이는 소유자 chogahui05에 대해서만 Read, Write, eXecute가 허용이 되고, 소유자가 아닌, 그룹 chogahui05에 속한 유저들이나, 다른 사람들이 Read, Write, eXecute 할 수 없다는 의미입니다. chogahui06이라는 유저를 추가했습니다. 그룹 chogahui05와 chogahui06이, 각각 chogahui05와 chogahui06을 가지고 있다고 해 봅시다.

 

 

 그러면 이렇게 그릴 수 있을 거에요.

 

 

 다음에, 유저를 chogahui06으로 바꾸고, ls 명령어를 수행해 보니, 허가 거부가 나옵니다. 이것은, chogahui06은 디렉토리 '.'의 소유자가 아니기 때문입니다. 이 명령어를 가능하게 하려면, '.'의 권한을 변경해야 하는데요. '.' 에 권한 775를 줘 봅시다.

 

 

 그러면, ls 명령어가 동작한다는 것을 알 수 있는데요. 여기에서, 권한이 rwx------에서, rwxrwxr-x로 바뀌었다는 것을 알 수 있습니다. 여기서 우리는 숫자의 의미를 대략적으로 파악할 수 있는데요.

 

 

  7은, R, W, X가 가능하다는 것입니다. 그리고, 5는 R, X가 가능하다는 의미입니다. 맨 앞자리는 Owner의 권한, 그 다음 자리는 Group의 권한, 그리고 마지막 자리는 Other의 권한인데요. 775를 해석해 봅시다. Owner의 권한은 7, Group의 권한은 7, Other는 5라는 의미입니다.

 

 

 그런데 7, 7, 5는 또 무엇인가요? RWX를 3자리의 2진수로 해석해 봅시다. RWX가 셋 모두 켜지면 111, R과 X만 켜지면 101, R만 켜지면 100으로 표현할 수 있어요. 7을 2진수로 바꾸면 111입니다. 이는 R, W, X가 모두 켜졌다고 해석할 수 있어요. 5는 2진수로 바꾸면 101인데요. 이는 R과 X만 켜졌다고 볼 수 있어요. bit로 보면 됩니다. 즉, 권한 775는 Owner와 Group의 권한은 7, Other는 5를 가지는데, Owner와 Group은 Read, Write, eXecute가 가능합니다. 그리고 그 외의 유저들은 Read와 eXecute가 가능하다는 것입니다.

 

 


 그런데, 그룹이 무엇을 의미하냐. 라고 물으신다면. 아래 그림을 봅시다.

 

 

 strcpy.c를 보시면, 소유자와 소유그룹이 각각 chogahui05, chogahui05라고 되어 있습니다. 그런데, 터미널에서 작업하고 있는 유저는 chogahui06입니다. 이 유저는, 소유자도 아니고, 소유 그룹에 속한 유저도 아닙니다. 그렇기 때문에, strcpy.c를 읽을 수는 있는데요. 수정을 하지는 못해요. Write 권한이 없기 때문입니다.

 

 

 chogahui06에 대해서는 strcpy.c의 Write 권한이 떨어지지 않았습니다. 그렇기 때문에 읽기 전용으로만 열려요.

 

 

 그러면, strcpy.c의 권한을 666으로 바꿔봅시다. 무엇을 의미하나요?

 

 

 모든 유저에게, Read, Write 권한을 주겠다는 의미입니다. chogahui06 유저로 변경하고, strcpy.c를 열어봅시다.

 

 

 그러면 아까와는 다르게, Write가 가능하다는 것을 알 수 있습니다.

 


 이제 strcpy.c를 다시 chmod 664로 수정해 봅시다.

 

 

 이것은 무엇을 의미하나요?

 

 

 소유자와 소유 그룹에 속해있는 유저는 Read, Write를 할 수 있지만, 그 외의 유저들은 Read만 할 수 있다는 의미입니다. 만약에, 유저 chogahui06이, strcpy.c를 수정 가능하게 하려면, 소유권을 바꾸던지, 아니면 chogahui06을 그룹 chogahui05에 넣는 방법이 있습니다.

 

 

 sudo id chogahui06을 입력해 보면, 여러 정보들이 나오는데요. groups라는 것을 주목할 필요가 있어요. 이는 해당 유저가 어느 그룹에 속해있는지를 나타내기 때문입니다. 보니까 아직 06은, 05 그룹에 속해있지는 않아요.

 

 

 usermod -G chogahui05 chogahui06을 치면, chogahui06이라는 유저를, chogahui05 그룹에 추가시키겠다는 의미입니다. 그러면, 아래와 같이 그림이 그려질 거에요.

 

 

 그러면 06은 06 그룹에도 속해 있지만, 05 그룹에도 속해 있어요. strcpy.c를 소유하고 있는 그룹은 05입니다. chmod 664의 의미는, 파일의 주인이나, 파일을 소유하고 있는 group에 속해있는 유저는 Read, Write를 할 수 있고, 그렇지 않다면 Read만 할 수 있다는 의미인데요.

 

 소유 그룹이 05였고, 06은 05에 속해 있습니다.

 

 

 따라서, 06도 strcpy.c을 수정할 수 있습니다.