어떤 PATH의 파일이 실행되는지 알아보려면?
글쓴이: lacovnk / 작성시간: 금, 2005/04/29 - 10:23오전
execvp를 이용해 프로그램을 실행시킵니다.
근데 어떤 PATH의 프로그램을 실행시키는지에 따라 다른 동작을 해줘야 합니다 - 체크를 해줘야;
예를 들면
PATH=/bin:/usr/bin
이고, 두 곳에 모두 abc라는 프로그램이 있을때,
그냥 abc 실행시키면 앞의 /bin의 abc가 실행되잖아요? (앗, 거꾸로였던가? )
이걸 확인하려면, PATH 변수를 파싱해서, 그 디렉토리에 저 실행파일이 실행권한으로 있는지 일일이 확인하는 수 밖에 없는건가요? ㅠㅠ
Forums:
where 로 확인 하면 되지 않을까요?
where 로 확인 하면 되지 않을까요?
프로그램 내에서 확인을 해야해서..
프로그램 내에서 확인을 해야합니다;
즉,
절대경로 기준으로, 특정 경로의 파일이 실행될 경우 권한을 달리 주는 등의 동작을 해야됩니다.
그래서 실행파일 경로 확인 -> 만약 조건에 맞을 경우 setuid 한 후 -> execvp 해야 합니다.
으음.. 실행파일 경로 확인을 직접 구현해야하는건가요? 굉장히 번거로울 것 같은데 ㅠㅠ
"단지 파일이 존재하는지 확인" 해보려면, open 해보는 수 밖에 없나요?
그냥 일일이 뒤지기로 했는데.. 난감하군요;
getenv("PATH")로 얻은 문자열을 :로 나누어 각각의 path에서 실행가능한 파일이 있는지 확인해야 하는데...
"주어진 파일(절대경로로 시작하는)에 대해 특정 사용자가 실행권한을 갖고 있느냐"를 쉽게 파악할 수 있는 방법이 있을까요?
지금 생각으로는 owner, group에 속하는지 확인하고, 각각의 x 퍼미션이 있는지 확인 해야 할 것 같은데.. stat에 getpwuid등등에 복잡해지네요; 으으..
근데 group에 속하는지를 어떻게 아나요? 예를 들면, 한 사용자는 여러 그룹에 속할텐데, getpwuid에서 얻는 struct는
로, gid_t는 하나만 얻게 되는걸요;;
으으.. 도움 부탁드려요~
getcwd 함수는 어떤가요??
getcwd 함수는 어떤가요??
개발자들의 궁극적 비전은 ?
그 내용이 아닌 것 같습니다;
getcwd는
제가 원하는 것은
$ ls
라고 실행시키면, /bin/ls가 실행되지요? 그 /bin/ls를 알고 싶은 것이거든요. path가 여러개 있을 때, 어떤 path의 것이 실행되는지를 알아봐야하고.. 이런..which ls이거 이용하시면 될 듯 한데..
which ls
이거 이용하시면 될 듯 한데..
http://home.postech.ac.kr/~sodomau
which orif it is needed to be im
which
or
if it is needed to be implemented in C,
can you use the attrib?
(man -s 5 attributes)
그 프로그램의 행동인데..
그 프로그램의 행동인데,
c 프로그램 (쉘 프로그램) 내에서 실행해야 합니다;;;
그냥 path에서 돌아다니면 되야겠군요!
덧. path에서 가능한 것을 찾는 것이 아니라, 찾는 군요;
/home/bla/bin/ls 라는 파일이 있고, 실행권한이 없으면 - 예를 들면 600이면.. 그냥 에러가 뜨는군요 ㅎㅎ
권한 체크할 것 없이 편해지는군요 으흐흐
근데 파일 존재 여부는.. 열어봐야하나요? stat같은 옆구리함수-_-로 대신 부르는 게 나으려나.. (errno 확인해서; ) 어떤 방법이 있나요?
댓글 달기