
나는 권한을 높이는 데 yay
사용하는 프로그램(archlinux의 )을 사용합니다 . sudo
그러나 찾지 못하면 sudo
으로 전환됩니다 su
. 이는 내 사용자가 sudoer가 아니지만 설치했기 때문에 내가 원하는 것입니다. ( 다음으로 실행될 때에도 설치 sudo
해야 하는 다른 프로그램이 있기 때문입니다.) sudo
뿌리, 나는 그것이 어리석은 일이라는 것을 압니다).
이제 문제는 이 프로그램( )이 존재하지 않는다고 yay
생각하면서 어떻게 실행할 수 있느냐는 것입니다.sudo
이는 yay
소스에서 패키지를 빌드하고 설치하는 패키지 관리자(AUR 도우미)이며 보안상의 이유로 루트로 빌드를 수행할 수 없습니다. 이는 충분히 공평합니다.
또한 이미 문제를 열었습니다.여기의 저장소 에 있지만 yay
문제가 해결되는 동안 대체 솔루션을 제공해 주시면 감사하겠습니다.
답변1
자체를 수정하지 않고 제가 생각할 수 있는 유일한 해결 방법은 yay
루트로 시작하고 sudo
시작하기 전에 일시적으로 제거할 래퍼 스크립트를 갖는 것입니다 yay
.
#!/bin/sh
su -c "mv /sbin/sudo /sbin/sudo.old" && yay "$@"
su -c "mv /sbin/sudo.old /sbin/sudo"
그래도 루트 비밀번호를 두 번 묻습니다. 또 다른 옵션은 스크립트를 루트로 실행한 다음 스크립트에서 su
다른 사용자로 전환하는 것입니다.
#!/bin/sh
normalUser="$1"
shift
mv /sbin/sudo /sbin/sudo.old &&
su -c "yay $@" $normalUser
mv /sbin/sudo.old /sbin/sudo
그런 다음 이를 다음과 같이 실행합니다.
su -c "/path/to/yay.wrapper.sh adrin $yayArguments"
실제로 를 사용하지 않기 때문에 이것은 안전할 것입니다 . 하지만 만일을 대비하여 문제가 발생할 경우 쉽게 되돌릴 수 있도록 sudo
복사본을 만들어 보겠습니다 ./sbin/sudo
답변2
이 문제를 우회하는 가장 쉬운 방법은 --sudo=su
옵션을 사용하는 것입니다.
tl;dr- yay --sudo=su -Syu
원하는 효과를 얻으려면 실행하세요.
yay --sudo=su
예상한 대로 수행되지 않은 이유에 대한 설명 은 다음과 같습니다.
yay
문제는 CLI 인수를 처리하는 방식으로 인해 발생합니다 . 문서에서:
If no arguments are provided 'yay -Syu' will be performed.
If no operation is selected -Y will be assumed.
인수가 제공되지 않으면 yay -Syu
(전체 시스템 업데이트) 수행되지만 --sudo=su
인수로 계산되므로 yay는 -Y
작업을 선택합니다(쿼리와 일치하는 패키지를 나열합니다. 이 경우 비어 있으므로 명령이 즉시 종료됩니다).
담당 코드 부분은 다음과 같습니다.https://github.com/Jguer/yay/blob/next/pkg/settings/parser/parser.go#L618