새 Ubuntu 서버를 만들고 루트 사용자 내에 새 사용자를 만들었습니다. 내가 따랐던 단계:
sudo adduser tom
sudo su - tom
mkdir .ssh
chmod 700 .ssh
touch .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
nano .ssh/authorized_keys // paste public key
괜찮아 보이고 로그인할 수 있어요 [email protected]
. 하지만 Tom으로 로그인하면 권한을 요청하고 sudo를 하면 비밀번호를 요청하는데 Tom의 비밀번호가 없으므로 루트 비밀번호를 사용하므로 다음과 같이 경고합니다.
[sudo] 톰의 비밀번호: 톰은 sudoers 파일에 없습니다. 이 이벤트가 보고됩니다.
visudo
내 루트 사용자로부터 Tom을 다음과 같이 추가하려고 시도했습니다 .
root ALL=(ALL:ALL) ALL
tom ALL=(ALL:ALL) ALL
그러나 그것은 아무것도 바꾸지 않습니다.
Tom이 작업을 실행할 수 있는 권한을 갖고 그가 요청한 유일한 비밀번호가 SSH 비밀번호이도록 이를 설정하는 올바른 방법은 무엇입니까? Tom은 SSH 비밀번호를 사용하여 sudo npm install
다음과 같은 작업을 실행해야 합니다 sudo composer install
. 아니면 루트 비밀번호조차 몰라야 합니다.
내가 여기서 무엇을 놓치고 있는 걸까요?
답변1
편집하다:
두 번째 읽기에 따르면 여전히 sudo를 사용하여 Tom에게 비밀번호를 묻는 메시지를 표시하려면 다음을 수행해야 합니다.
tom ALL = ALL: ALL
Tom이 비밀번호 없이 sudo를 실행할 수 있도록 하려면 다음 답변을 사용하세요.
나는 당신이 그 라인을 다음과 같이 원할 것이라고 믿습니다.
tom ALL = NOPASSWD: ALL
설명하다:
tom
는 이 줄이 적용되는 사용자이고, 첫 번째 ALL
는 이 줄이 적용되는 호스트이고, NOPASSWD
는 비밀번호가 필요하지 않음을 지정하는 레이블이고, 마지막은 ALL
tom이 sudo를 통해 실행할 수 있는 명령을 지정하는 레이블입니다.
명령(또는 명령과 인수의 조합)을 제한하려는 경우 두 번째 명령을 전달할 수 있습니다 ALL
. 예를 들면 다음과 같습니다.
tom ALL = NOPASSWD: /bin/kill, /usr/bin/lprm
보다Sudoers 매뉴얼 페이지그리고대체 매뉴얼 페이지페이지 아래 약 80%에 다른 예가 있습니다.
답변2
sudo
루트 또는 마스터 사용자 는 다음 작업을 수행할 수 있습니다 .
usermod -aG sudo tom
그러면 사용자 tom이 "sudo" 그룹에 추가됩니다. 이것이 필요한 전부입니다. 이렇게 /etc/sudoers
하면 파일을 변경할 필요가 없으므로 명령 비밀번호를 요구하는 보안 계층을 제거하지 않는 한 파일에서 변경 사항을 되돌릴 수 있습니다 sudo
. 이것을 원한다면 다음 라인을 사용해야 합니다(예:@jasonrush그의 답변에서) 귀하의 /etc/sudoers
파일에 :
tom ALL = NOPASSWD: ALL
그러나 일반적인 명령 암호 요청 방법을 사용하려면 파일을 유지하고 사용자를 "sudo" 그룹에 추가해야 sudo
합니다 . 그런 다음 해당 변경을 /etc/sudoers
수행 하고 비밀번호 로그인을 허용하지 않으면 됩니다./etc/ssh/sshd_config
일반적으로 Ubuntu는 일반 사용자가 일부 중요한 그룹에 속하도록 설정됩니다. groups
터미널에 입력하여 기본 사용자가 속한 그룹을 확인할 수 있습니다 .
이것이 나에게 보여주는 내용이지만 출력은 다를 수 있습니다.
$ groups
<users-own-group> adm cdrom sudo dip plugdev lpadmin sambashare
광범위한 권한이 없어야 하는 일반 사용자는 최소한 에 있어야 합니다 cdrom, plugdev, lpadmin
. 그러나 sudo 사용자를 생성하고 있으므로(적어도 원하는 것 같습니다) 그에 따라 사용자를 그룹에 추가해야 합니다. 위 명령을 사용하여 그룹을 연결할 수 있습니다 ,
. 그러나 sambashare
삼바가 설치되어 있지 않으면 해당 그룹이 필요하지 않을 수도 있습니다.
usermod -aG <group1>, <group2> <username>