몇 가지 테스트 코드를 작성 중인데 UID 1을 가진 사용자의 이름이 모든 Unix 시스템에서 "daemon"이라고 가정하면 이식 가능한지 궁금합니다.
편집하다: 그렇지 않다면(대답은 '아니요'인 것 같습니다) UID/사용자 이름 매핑이 있습니까?예Unices 전체에서 일관성이 있습니까(이미 사용하고 있는 0/root 제외)?
답변1
아니요, 모든 곳에서 그런 것은 아닙니다. CentOS 7 시스템의 경우 다음에서 발췌 /etc/passwd
:
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
Linux에서는 를 사용하여 getent passwd daemon
사용자의 UID를 찾고 daemon
, getent passwd 1
UID가 1인 사용자를 찾을 수 있습니다.
답변2
아니요. Linux의 경우 bin
위치 daemon
가 바뀌었습니다. 예전에는 1위와 2위 bin
였습니다 . daemon
Minix에서 #1/bin은 실제로 운영 체제 커널에 의해 반권한을 부여받았습니다(즉, #0/root와 약간 비슷함). Solaris에서는 UID #1이 호출 daemon
되고 GID #1이 호출됩니다 . others
이는 새 사용자의 기본 그룹입니다(설치 중에 "role"을 사용하여 생성된 사용자는 제외 ).root
staff
UID #0은 물론 root
... GID #0은 보통 root
or 입니다 wheel
.
내 생각엔 유일한필수의사용자와 그룹은 #0입니다. 그러나 bin
및 daemon
그룹 도 갖는 것이 좋습니다 ./빈 및 //스빈. 그런 다음 다양한 시스템 파일과 디렉터리를 가질 수 있습니다 sys
. 특히 /dev(Linux에서는 이제 장치는 일반적으로 루트가 소유하며 다양한 장치 그룹에 대해 여러 그룹이 있습니다... 오직 /dev/random, /dev/만) null 다른 운영 체제(예: Solaris)에서는 일반적으로 /dev/zero가 여전히 sys
그룹으로 획득됩니다 sys:sys
. 일반적으로 사용자는 adm
다양한 로그(원래는 /usr/adm에 있음)의 소유자 및 그룹이 되며 때로는 syslog가 실행됩니다. 일반적으로 man
매뉴얼 페이지를 소유하는 사용자/그룹이 하나 있습니다 .
operator
사용자 및/또는 그룹은 콘솔에서 작업할 수 있는 사람들에게 적용됩니다. 단말기는 잠긴 컴퓨터실의 컴퓨터와 직접 연결됩니다. 자주 백업을 실행하므로 일반적으로 root
거의 모든 것에 액세스할 수 있는 사람은 이 그룹의 구성원입니다. staff
/home을 제어하고 로컬 사용자를 추가할 수 있는 "하위 관리자"를 위한 그룹입니다.
결국 우리는 다양한 공통 서비스와 어느 정도 필요한 서비스를 위한 일련의 사용자:그룹 쌍을 얻습니다. 요즘에는 그다지 흔하지 않은 서비스도 있습니다: lp
=프린터, news
=네트워크 뉴스(NNTP) 게시판, mail
=(로컬) 메일 서비스 , uucp
= Unix에서 Unix로 CoPy... 메일 및 뉴스그룹 게시물과 같은 콘텐츠를 함께 패키징하고 이를 원격 Unix 시스템에 "복사"하는 방법입니다. 사람들이 주로 전화 접속을 사용할 때 자주 사용됩니다. tty
= TeleTYPE...에는 다양한 터미널이 있습니다.
아직도 많은 사람들이 games
사용자를 보유하고 있습니다. 사운드 카드나 비디오 카드 같은 것에 직접 액세스해야 하는 게임은 해당 사용자(게임)로 SetUID를 실행하고 -user는 game
해당 하드웨어의 그룹에 추가됩니다. 이런 방식으로 게임은 전체 루트 액세스(예: SetUID=root)로 실행하지 않고도 하드웨어에 필요한 액세스 권한을 얻을 수 있습니다. 또한 시스템의 모든 사용자 간에 "최고 점수" 목록 등을 공유할 수 있습니다.
답변3
아니요, 휴대할 필요는 없습니다. 모든 로컬 설치에서는 UID/이름 쌍을 자유롭게 변경할 수 있습니다(일반적으로 권장되지는 않지만).
uid
이식성을 위해 항상 운영 체제의 기능을 사용하여 숫자/기호 사용자 및 그룹 식별자( 및 ) 를 변환해야 합니다 gid
.
숫자로 된 사용자 ID( ) 2에 관심이 있다면 uid
숫자로 된 그룹 ID를 가져오고 반환하는 명령과 시스템 호출을 사용하세요. 필요한 경우 getent
명령 등을 사용하여 숫자를 기호로 변환합니다.
사용자에 관심이 있다면 daemon
사용자 작업을 수행할 때 기호 문자열을 사용 하거나 daemon
명령이나 함수에 전달하기 전에 uid
지정된 사용자의 사용자를 가져옵니다 daemon
(예: 다시 getent
사용) .uid
ls
및 등의 많은 명령에는 find
기호 그룹 이름 및 숫자 그룹 식별자를 처리하기 위한 옵션이 포함되어 있습니다. getent
예를 들어 다음과 같이 변환하는 데 다른 명령을 사용할 수 있습니다.