암호없이 sudo 명령을 실행하는 방법은 무엇입니까? 않습니다 ubuntu우분투

어떻게 않습니다 ubuntu우분투 서버 12.04에 대한 AWS 이미지에 사용자가 암호없이이 sudo그것에 대한 구성에 없을 때 모든 명령에 대한을 /etc/sudoers?

Amazon에서 Ubuntu 서버 12.04를 사용하고 있습니다. 기본 우분투 사용자와 동일한 동작을하는 새 사용자를 추가하고 싶습니다. 특히이 sudo새로운 사용자에게는 암호가 필요하지 않습니다.

그래서 새로운 사용자를 추가하고 /etc/sudoers(물론 visudo를 사용하여) 편집했습니다 . 해당 파일을 읽음으로써 기본 ubuntu사용자는 그룹 sudo의 구성원이 암호가없는 것처럼 보였습니다 admin. 새 사용자를 추가했습니다. 작동하지 않았습니다. 그런 다음에 NOPASSWD지시문을 추가하려고 했습니다 sudoers. 어느 것도 작동하지 않았습니다.

어쨌든 지금은 궁금합니다. 어떻게 않습니다 ubuntu그들이에 정의되지 않은 경우 사용자가 암호없이 권한을 얻을 /etc/sudoers. 이것을 허용하는 메커니즘은 무엇입니까?



답변

좋아, 나는 답을 찾았으므로 완전성을 위해 여기에 넣을 수도 있습니다. 마지막에 /etc/sudoers나는 단지 의견이라고 생각한 것이 있습니다.

#includedir /etc/sudoers.d

그러나 여기에는 실제로 해당 디렉토리의 내용이 포함됩니다. 그 안에 파일이
/etc/sudoers.d/90-cloudimg-ubuntu있습니다. 예상되는 내용이있는

# ubuntu user is default user in cloud-images.
# It needs passwordless sudo functionality.
ubuntu ALL=(ALL) NOPASSWD:ALL

이것이 기본 우분투 사용자의 sudo 구성이있는 곳입니다.

visudo를 사용하여이 파일을 편집해야합니다. 다음 명령을 사용하면 visudo로 올바른 파일을 편집 할 수 있습니다.

sudo visudo -f /etc/sudoers.d/90-cloudimg-ubuntu

그리고 다음과 같은 줄을 추가하십시오 :

aychedee ALL=(ALL) NOPASSWD:ALL

결국.


답변

여러 서버에서이 동작을 쉽게 복제하기 위해 가장 간단한 방법은 다음과 같습니다.

sudo visudo

이 줄을 바꾸십시오 :

# Members of the admin group may gain root privileges
%admin  ALL=(ALL) ALL

이 줄에 :

# Members of the admin group may gain root privileges
%admin  ALL=(ALL) NOPASSWD:ALL

그리고이 줄 아래 로 이동하십시오 :

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

이제 이것을 가지고 있어야합니다 :

# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#

Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin  ALL=(ALL) NOPASSWD:ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

그런 다음 암호로 sudo 액세스가 필요한 모든 사용자에 대해 :

sudo adduser <user> sudo

암호없이 sudo 액세스가 필요한 모든 사용자에 대해 :

sudo adduser <user> admin

마지막으로 다음을 실행하십시오.

sudo service sudo restart

그리고 그게 다야!

편집 : 기본적으로 존재하지 않는다고 생각되면 관리자 그룹을 추가해야 할 수도 있습니다.

sudo groupadd admin

이 명령을 통해 기본 AWS ubuntu사용자를 admin그룹에 추가 할 수도 있습니다 .

sudo usermod ubuntu -g admin

참고 : @hata에서 언급했듯이 사용 adm중인 Ubuntu 버전에 따라 관리자 그룹 이름 으로 사용해야 할 수 있습니다 .


답변

/etc/sudoers.d/ 디렉토리에 내 파일을 만들려고합니다. 업데이트시 Amazon Cloud에서 생성 한 파일을 덮어 쓸 수 있습니다. /etc/sudoers.d에 파일을 만든 후이 항목을 추가하십시오.

<your user name> ALL=(ALL) NOPASSWD:ALL

시스템을 재부팅하면 작동합니다.


답변

편집기를 사용하지 않고 짧은 답변 (bash에서 테스트하여 원격 호스트에서 실행하는 것이 매우 위험합니다).

현재 사용자의 비밀번호없이 작동하도록 sudo를 구성하십시오.

echo "$USER ALL=(ALL) NOPASSWD:ALL" | sudo tee -a /etc/sudoers

다음을 사용하여 편집 내용을 확인하십시오.

sudo visudo -c

비밀번호없이 sudo를 사용할 수 있는지 확인하십시오.

sudo cat /etc/sudoers | grep "$USER"

… 또는 간단히 시도해보십시오.

sudo <anything>

답변

CICD 파이프 라인에서 사용하기 위해 임시 Docker 이미지에서 루트가 아닌 암호가없는 사용자를 구현 한 방법입니다.

RUN \
    groupadd -g 999 foo && useradd -u 999 -g foo -G sudo -m -s /bin/bash foo && \
    sed -i /etc/sudoers -re 's/^%sudo.*/%sudo ALL=(ALL:ALL) NOPASSWD: ALL/g' && \
    sed -i /etc/sudoers -re 's/^root.*/root ALL=(ALL:ALL) NOPASSWD: ALL/g' && \
    sed -i /etc/sudoers -re 's/^#includedir.*/## **Removed the include directive** ##"/g' && \
    echo "foo ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers && \
    echo "Customized the sudoers file for passwordless access to the foo user!" && \
    echo "foo user:";  su - foo -c id