명령 그룹 수정

명령 그룹 수정

명령을 실행하고 내가 구성원으로 속한 특정 그룹 이름을 사용하여 실행하기를 원하지만 해당 그룹은 내 기본 그룹이 아닙니다. 따라서 생성된 모든 파일은 이 그룹에 속하게 됩니다. 그런 명령이 있나요?

그리고 나중에 수정하세요 chgrp.

그러다가 발견한 newgrp(각 로그인 세션의 기본 기본 GID 변경), 그러나 이는 서브쉘을 생성합니다. 따라서 oneliner가 newgroup <groupname> && cmd작동하지 않습니다. 그리고 나중에 쉘을 닫아야 합니다.

두 접근 방식 모두 오류가 발생하기 쉬운 것 같습니다.

답변1

이 명령은 sg이러한 목적으로 사용될 수 있습니다.

인용하다man sg

sg [-] [group [-c ] command]

sg명령은 명령처럼 작동 newgrp하지만 명령을 받아들입니다. 이 명령은 쉘을 사용하여 실행됩니다 /bin/sh. 를 실행할 가능성이 있는 대부분의 쉘에서는 sg여러 단어 명령을 따옴표로 묶어야 합니다. newgrp와 사이의 또 다른 차이점은 sg일부 쉘은 newgrp자신이 만든 쉘의 새 인스턴스로 자신을 대체하는 특별한 작업을 수행한다는 것입니다 newgrp. 의 경우에는 이런 일이 발생하지 않으므로 명령을 sg종료하면 sg이전 그룹 ID로 돌아갑니다.


bash스크립트에서 여러 명령의 GID를 변경하려면 스크립트를 두 부분으로 분할하고 매개변수를 사용하여 두 번째 스크립트를 호출하거나 끝없는 재귀를 피하기 위해 sg스크립트가 일부 매개변수를 사용하여 자체 호출하도록 합니다 .sg

Python에서 setgit시스템 호출을 사용하는 다른 방법이 있을 수 있습니다.

관련 정보