루트 액세스가 필요한 Linux 명령은 무엇입니까?


23

루트 액세스가 필요한 Linux 명령은 무엇입니까? 나는 특권 apt-get을 요구 하는 것이 바람직한 이유를 이해한다 root. 그러나 이러한 명령을 나머지 명령과 구별하는 것은 무엇입니까? 실행 파일의 소유권과 실행 권한의 문제입니까?


2
주로 어떤 파일을 터치하고 어떤 기능을 호출하는지에 대한 기능입니다.
Federico klez Culloca

9
일부 앱은 루트가 소유 한 파일 / 디렉토리에 액세스해야합니다. 그래서 그들은 단지 전화 open를 걸어 "권한이 거부되었습니다". 일부 앱 getuid은 루트에서 호출하지 않으면 확인 하고 작동을 멈 춥니 다. 일부는 루트가 물리적으로 소유하고 있으며 소유자 만 실행할 수 있습니다 (참조 chmod). 앱 헤더에 "루트가 필요합니다"마크가 있는지 묻는다면 대답은 "아니오"입니다. afaik는 없습니다
user996142

1
추신 : 잘 알려진 포트 <1024에 바인딩하는 것과 같은 여러 시스템 호출도 루트 액세스가 필요할 수 있습니다.
user996142

apt-get은 루트가 전혀 필요하지 않습니다. / usr / bin 디렉토리에 있습니다. askubuntu.com/a/440791/169736
Braiam

여기서 "필수"라는 말의 의미를 명확하게 설명 할 수 있습니다. 루트가 아니거나 sudo 권한이 없으면 프로그램이 실행되지 않거나 제대로 작동하려면 루트 여야합니다.
jamesqf

답변:


15

리눅스에서 루트의 권한은 한 시점에서 "기능"으로 나뉘어져 있으므로 해당 문서를 살펴보면 루트의 특수 권한에 대한 전체 목록을 얻을 수 있습니다 man 7 capabilities.

귀하의 질문에 대답하기 위해 명령은 이러한 권한 중 하나가 필요할 때 루트로 실행해야하며 스크립트가 아닌 실행 파일은 파일 메타 데이터에 관련 기능이 설정되어 있지 않습니다 (예 : Python 스크립트에 기능이 필요한 경우 기능 shebang 행에 지정된 Python 인터프리터에 있어야합니다.

루트 액세스가 필요한 일부 명령에는 다음과 같은 것이 필요하지 않습니다. sudo 실행 파일에 SUID 비트가 설정되어 있기 때문에 . 이 비트는 실행 권한을 가진 사람이 실행할 때 실행 파일이 소유자 (일반적으로 루트)로 실행되도록합니다. 예를 들어 sudo사용자를 변경하는 것이 수행해야하는 권한있는 작업이므로 그 자체 가 그 예입니다 .

편집 : 귀하의 질문에서 명령을 실행하기 전에 루트 액세스가 필요한지 여부를 결정할 수 있다는 생각이 들었습니다. 그렇지 않습니다. 프로그램은 때때로 루트 권한을 요구할 수도 있고 그렇지 않을 수도 있습니다. 이것은 런타임 동안 제공되는 데이터로 인해 프로그램이 내린 결정일 수 있습니다. 예를 들어 전화vim 인수없이 한 다음 일련의 키 누르기 및 붙여 넣기를 통해 파일에 무언가를 쓰도록 권한을 부여하지 않거나 루트 권한이 필요한 다른 명령을 실행하도록 지시합니다. 실행 전에 명령에 대해 아무것도 루트 액세스가 필요하다는 것을 나타낼 수 없습니다. 그것은 그것을 필요로하는 무언가를 시도하는 시점에서만 결정될 수있는 것입니다.

어쨌든, 다음은 root 권한에 대한 참조 맨 페이지의 예입니다.

  • 프로세스 UID의 임의 조작 (setuid (2), setreuid (2), setresuid (2), setfsuid (2));
  • 파일 읽기, 쓰기 및 실행 권한 검사를 무시합니다. (DAC는 "임의 액세스 제어"의 약어입니다.)
  • 신호 전송에 대한 권한 검사를 무시합니다 (kill (2) 참조). 여기에는 ioctl (2) KDSIGACCEPT 조작 사용이 포함됩니다.
  • 다양한 네트워크 관련 작업을 수행하십시오.
    • 인터페이스 구성;
    • IP 방화벽 관리, 가장 무도회 및 회계;
    • 라우팅 테이블을 수정;
  • 인터넷 도메인 특권 포트 (1024보다 작은 포트 번호)에 소켓을 바인드하십시오.
  • 커널 모듈을로드 및 언로드합니다 (init_module (2) 및 delete_module (2) 참조).
  • 시스템 시계 설정 (settimeofday (2), stime (2), adjtimex (2)); 실시간 (하드웨어) 시계를 설정합니다.
  • quotactl (2), mount (2), umount (2), swapon (2), swapoff (2), sethostname (2) 및 setdomainname (2)을 포함하여 다양한 시스템 관리 작업을 수행합니다.
  • reboot (2) 및 kexec_load (2)를 사용하십시오.
  • chroot (2)를 사용하십시오.
  • 프로세스 nice 값 (nice (2), setpriority (2))을 높이고 임의 프로세스의 nice 값을 변경하십시오.

32

그것은 주로 도구 나 프로그램이 무엇인지의 문제 않습니다 . 수퍼 유저가 아닌 사용자는 자신이 소유하거나 액세스 할 수있는 파일 만 만질 수 있다는 점을 명심하십시오. 손가락으로 모든 것을 처리 할 수있는 도구는 수행하는 작업을 수행하기 위해 수퍼 유저 액세스가 필요합니다. 수퍼 유저 액세스가 필요할 수있는 간단한 샘플은 다음과 같습니다.

  • 1024 미만의 포트에서 수신 TCP 소켓 열기
  • 시스템 구성 변경 (예 :의 모든 항목 /etc)
  • 새로운 전역 액세스 가능 라이브러리 ( /lib/usr/lib) 또는 이진 ( /bin, /usr/bin) 추가
  • 충분히 허용되는 모드가없는 애처를하고있는 사용자가 소유하지 않은 파일을 대
  • 다른 사용자의 파일 소유권 변경
  • Escelating 프로세스 우선 순위 (예 renice)
  • 대부분의 서비스 시작 또는 중지
  • 커널 구성 (예 : 교환 율 조정)
  • 파일 시스템 할당량 조정
  • "전체"디스크에 쓰기 (대부분의 파일 시스템은 루트 사용자를위한 공간을 예약합니다)
  • 다른 사용자로 작업 수행

4
루트가 아닌 사용자는 "프로세스 우선 순위 변경"기능을 변경하여 기능을 향상시킬 수 있습니다. 그들이 할 수없는 유일한 것은 덜 친절해야합니다.
Braiam

1
이 목록이 완전하지 않다는 것을 알고 있지만 수퍼 유저 만 수행 할 수있는 매우 중요한 작업은 다른 사용자로 가장하거나 단순히 로그인하는 것입니다.
phihag

프로세스 우선 순위에 대한 글 머리 기호를 조정하고 "다른 사용자로 작업 수행"을 추가했습니다. 시간과 의견이 충분하면이 목록이 더욱 포괄적이되기를 바랍니다.
DopeGhoti

0

권한을 나누는 순서가 아니라 권한을 확인하는 것이 사용자의 신원에 따른 것이라고 생각합니다. 파일과 사용자는 특권을 가지며 명령을 나눌 수 없습니다.


3
무례하게 들리는 것은 아니며 영어가 모국어가 아닐 수도 있음을 이해하지만, 심지어 말하려는 것과 같이이 답변을 전혀 이해하지 못합니다. "동의"는 "계약"또는 "적합성"을 의미합니다. "사용자 ID"와 함께 어떻게 사용될 수 있는지 알 수 없습니다. "권한 나누기 순서"는 무엇을 의미합니까? "분할"은 "분리하다"를 의미한다. 누구의 "주문"? 권한을 사용하도록 행동 할 수없는 파일이 아닌 경우 파일은 어떻게 "권한이 부여됩니까?" 이 질문의 맥락에서 "명령을 나누어서는 안된다"는 것을 이해할 수있을 것 같지만 그게 전부입니다. 그대로 해석 할 수없는 것 같습니다.
JoL

@JoL "순서"는 잘못 번역 된 것으로 생각되며 "명령"이어야하는데,이 문장의 다른 구문 분석이 가능합니다. 이 답변의 내용을 최대한 많이 사용하는 것이 다소 어색한 표현입니다. "사용자의 ID를 사용하여 명령에 따라 권한이 분할되지 않은 권한을 확인하는 방법에 따라 다릅니다. 파일과 사용자에 대한 권한은 파일과 사용자에 관한 것입니다. "명령을 나누지 마십시오." 이것은 여전히 ​​명확하지는 않지만 당신보다 나에게 조금 더 의미가 있습니다. 내 의견이 누군가가이 답변을 완전히 이해하고 형태로 편집하는 데 도움이되기를 바랍니다.
hvd
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.