1. 로그 아웃 한 후 다시 로그인하지 않고 새 그룹으로 쉘 가져 오기
하나의 그룹 만 추가하는 경우 다음을 사용했습니다.
exec sg <new group name> newgrp `id -gn`
이것은 Legooolas의 2 계층 newgrp 트릭에 대한 변형이지만 한 줄에 있으며 기본 그룹을 수동으로 입력 할 필요가 없습니다.
sg
newgrp이지만 새 그룹 ID로 실행할 명령을 수락합니다. exec
두 번 "로그 아웃"할 필요가 없습니다 새로운 쉘, 기존의 쉘을 대체 수단.
su를 사용하는 것과 달리 암호를 입력 할 필요가 없습니다. 또한 그룹을 추가하지 않고 환경을 새로 고치지 않으므로 현재 작업 디렉토리 등을 유지합니다.
2. 세션의 모든 화면 창에서 명령 실행
at
화면의 명령은 (이것은 화면의 명령이 아닌 쉘 명령입니다주의) 지정 어떤 창에서 명령을 실행합니다.
다음 명령을 사용하여 기존의 모든 화면 세션으로 명령을 보낼 수 있습니다.
screen -S <session_name> -X at \# stuff "exec sg <new_group_name> newgrp \`id -gn\`^M"
id
Screen 세션에서 실행 하려면 백틱을 이스케이프 처리해야하며 , 명령이 끝날 때 화면을 '입력'하려면 ^ M을 사용하십시오.
또한 화면의 stuff
명령은 단순히 사용자를 대신하여 명령 텍스트를 입력합니다. 따라서 화면 창 중 하나에 명령 프롬프트에서 반으로 작성된 명령이 있거나 쉘 (예 : emacs, top) 이외의 응용 프로그램을 실행중인 경우 이상한 일이 발생할 수 있습니다. 이것이 문제라면 몇 가지 아이디어가 있습니다.
- 반으로 작성된 명령을 제거하려면 명령 시작 부분에 "^ C"를 추가하면됩니다.
- emacs 창 등에서 명령을 실행하지 않으려면`at '에게 창 제목 등을 필터링하도록 요청할 수 있습니다 (위의 예에서는 모든 창과 일치하는 "#"을 사용하지만 창 제목, 사용자별로 필터링 할 수 있음) 등).
특정 창 (창 번호로 식별)에서 명령을 실행하려면 다음을 사용하십시오.
screen -S <session_name> -p 0 -X stuff "exec sg <new_group_name> newgrp \`id -gn\`^M"