다양한 포트 활동을 관찰하기 위해 실행 중인 여러 터미널 창을 여는 스크립트가 있습니다 iftop
.
열려 있는 모든 터미널에는 sudo 비밀번호를 입력해야 합니다. 총 5개의 터미널이 있다는 점을 고려하면 약간 고통스럽습니다.
그래서 내 질문은 sudo 비밀번호를 한 번 입력하고 모든 창에 비밀번호를 입력하는 대신 해당 권한으로 모든 창을 실행하려면 어떻게 해야 합니까?
#!/bin/bash
TITLE="${USER}@${HOSTNAME}"' iftop (h=help, L=lin/log scales, t=line display mode, T=line totals, p=port display)'
gnome-terminal --title "$TITLE" -e 'sh -c "sudo iftop -P -f \"port 22\""' --hide-menubar --zoom=0.85
TITLE="${USER}@${HOSTNAME}"' iftop (h=help, L=lin/log scales, t=line display mode, T=line totals, p=port display)'
gnome-terminal --title "$TITLE" -e 'sh -c "sudo iftop -P -f \"port 33 or port 44\""' --hide-menubar --zoom=0.85
TITLE="${USER}@${HOSTNAME}"' iftop (h=help, L=lin/log scales, t=line display mode, T=line totals, p=port display)'
gnome-terminal --title "$TITLE" -e 'sh -c "sudo iftop -P -f \"(port 55) or (port 66)\""' --hide-menubar --zoom=0.85
전체 스크립트를 실행해 보았 sudo
더니 열려 있는 모든 터미널도 sudo 터미널이 되었습니다. 나에게 필요한 것은 일반 터미널을 실행하는 것입니다 sudo iftop
.
답변1
위치 또는 설정은 또는 timestamp_type
? 매뉴얼 페이지에 따르면 기본값은 다음과 같습니다./etc/sudoers
/etc/sudoers.d/*
tty
ppid
tty
sudo
타임스탬프 유형-
sudoers
자격 증명 캐싱을 위해 사용자별 타임스탬프 파일을 사용합니다. 이timestamp_type
옵션을 사용하여 사용되는 타임스탬프 레코드 유형을 지정할 수 있습니다. 가능한 값은 다음과 같습니다.
global
터미널 또는 상위 프로세스 ID에 관계없이 사용자의 모든 로그인 세션에 단일 타임스탬프 레코드가 사용됩니다. 추가 레코드는 파이프라인에서 여러 번 사용될 때 비밀번호 프롬프트를 직렬화하는 데 사용되지만sudo
이는 인증에 영향을 미치지 않습니다.
ppid
단일 타임스탬프 레코드는 동일한 상위 프로세스 ID(일반적으로 셸)를 가진 모든 프로세스에 사용됩니다. 동일한 셸(또는 다른 공통 상위 프로세스)에서 실행되는 명령에는 몇 분 동안 비밀번호가 필요하지 않습니다timestamp_timeout
(기본값은 15분). 다른 상위 프로세스 ID(예: 쉘 스크립트)를 사용하여 sudo를 통해 실행되는 명령은 별도로 인증됩니다.
tty
각 엔드포인트는 타임스탬프 레코드를 사용합니다. 이는 사용자의 로그인 세션이 독립적으로 인증된다는 의미입니다. 터미널이 없으면 동작은 ppid와 동일합니다. 동일한 터미널에서 실행되는 명령에는 몇 분 동안 비밀번호가 필요하지 않습니다timestamp_timeout
(기본값은 15분).기본값은 입니다
tty
.이 설정은 버전 1.8.21 이상에서만 지원됩니다.
그 경우예tty
또는 로 설정하면 ppid
매번 비밀번호를 묻는 이유를 설명합니다. 실행 중인 각 명령은 별도의 tty sudo
로 실행됩니다 .gnome-terminal
그리고상위 PID가 다릅니다.
global
원하는 것을 수행하는 유일한 설정처럼 보입니다 .
이것이 도움이 되지 않는다면, 귀하의 timestamp_timeout
설정은 무엇입니까? 로 설정되어 있나요 0
? 기본값은 15분이어야 합니다.
다른 timestamp*
설정( timestampdir
, timestampowner
)도 확인하세요. 만약 timestampdir
(내 데비안 sid 시스템의 기본값은/실행/sudo/ts)이 존재하지 않거나 rwX가 아닙니다 timestampowner
(기본값)뿌리).
sudo
설명적인 오류 메시지는 syslog를 통해 기록됩니다.그리고이러한 설정으로 인해 오류가 발생할 경우 관리자(root)에게 이메일을 보내주세요.
/etc/sudoers
또 다른 옵션은 사용자가 iftop
비밀번호를 입력하지 않고도 실행할 수 있도록 편집하는 것입니다 . 예를 들어
yourusernamehere ALL= NOPASSWD: /usr/sbin/iftop
바라보다비밀번호를 묻지 않고 루트로 특정 프로그램을 어떻게 실행할 수 있나요?이에 대한 자세한 내용은 다음과 같습니다.