linux를 하다보면 권한을 변경해야 할때가 있다.
아무래도 서버에서 빌리면서 하는 거다 보니까, su로 관리자권한으로 들어가서 바꿔져야하는데
(yue) jaegun@knu-741ge:~/paper/YuE/inference$ ls -l /home/jaegun/paper/YuE/YuE/inference/infer.py
-rw-r--r-- 1 root root 24320 2월 21 18:15 /home/jaegun/paper/YuE/YuE/inference/infer.py
-rw-r--r-- 1 root root 24320 2월 21 18:15 /home/jaegun/paper/YuE/YuE/inference/infer.py
이 줄을 쪼개서 보겠습니다:
출력에서 -가 보입니다. 이건 파일의 타입을 나타냅니다.
-: 일반 파일(regular file), 즉 텍스트 파일, 바이너리 파일, 스크립트 등.
d: 디렉토리(directory)를 나타냅니다. 예를 들어, drwxr-xr-x처럼 시작하면 디렉토리라는 뜻입니다.
다른 타입도 있음:
l: 심볼릭 링크(symbolic link)
p: 파이프(pipe)
c: 문자 특수 파일(character special file)
b: 블록 특수 파일(block special file)
infer.py는 일반 파일이라 -로 시작합니다. 질문하신 d는 디렉토리를 나타낼 때만 나옵니다. 예를 들어, /home/jaegun/paper/YuE/ 디렉토리를 확인하면:
ls -ld /home/jaegun/paper/YuE/
출력은 drwxr-xr-x처럼 시작할 수 있습니다. 여기서 d는 디렉토리임을 나타냅니다.
권한은 총 9자리로 나뉘며, 사용자(Owner), 그룹(Group), 기타(Other)로 나눠집니다. 각 3자리씩 읽으면 됩니다:
1~3자리 (rw-): 파일 소유자(Owner, 여기서는 root)의 권한.r: 읽기(Read) 권한 (파일 읽기 가능).
w: 쓰기(Write) 권한 (파일 수정/삭제 가능).
-: 실행(Execute) 권한 없음 (파일 실행 불가능).
여기서는 rw-이므로 root 사용자는 이 파일을 읽고 수정할 수 있지만, 실행할 수는 없습니다.
r: 읽기(Read) 권한 있음.
--: 쓰기와 실행 권한 없음.
즉, root 그룹에 속한 사용자는 이 파일을 읽기만 할 수 있습니다.
r: 읽기(Read) 권한 있음.
--: 쓰기와 실행 권한 없음.
즉, jaegun 같은 일반 사용자는 읽기만 가능합니다.
1: 파일의 하드 링크 수(일반적으로 무시해도 됨).
root root: 소유자(Owner)와 그룹(Group). 여기서는 root 사용자가 소유하고, root 그룹에 속해 있습니다.
24320: 파일 크기(바이트 단위).
2월 21 18:15: 마지막 수정 날짜와 시간.
/home/jaegun/paper/YuE/YuE/inference/infer.py: 파일 경로.
sudo chown -R jaegun:jaegun /home/jaegun
chown -R root:vilab /home/vilab
이 명령어는 잘못된 설정
root:vilab으로 설정하면 소유자는 root, 그룹은 vilab이 됨.
즉, /home/vilab 안의 파일을 수정하거나 실행할 수 있는 권한은 root에게 있음.
vilab 사용자는 읽기 권한만 가질 가능성이 큼 (쓰기 제한 가능성 있음).
이렇게 하면 vilab 사용자가 파일을 수정하거나 실행하려고 할 때 PermissionError가 발생할 수도 있습니다.
💥 의도한 대로 vilab이 모든 파일을 자유롭게 다루려면 아래 방법이 더 적절함.
vilab이 /home/vilab의 모든 파일을 자유롭게 다루려면 소유자를 vilab으로 변경해야 해.
sudo chown -R vilab:vilab /home/vilab
이렇게 하면:
/home/vilab 및 하위 모든 파일과 폴더의 소유자가 vilab이 됨.
vilab 사용자는 읽기, 쓰기, 실행 권한을 가짐.