Unix 루트 계정과 Windows 로컬 관리자 간의 개념적 차이점을 이해하려고 합니다. 저는 개발자이고 IT의 노력에도 불구하고 항상 로컬 관리자 권한이 부여되므로 로컬 PC에 원하는 것은 무엇이든 설치할 수 있습니다.
그러나 어떤 이유에서인지(그리고 그것이 타당한 이유가 있어야 한다고 생각합니다) 저는 단지 우리 리눅스 시스템의 사용자일 뿐입니다. 이로 인해 리포지토리에서 소프트웨어 설치 등 sudo 작업을 수행할 수 없습니다.
Windows에서는 루트 권한이 로컬 관리자 권한보다 더 많은 권한을 부여하기 때문이라고 생각합니다. 그렇습니까?
유닉스에서 apt-get이나 yum을 사용하여 특정 사용자에게 소프트웨어 설치 권한을 부여하는 것이 가능합니까?
답변1
Windows에서는 루트 권한이 로컬 관리자 권한보다 더 많은 권한을 부여하기 때문이라고 생각합니다. 그렇습니까?
이것은 사실이 아니다(적어도 원칙적으로는 아니다).하지만한 가지 주요 차이점은사용자(계정)를 식별하는 방법.Windows의 로컬 관리자 계정에는 다른 계정과 다른 자체 SID(보안 식별자)가 있으므로 (동일하거나 다른 컴퓨터에 있는) 다른 로컬 관리자 계정과 쉽게 구별할 수 있습니다.모든 루트 계정은 동일한 숫자 사용자 ID를 공유합니다.그러므로 쉽게 구별할 수 없습니다.
설정에 따라 이는 사용자에게 "로컬" 루트 액세스를 제공하는 데 큰 장애물이 될 수 있습니다. 즉시 떠오르는 잠재적으로 심각한 문제 중 하나는 NFS 사용자 ID입니다.
유닉스에서 apt-get이나 yum을 사용하여 특정 사용자에게 소프트웨어 설치 권한을 부여하는 것이 가능합니까?
이를 허용하도록 설정할 수 있지만 sudo
이는 큰 보안 허점이 될 수 있습니다. sudo 구성을 수정하거나 setuid 루트 셸을 설치하는 등의 패키지를 만들고 설치한다면 어떻게 될까요? 갑자기 소위 "제한된" 루트 액세스 권한이 사용자에게 시스템에 대한 전체 루트 액세스 권한을 부여했습니다. 특정 구성 파일을 편집하기 위한 sudo 편집기와 같은 "평범한" 기능도 유사한 심각한 보안 취약점이 발생하지 않도록 주의 깊게 구현해야 합니다.
답변2
저는 Windows 관리에 대해 잘 모르지만, Windows admin과 Linux Root 사이에는 큰 차이가 없다고 생각합니다. (내가 뭔가 잘못 이해한 것일 수도 있지만 귀하의 질문에 따르면 귀하 회사의 모든 사람이 Windows 일반 컴퓨터를 가지고 있거나뚱뚱한 고객, 그리고 리눅스씬 클라이언트또는 단순 사용자 SSH 액세스)
씬 클라이언트에는 루트 액세스 권한을 부여하지 않는 것이 일반적인 관행이며(이는 회사 전체 루트 액세스이므로) 사용자가 자신의 PC를 관리하도록 허용하는 것은 문제가 되지 않습니다.
루트 액세스가 필요하므로 패키지 관리자(apt-get/yum/...)를 사용하여 소프트웨어를 설치할 수 없습니다. 관리자에게 필수 패키지 설치를 요청하거나 설치할 수 있습니다.현지의홈 디렉토리(쓰기 권한이 있으므로 필요하지 않음 root
).
홈 디렉토리에 설치하려면 다음 프로세스를 사용할 수 있습니다(실제 예를 사용하겠습니다).화면 캡쳐, 필요에 맞게 조정하세요):
- 사용자 공간에 설치한 소프트웨어에 대한 특정 폴더를 만듭니다.
mkdir ~/local
- 이 폴더로 이동하십시오.
cd ~/local
- 설치하려는 소프트웨어를 다운로드하십시오.
wget http://git.silverirc.com/cgit.cgi/screenfetch.git/snapshot/screenfetch-3.2.0.tar.gz
- 아카이브 추출:
tar -zxf screenfetch-3.2.0.tar.gz
- 소프트웨어를 빌드/실행하는 데 필요할 수 있는 특정 작업을 확인하려면 Readme 파일을 읽으십시오.
- 바이너리를 실행 가능하게 만듭니다.
chmod +x screenfetch-3.2.0/screenfetch-dev
- 소프트웨어를 시작하기 위한 바로가기 또는 별칭을 추가합니다(배포판, 셸 및 데스크톱 환경에 따라 크게 다를 수 있음). 제 예에서는 화면 가져오기를 시작할 때 업무용 데스크톱(Bash가 포함된 Linux Mint 13)에서 소프트웨어를 시작하고 싶습니다. 명령줄 파일에 다음 줄을 추가했습니다
~/.bashrc
.alias screenfetch='~/local/screenfetch-3.2.0/screenfetch-dev'