답변:
sudo
보편적으로 간주 될 수 없습니다 :
Red Hat Enterprise Linux는 : sudo
레드햇 엔터프라이즈 리눅스 및 그 유도체에 기본적으로 설치되어 1 있지만 그것은 단지 RHEL 7 및 최신에서 즉시 사용 가능한 설치합니다.
Red Hat Enterprise Linux 7 은 설치 화면에 루트가 아닌 첫 번째 사용자를 만드는 새로운 옵션 인 "이 사용자 관리자로 만들기"확인란을 추가했습니다. 그 목적은 설치 안내서의 해당 페이지에 문서화되어 있지 않지만 그 효과 중 하나는 해당 사용자가를 통해 명령을 실행할 수 있도록하는 것 sudo
입니다. 해당 사용자를 wheel
그룹 에 추가 하면 스톡 sudo
패키지 구성 에서 모든 명령을 실행할 수 있습니다.
Red Hat Enterprise Linux 3-6도 sudo
기본적으로 2로 설치 되었지만 RHEL 7까지는 root
명령을 실행할 수 있도록 구성되어 출하되었습니다 . 이 문제를 해결하는 가장 쉬운 방법은 하나 이상의 사용자를 wheel
그룹 에 추가 한 다음 visudo
루트 권한으로 실행 하고 %wheel ALL=(ALL)...
행의 주석을 해제하는 것 입니다.
데비안 : 데비안 9부터는 최소한의 설치 만 포함됩니다 sudo
.
데비안 7과 8에서는 설치하는 동안 " 표준 시스템 유틸리티 "패키지 세트를 선택해야했습니다 sudo
. sudo
이 방법으로 설치 하면 OS 설치 프로그램이 설치 프로세스에서 이전에 작성한 비 관리 사용자를 sudo
그룹에 자동으로 추가하여 모든 명령을 실행할 권한이 있습니다.
데비안 6 및 그 이전 버전에서는 설치 후 sudo
via를 통해 apt-get
설치하고 루트가 아닌 사용자에게 사용 권한을 부여하도록 직접 구성해야했습니다.
FreeBSD : FreeBSDsudo
에는 기본적으로 설치되어 있지 않습니다. 포트에서 빌드해야합니다.
NetBSD : FreeBSD와 동일합니다.
OpenBSD : sudo
OpenBSD에서 기본적으로 설치되었지만 2015 년 10 월에 릴리스 된 5.8 로 전환 되었습니다 . 배송은 기본적으로 비활성화되어 있습니다.doas
doas
얻으려면 sudo
최신 버전에서는 패키지 저장소에서 설치해야합니다. OpenBSD의 sudo
패키지는 RHEL 3에서 6과 같이 구성되어 있으므로이를 통해서만 root
명령을 실행할 수 있으므로 의 목적을 상실합니다 sudo
. root
설치 중에 비 사용자 를 추가 한 경우 wheel
그룹 에 추가 되었으므로 sudo
OpenBSD 시스템 에서 가장 유용한 방법 은을 %wheel ALL=(ALL)...
통해 행의 주석을 해제하는 것 visudo
입니다.
Solaris : sudo
Solaris 11에 기본적으로 설치되지만 Solaris 10 및 이전 버전은 비슷하지만 유사하지 않습니다 pfexec
.
sudo
구형 시스템을 사용할 수 있지만 기본값은 중요합니다. 솔라리스 10 및 그 이전 버전은 수년간 우리와 함께하게 될 것입니다. 따라서 환경에 솔라리스가 있고 그 시스템을 개인적으로 통제 sudo
할 수 없기 때문에 믿을 수 없습니다.
시스템이 오래 될수록 가질 가능성이 더 큽니다 sudo
. sudo
아주 오래 되었지만 2000 년대 중반까지 인기를 얻지 못했습니다. 그보다 오래된 시스템은 가질 가능성이 매우 낮습니다 sudo
. 유닉스 박스는 오래 사는 경향이 있기 때문에 오늘날에도 그러한 시스템을 계속 사용할 수는 없습니다.
sudo
개인적으로 관리하는 시스템 또는 기본적으로 루트 권한을 얻는 유일한 방법 인 Ubuntu, macOS 또는 openSuSE와 같은 시스템 에만 의존합니다 .
su
은보다 일반적인 "슈퍼 유저 권한 얻기"명령에 더 가깝지만 sudo
우분투 및 macOS와 같은 시스템을 사용하면 루트 계정이 기본적으로 잠기므로 sudo
대신 대신 사용할 수 있습니다 su
. 따라서 su
보편적 이라고 부를 수도 없습니다 .
각주 :
CentOS, Oracle Linux, Scientific Linux ...
예, 최소한의 설치로도 가능합니다.
sudo
거의 모든 Linux 시스템에서 사용할 수있는 유틸리티입니다.
그러나 기본적으로 모든 배포판에 번들로 제공되지는 않습니다. 모든 주요 배포판은 기본적으로 번들로 제공됩니다.
아치 리눅스, 젠투, LFS 등과 같은 리눅스 배포판은 사용자가 완전한 커스터마이제이션을 할 수 있도록 기본적으로 sudo를 가지고 있지 않습니다.
Arch Linux에서는 기본 시스템이 sudo
설치되어 있지 않습니다 . 사용자는 sudo
sudoers 파일을 수동으로 다운로드 하고 편집 해야 합니다.
젠투와 LFS를위한 Ditto. 나는 sudo가없는 다른 주요 배포판을 모른다.
그리고 아니요, sudo
슈퍼 유저 권한을 부여하는 것보다 더 보편적 인 것이 존재하지 않습니다 . 즉, 실제로 루트로 로그인하는 것과는 별개입니다.
가장 널리 사용되는 배포판 인 Ubuntu는 sudo
루트가되기 위해 권장되는 방법으로 사용합니다 (명령 줄을 사용하는 경우 GUI를 고수하는 사용자는 후드에서 발생하는 상황을 이해하거나 신경 쓰지 않고 암호 프롬프트를받습니다). 다른 배포판은 sudo 설정을 장려하거나 장려하지 않을 수 있으며 심지어 배송하지 않을 수도 있습니다. 반면에, su
모든 곳에서 사용할 sudo
수 있으며 사용자가 루트 암호를 가지고 있지 않기 때문에 사용 가능한 시스템을 제외한 대부분의 시스템에서 사용할 수 있습니다.
su
와 사이에 sudo
거의 모든 사용자를 포함합니다. 필요로하는 이국적인 몇 calife
이나 op
또는 pfexec
이미 무엇을 알고있다. 그렇지 않은 경우에도 사용하지 않는 시스템 은 익숙하지 않은 장소에 파일을 가지고 있지 su
않을 sudo
가능성이 높으며 사용자의 지시 사항이 어쨌든 작동하지 않을 것이라고 생각하지 않은 충분한 항목이 있습니다.
귀하의 질문에 가장 정확하게 대답하는 것은 sudo
보편적 인 것으로 간주되지 않습니다. 진실로 '유니버설'의 전체 개념은 종종 붉은 청어입니다. 이것은 크로스 디스트로 호환성과 관련하여 특히 그렇습니다. 수많은 다른 소프트웨어 버전을 사용하게되면 보편성은 반 비현실적이됩니다. 본질적으로 스크립팅은 실용적입니다. 만약 그것이 pedantic이라면, 휴대용 스크립트를 작성하는 것은 실질적으로 불가능합니다.
일반적으로 나는 의도 한 실행 환경, 반 현대 리눅스 배포판을 측정하고 일반적인 GNU Utils가있는 POSIX 셸을 기대합니다. Linux 외부에서 실행할 수있는 스크립트의 경우 완전한 POSIX 표준 만 기대합니다. 분명히 많은 스크립트가 Linux 또는 배포판에 고유하므로 종종 이식성 범위가 좁아집니다.
특정 스크립팅 사례를 해결하기 위해
#!/bin/sh
## Exit Point
die() {
[ -n "$2" ] && echo "$2"
exit $1
}
## Require SuperUser Execution, Otherwise Re-Execute
[ `id -u` -ne 0 ] && {
command -v lsb_release > /dev/null && {
DISTRO="`lsb_release -is`"
[ "$DISTRO" = "Ubuntu" ] && SUPERUSER='sudo'
}
SUPERUSER="${SUPERUSER:-su}"
case "$SUPERUSER" in
su)
su -c "$0"
;;
sudo)
sudo "$0"
;;
esac
}
## Require SuperUser Execution
[ `id -u` -ne 0 ] && die 78
echo 'Script Executed by UID'
id -u
## Clean Up
die 0
붙여 넣은 스크립트는 POSIX 셸 칭찬이며, 항상 Dash와 호환됩니다.
sudo
를 설치할 필요가 없습니다 . 수퍼 유저 실행이 필요하며 sudo
가능한 경우 사용할 수 있습니다. sudo
사용할 수없는 경우 스크립트를 루트 사용자로 실행해야합니다 die
. 그렇지 않으면 .
sudo -l
. 불행히도 암호 입력이 필요할 수 있으므로이 상황에서는 사용할 수 없습니다. 이것에 대해 더 신중하게 생각하면 실제로 전체 개념이 배포 당 테스트를 통해 가장 잘 달성 될 수 있다고 생각합니다. 사용하여 su -c
실행하지 않는 한 su
기본적으로 비활성화 배포판,이 경우 사용을 sudo su -c
. 다른 사람들이 언급했듯이 수퍼 유저 권한을 사용자에게 두는 것이 가장 좋습니다.
sudo
. 기본 su
/ sudo
구성을 가정하면 대부분의 배포판에서 제대로 실행됩니다 . 나는 구식 우분투 pre lsb_release
가 해결 될 필요 가 있다는 것을 알고 있다. 그러나 이것은 실제로 단지 예일 뿐이며 분명히 확장 될 수있다.
sudo
대부분의 배포판에 번들로 제공 될 수 있지만 모든 배포판을 실행할 수있는 것으로 모든 사용자를 구성하는 것은 아닙니다.