계정 관리 및 데몬 멀티 구동

안녕하세요.
가입해서 처음으로 쓰는 질문이네요 .
써본 운영체제란 윈도우 osx가 다여서 리눅스 전반에 대해 생소한지라 모르는것이 많아 질문을 올리게되었습니다.

adduser로 계정을 만들면 /home/계정이름 디렉토리에 홈디렉토리(?)가 생기잔아요?

제가 하고싶은건 이 계정들의 홈 디렉토리에 각 계정과 root 계정만 접근가능하게 하는것입니다. chown chmod 쓰면 된다고 하는데 설명을 들어도 무슨 소리인지 알수가 없어서요 ㅠㅜ.

chown은 소유권을 준다고 하는데 소유권이 뭔지 모르겠고 chmod는 권한을 정한다고 하는데 chmod할때 user group other가 무슨뜻인지 모르겠습니다.

user - 현재 로그인한 계정
group - 현재 로그인한 계정이 소속된 모든 그룹
other - 다른 계정및 ananymous
이렇게 되는건가요?

특정 디렉토리에 특정 유저와 root만 들어갈수 있게 하려면 어떤식으로 명령어를 사용해야 할까요?
또한 각 계정의 홈 디렉토리의 용량을 제한하고 싶습니다.

============

그리고 transmission-daemon 으로 토렌트를 돌리려고 하는데
이 토렌트를 계정당 하나식 돌리고 싶습니다. 각 계정별로 씨앗파일을 등록하고 자신이 등록한 토렌트만 보이며 각각 계정의 홈 디렉토리에 받아지도록 하고싶어요.

============

마지막으로 sudo 권한 없이 우분투 서버를 어느정도 만질수 있게 해주려면 계정에 어느정도의 권한을 주면 될까요?
저 혼자 쓰는게 아니라 다른 2명이랑 같이 구축하는거라서요. sudo 권한을 줘버리면 다른계정의 홈 디렉토리에 접근할수 있게 되버리니까요.

뭔가 질문이 엄청 많네요 ㅠㅜ.
제가 초보중의 초보라서요. 읽어주셔서 감사합니다.

chmod은 http://mintnlatte.tistory.com/258
chown은 http://purestarman.tistory.com/222
를 참고하시면 될 것 같네요.
관련된 명령으로

[code:46muo1pf]ls -l[/code:46muo1pf]
에 대해서도 함께 공부해 보셔요.

chgrp 에 대해서도 공부해 보시고요.
공동작업하려는 두 분이 아이디는 다른 것을 쓰고 같은 그룹에 속하도록 설정하면 될 것 같아요.

구글을 잘 활용하면 좋은데

http://ko.wikipedia.org/wiki/Chmod

이런 설명은 초보자에겐 좀 어려우려나요?

소유권 부여라는 것은 파일/디렉토리에 대한 소유자로 정하는 것을 말합니다.
즉 소유자는 맘대로 할 수 있죠.
소유자 외에는 소유자가 허락된 범위내에서 파일/디렉토리에 접근할 수 있습니다.
이것을 접근권한이라고 하죠.
chown은 change owner로 소유자를 변경하는 것으로 관리자가 행할 수 있습니다.
chmod는 change mode로 파일/디렉토리에 대한 접근권한을 설정하는 것으로,
소유자나 관리자가 행할 수 있습니다.
그리고 그룹이라는 것은 계정을 묶어서 관리하는 개념으로, 계정당
하나의 기본그룹과 여러개의 다른그룹에 가입될 수 있습니다.

chown 명령옵션 소유할계정명-또는-계정명:그룹명 디렉토리-또는-파일
이런식으로 사용됩니다.

리눅스에서 보통 -R옵션은 recursive 즉 하위디렉토리까지 포함하여 전체에 적용되는 옵션입니다.
예) sudo chown -R www:wheel /opt

파일접근 권한은 읽기/쓰기/실행/특별권한으로 구분됩니다.
특별권한인 set-user-id 등은 차차 알아 가시구요.

읽기/쓰기는 파일/디렉토리에 대해 접근/변경 권한을 의미합니다.
실행은 파일에 대한 실행속성및 디렉토리에 대한 접근권한을 의미합니다.
디렉토리는 읽기/실행 권한이 모두 있어야 접근이 가능합니다.

디렉토리에 쓰기 권한이 없다고 쓰기권한이 부여된 파일을 수정할 수 없는 것은 아닙니다.
디렉토리 자체에 대한 권한만을 의미하죠.
즉 디렉토리명을 바꾼다던가 지운다던가 그런게 안되는 것입니다.

실행속성은 윈도우즈와 구분되는 것으로,
윈도우즈는 도스시절부터 파일명의 확장자로 실행가능한지를 판단합니다.
그러나 리눅스에서는 실행속성이 따로 존재합니다.
파일명에 무관하게 실행속성을 부여하면 그 파일명을 명령으로 간주하고 실행하려 할 것입니다.
하지만 비록 실행형파일 이라고 하더라도, 실행속성이 부여되지 않으면 일반 파일처럼 취급하며
명령으로 처리하지 않습니다.

파일/디렉토리에 대한 접근은 소유자/소유자의그룹/타계정으로 분류합니다.

ls -l 했을때 나오는 화면에 보면
-rwxr-x— 이런식으로 나오는데…
이것은

  • : 디렉토리인지 나타냄(d:디렉토리)
    rwx : 소유자는 읽기/쓰기/실행 권한을 가짐
    r-x: 소유자와 동일그룹 계정은 읽기와 실행권한을 가짐
    —: 소유자의 그룹에 속하지 않은 계정은 접근할 수 없음
    을 뜻합니다.

이 권한들은 각기 3비트(1…7)내에 비트단위로 지정됩니다.
0번 비트는 x(실행) 1번비트는 w(쓰기) 2번비트는 r(읽기) 이며
8진법 형태로 표기하기도 합니다.
755=소유자(rwx) 그룹(rx) 타계정(rx)
644=소유자(rw) 그룹(r) 타계정(r)입니다.

예제)
chmod u+x datadir
chmod 755 datadir
chmod o-x datadir
chmod +x datadir
chmod -R 644 datadir

root만 datadir에 이동할 수 있게 하시려면…
#소유자를 root로 변경
sudo chown root:root datadir
#root 그룹의 다른 계정 및 다른계정에 대해 권한거부
sudo chmod 700
이런식으로 하시면 됩니다.

계정별로 transmission을 돌리고 싶다시면…
crontab을 이용하실 수 있습니다.
crontab은 일정주기로 프로그램을 실행하는 명령입니다.

crontab [ -u 계정 ] 크론탭파일
참고로 메뉴얼에서 [ 옵션 ] 이런식으로 표시되는 것은 생략가능한 옵션이라는 것입니다.
크론탭파일은 지정된 형식에 따라 작성되어야 하는데…
초보분들은 많이 헷갈리시니
sudo apt-get install gnome-schedule
로 설치하신 후 gnome-schedule로 작성하시면 편합니다.

만일 이렇게 주기적으로 실행하는 것이 아니라
지속적으로 유지되게 하고 싶다면…
부팅될때 모든 계정에 대해 실행해주어야 하는데…
이것은 /etc/rc.local을 편집하셔서, 계정당 실행하게 해주셔야 하고,
그 사람의 권한으로 실행하려면… sudo가 필요합니다.
sudo는 사용자를 변경하여 실행하는 것이기 때문이죠.
sudo -u 계정명 transmission-daemon
이런식으로 말입니다.
그러나, 홈디렉토리를 해당계정으로 하여 실행하시려면
sudo -iu 계정명 transmission-daemon
관리자 권한으로 실행하시면 암호를 묻지 않습니다.

예제)
#/etc/rc.local
sudo -iu user1 transmission-daemon
sudo -iu user2 transmission-daemon
#그룹1000에 속한 모든 계정에 대해 실행
cut -d: -f1-3 /etc/passwd|grep 1000$|cut -d:-f1|xargs -l -I{} sudo -iu {} transmission-daemon