분명 머리는 이해하고 있는 개념인데 다른 사람에게 설명을 할 때에는 입에서 맴돌고 설명하지 못하는 경우가 종종 생기곤 했다. 정리가 되지 않은 개념이라고 생각되어 확실하게 정리하고자 적게 되었다.
리눅스에서 파일 권한을 확인하고자 한다면 ll 또는 ls -l 명령어를 치면 된다.
위 명령어를 치게 된다면 아래와 같은 화면이 출력되게 되는데 하나씩 알아보도록 하자.
맨 앞쪽의 10개의 문자들은 권한 구성을 나타내는 것이다. 10개 문자는 4개의 그룹으로 나뉜다.
1번째 문자는 파일 또는 폴더/디렉토리 및 링크를 표시하는 문자이다.
d : 폴더/디렉토리라는 뜻
l : 링크라는 뜻
파일 주인의 읽기, 쓰기, 실행 권한을 표시하는 것이다.
위 사진을 예시로 들자면 첫번째 경로 권한의 주인은 root이고 'rwx'가 전부 있으므로 모든 권한을 사용할 수 있다는 뜻이다.
파일 주인이 속한 그룹의 읽기, 쓰기, 실행 군한 표시
그 외 유저들 읽기, 쓰기, 실행 권한 표시
그룹을 확인하고 싶다면 /etc/group 파일에서 확인 가능하다.
tail /etc/group
결과값은 GID(group id)오름차순으로 설정되어있다. 그룹은 기본적으로 사용자를 생성할때 자동으로 생성된다.
한명의 유저의 그룹정보를 확인하고 싶다면 id 명령어를 사용하면 된다.
id test_user1
위의 명령어를 사용한다면 test_user1의 UID(user id), GID(group id), 그리고 속해있는 그룹에 대한 정보가 출력된것을 볼 수 있다.
그룹 생성 명령어는 groupadd 다.
원한다면 -g 옵션으로 GID 그룹ID를 직접 지정도 가능하다.
groupadd -g 555 test_group
그룹 id를 지정해서 생성 후 다음 그룹 생성 시부터는 기존 오름차순으로 생성되던 id가 아닌 가장 큰 숫자를 기준으로 하나씩 증가되며 생성된다.
그룹에 유저를 추가하는 명령어는 usermod 명령어이다. 그리고 -G 옵션으로 추가할 그룹명과 유저명을 입력하면 된다.
usermod -G test_group test_user1
참고로 한 유저는 여러 그룹에 포함이 가능하다.(max 3개?) 하지만 그러기 위해서는 /etc/group 파일로 가서 명령어가 아닌 직접 수정이 필요하다.
vim edit를 이용해 편집하면 간단하다. 기존의 형식에 맞춰 작성하고 저장하면 된다.
그룹 삭제는 groupdel이라는 명령어를 사용한다.
groupdel test_group
만약 삭제하고자 하는 그룹에 속한 유저중에서 그 그룹이 기본 그룹으로 설정되어있는 유저가 있다면, 그 그룹은 삭제되지 않는다는 점 숙지하길 바란다.
만약 그 유저의 기본 그룹을 변경하고 싶다면 usermod 명령어로 변경 후 삭제 작업을 진행하면 된다.
chomd [변경하고자 하는 권한 값][파일 또는 폴더/디렉토리]
권한 변경은 chmod(change mode) 명령어를 사용한다.
chmod는 4개의 그룹중 첫번째 그룹을 제외한 나머지를 지정해주어야한다. 나머지 3개의 그룹을 숫자를 이용해 번경을 해주어야 하는데, 그 숫자는 r, w, x를 전부 더한 값이다.
r = 4
w = 2
x = 1
예시로 그 그룹에 모든 권한을 부여하고 싶다면 r, w, x를 전부 더한 값인 7을 쓰면된다.
소유권 변경은 root 유저만 가능하므로 root로 login 한 후 진행하길 바란다.
chown [소유권자]:[그룹 식별자][소유권을 변경하고 싶은 파일명 또는 디렉토리명]
위의 사진을 예시로 설명하겠다.
만약 .bash_history 파일을 root유저의 소유로 변경하고 그룹 aaa로 변경하고 싶다면 아래의 명령어로 입력하면 된다.
chown root:aaa .bash_history
아 참고로 디렉토리의 소유권 변경은 위의 명령어로 진행할 시 현재 디렉토리만 소유권이 변경되고, 하위의 디렉토리들은 변경이되지 않는다.
만약 하위 디렉토리까지 같이 변경하고 싶다면 아래의 형식의 명령어를 사용하면 된다.
chown root:aaa /etc/test
find [경로] -name [파일명]
최상단에서 찾고 싶다면 경로를 /로 지정하여 검색하길 바란다.
파일의 타입을 구별해서 검색하고 싶다면 위의 명령어에 마지막으로 -type f 옵션을 추가하면 파일만 찾아지고, -type d 옵션을 추가하면 디렉토리만 찾아진다.
실행 파일만 찾고 싶다면, 아래의 명령어를 사용하면 된다.
which [파일명]