배경:
나는 최근에 관한 기사를 읽었습니다.freedesktop.org-bug모든 명령을 실행할 수 있습니다 systemctl
. >. 그래서 나는 다음을 실행했습니다. uid
INT_MAX
root@host$> useradd -u 4000000000 largeuiduser
root@host$> su largeuiduser
largeuiduser@host$> systemctl ["whatever"]
[bug exists, and "whatever" gets executed]
largeuiduser@host$> exit
root@host$> userdel largeuiduser
나중에 찾은 더 깨끗한 방법을 찾고 있습니다.
root@host$> setpriv --reuid 4000000000 systemctl ["whatever"]
[bug exists, and "whatever" stuff gets executed]
이 버그를 악용하는 데 (임시) 사용자 이름이 필요하지 않음을 나타냅니다. 이것은 또한 내가 확실하지 않다는 것을 보여줍니다.사용자 이름은 실제로 얼마나 중요합니까?.
질문 그래서 내 질문은 다음과 같습니다. 커널(linux/posix) 관점에서 사용자 이름은 얼마나 필요합니까? 꼭 필요하고 사용할 수 있나요?
내 의심은 사용자 이름이 사용자 공간에서만 사용되는 "편의성"일 뿐이라는 것입니다.
좋은 대답은 사용자 이름이 "필수"가 되는 설정과 "소모 가능"이 되는 설정에 대한 정보를 제공하여 이를 명확히 하는 것입니다.
답변1
Linux 및 BSD 세계에서 커널은 거의 독점적으로 숫자 사용자 및 그룹 ID로 작동합니다. 다음을 지원하는 표준화된 C 라이브러리가 있습니다.사용자 데이터베이스, ID에서 이름을 찾을 수 있고 그 반대의 경우도 마찬가지입니다. 이는 응용 소프트웨어가 사람이 제공한 이름에서 시스템 호출에 필요한 ID를 가져온 다음 다시 가져오는 방법입니다. 프로세스 자격 증명과 액세스 제어 목록 항목 모두 ID에서 작동합니다.
한 가지 예외는 setlogin()
BSD 세계의 (표준화되지 않은) API 함수로 숫자 사용자 ID가 아닌 문자열, 사용자 이름에서 작동합니다. 그러나 커널은 이 문자열을 어떤 방식으로도 해석하지 않습니다.
하나할 수 있다전적으로 숫자 ID로 실행되는 애플리케이션을 작성하고 이를 인간에게 제공합니다. 그러나 인간이 다음과 같은 계정으로 더 잘 작업한다는 단순한 이유 때문에 대부분의 소프트웨어는 그렇게 작성되지 않습니다.명명 된.
커널에는 존재하지 않는 계정이라는 개념도 없습니다. 커널에 관한 한 모든 ID(일부 예약된 값 제외)가 유효합니다. (수퍼유저로서) UID 24394로 실행되는 프로세스를 시작하고 해당 UID가 소유한 파일 시스템 객체를 생성할 수 있습니다(물론 권한이 있는 경우). 그러면 커널이 불평하지 않습니다.
PolicyKit 오류는 실제로 UID와 관련이 없습니다. 이상종료(Abending)라는 프로그램 에 관한 것입니다 pkttyagent
.
오류: pkttyagent.c:156:main: 어설션 실패: (polkit_unix_process_get_uid (POLKIT_UNIX_PROCESS (주제)) >= 0)...그리고 인증 메커니즘열 수 없음대신에닫기 실패이 경우 복귀 사용자는 데스크톱 버스를 통해 인증되었습니다.
추가 읽기
- "사용자 데이터베이스". 기본 정의. 단일 UNIX 사양. IEEE 1003.1. 2018. 그룹을 엽니다.
getpwnam()
. 시스템 인터페이스. 단일 UNIX 사양. IEEE 1003.1. 2018. 그룹을 엽니다.getpwuid()
. 시스템 인터페이스. 단일 UNIX 사양. IEEE 1003.1. 2018. 그룹을 엽니다.- 조나단 데보인 폴라드(2018).
setlogin
. 스낵 가이드. 소프트웨어. - 조나단 데보인 폴라드(2018).
setuidgid
. 스낵 가이드. 소프트웨어. - 여러 UNIX 사용자가 UID를 공유하면 어떤 부작용이 있습니까?
- https://news.ycombinator.com/item?id=18605607
- https://superuser.com/a/706578/38062