사용자가 로그인하면 권한 상승이 필요한 명령을 실행해야 합니다. 해당 명령에 대한 사용자 sudo 액세스 권한을 부여하고 싶지 않습니다. 모든 사용자가 아닌 해당 사용자에 대해 이 스크립트를 실행하고 싶습니다.
답변1
귀하의 의견에 따르면 사용자 'fred'가 일반 쉘을 사용하지 않고 로그인 시 'foo' 스크립트를 실행하도록 하려는 것 같습니다. Fred가 자신의 "샌드박스"에서 벗어나기 위해 열심히 노력할 것이라고 예상하지 않는다면 이 작업은 쉽게 수행될 수 있습니다.
$ cat ~fred/.bash_login
#!/bin/bash
exec /usr/local/bin/foo
## in ubuntu each user has a group of his "own"
$ sudo chown foo:fred ~fred ~fred/.bash_login /usr/local/bin/foo
## prevent fred from altering the files and directories we care about
$ sudo chmod g-w ~fred ~fred/.bash_login /usr/local/bin/foo
## make script foo run with user foo's privileges
$ sudo chmod u+s /usr/local/bin/foo
따라서 fred는 이제 로그인 쉘이 수행하는 첫 번째 작업이 자신을 foo로 바꾸는 것이므로 쉘 프롬프트도 표시하지 않습니다. foo 스크립트가 종료되면 fred는 로그아웃됩니다. Fred가 이 샌드박스에서 빠져나올 동기가 부족한 이유는 많은 프로그램에서 Fred가 여기에 표시된 가난한 사람의 잠금을 취소할 수 있도록 하위 쉘을 열 수 있도록 허용하기 때문입니다.
수퍼유저가 아닌 foo 대신 "root"와 함께 이 방법을 사용하면 루트를 가로채는 데 사용될 수 있으므로 그렇게 하지 마십시오.
답변2
나는 chmod 6755 filename
(또는 다른 사용자가 읽지 않으려면 6711)을 사용하고 cron에 넣습니다. 이 파일을 소유자로 실행할 수 있는 권한이므로 작동해야 합니다. 그럼 루트로 생성하면 이렇게 사용할 수 있을텐데...