루트에서 나 자신으로 sudo를 실행할 때 (라이브) 권한 상실

루트에서 나 자신으로 sudo를 실행할 때 (라이브) 권한 상실

Debian wheezy로 업그레이드한 후(커널을 업그레이드하지 않았습니다. 여전히 3.8.2입니다) 이전처럼 jackd를 더 이상 시작할 수 없습니다. 알겠어요 you are not allowed to use realtime scheduling.

sudo조사 결과 이는 루트에서 martin으로 sudo를 실행한 스크립트의 명령과 관련이 있는 것으로 나타났습니다 . Firewire 하이브리드 콘솔이 열리면 udev 규칙을 사용하여 jackd를 시작하기 때문에 sudo가 필요합니다. 명령줄에서 sudo를 입력하면 문제를 재현할 수 있습니다.

간단히 말해서 내가 관찰한 것은 이것이다.

  • 마틴으로 jackd 시작 -> 일
  • jackd를 루트로 시작 -> 실행
  • 루트로 로그인 su - martin하고 jackd를 시작하세요 -> work
  • 루트로 sudo -u martin /usr/bin/jackd ...-> 작동하지 않습니다
  • 위와 같지만 sudo -E -u martin ...-> 작동하지 않습니다.

내 /etc/security/limits.conf에는 다음 줄이 포함되어 있습니다.

@audio - rtprio 40
@audio - nice -20
@audio - memlock 1554963

sudo -u martin id내가 오디오 그룹에 속해 있음이 표시되지만 루트는 그렇지 않습니다. 루트에서 마틴으로 sudo한 후 마틴에는 실시간 권한이 없습니다.

sudo -u martin sh -c "ulimit -e -r"
scheduling priority             (-e) 0
real-time priority              (-r) 0

오디오 그룹에 루트를 추가해도 아무런 차이가 없습니다. 루트에는 여전히 실시간 권한이 없으며 sudo -u martin 마틴 후에도 여전히 위와 같습니다.

답변1

martinsudo는 루트 사용자의 환경을 보존하므로 사용자가 설정한 경로나 기타 환경 변수가 없을 수도 있습니다 . jack이 옵션을 사용하여 쉘에서 sudo를 통해 실행할 수도 있습니다 -s /path/to/shell.

그러나 루트로서 su비밀번호를 입력하라는 메시지가 표시되지 않고 액세스(대체 사용자)할 수 있습니다(그리고 이를 달성하기 위해 sudo를 구성할 필요가 없습니다. sudo는 특히 루트가 아닌 사용자를 위한 것입니다).

 su - martin -c /usr/bin/jackd ...

-csu에게 실행할 명령을 알려주고, 이 -옵션(완료를 통해서도 사용 가능 -l)은 실행 중인 사용자(이 경우)와 유사한 환경을 설정하려고 시도합니다 martin.

관련 정보