user_struct 정보를 가져올 수 있나요??
글쓴이: inner9771 / 작성시간: 월, 2004/11/29 - 12:47오후
커널에서 user_struct 의 정보를 가져올 수 있는 방법 있나요???
모든 사용자를 순차적으로요...
아니면 현재 접속한 사용자의 정보만가져오는거나....
user_struct 다 안가져오고 uid만 가져올 수 있는 방법은 없나요???
커널에서는 해쉬테이블로 접속자들끼리 포인팅을 하는 것 같은데 uid로 해쉬테이블 상에서 현재 자기 위치를 알 수 있는 방법은 없나요???
하나가 안 풀리니까 다 안풀리네요....
최종 목적은 현재 접속자 수를 알아내는 모듈을 짜는건데
접속자 정보에 접근할 시스템콜을 찾지 못해서요...
user_struct 라도 접근할 수 있으면 소유한 프로세스 수 같은거 체크해서 카운트하려고 하는데요...
아직 단 한 건의 user 정보에도 접근하지 못했네요...ㅜ_ㅜ
아 참... 그리고 current->user 하면 현재 유저는 최소한 나와야 하지 않나요??
왜 아무것도 나오지 않는지...ㅜ_ㅜ
제발 이 중에 단 한가지라도...... 풀 수 있는 실마리의 가능성이라도....
알려주세요.......ㅜ_ㅜ 절망 직전입니다.....ㅜ_ㅜ
Forums:
pwd.h에 있는 struct passwd를 사용하시면 되지 않을까요
pwd.h에 있는 struct passwd를 사용하시면 되지 않을까요?
여기에 있는 함수들 사용하면 등록된 사용자 나오고.. ( getpwname() 등등.)
UID도 뽑을수 있어요..
여기서 좀 더 어떻게 뭔가를 추가하시면 나올 듯 하네요..
도움이 되셨나 몰라...
그럼 즐건 월요일 오후!!! :oops:
커피는 블랙이나 설탕만..
current->uid
current->uid 로 현재 프로세스를 실행하는 사용자의 uid 값을 얻을 수 있습니다.
하지만 커널은 모든 사용자의 정보를 유지하는 것이 아니라
모든 프로세스의 정보를 유지하는 것이기 때문에
모든 사용자의 정보를 순차적으로 접근하는 것은 불가능하다고 할 수 있습니다.
간단히 생각하기로
모든 프로세스를 순회하면서 uid 를 세는 것이 좋을 듯 합니다.
물론 루트로 실행되는 커널 쓰레드 등이 있으니 이러한 것은 제외해야 할테고
적절한 범위의 uid 값 만을 카운트 하던지
쉘 프로세스의 수를 세는 방법등이 있지 않을까 합니다.
(꽁수로 utmp 파일을 읽는 방법도 있을 수 있겠군요.. -_-)
참고로 alloc_uid() 함수에서 uid 로 user_struct 에 접근하는 코드 부분입니다.
댓글 달기