어떻게 않습니다 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