리눅스에서 루트의 권한은 한 시점에서 "기능"으로 나뉘어져 있으므로 해당 문서를 살펴보면 루트의 특수 권한에 대한 전체 목록을 얻을 수 있습니다 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 값을 변경하십시오.