일반적으로 (Debian 및 Ubuntu와 같은 배포판에서) 할당되는 디렉터리의 기능을 /home
대신 (전체적으로) 다른 디렉터리에 제공할 수 있습니까? 예를 들어, 이 작업을 수행할 수 있고 이를 다음으로 변경한 /xyz
경우 모든 새로운 사람 소유 사용자 디렉토리가 아래에 설치됩니다 /xyz
(예: Sally의 데스크탑 경로가 /xyz/Sally/Desktop
대신에 존재 /home/Sally/Desktop
하거나 /home
존재할 필요가 없습니다).
저는 경로를 저장하고 로드하는 휴대용 프로그램을 개발 중입니다. 홈 디렉토리가 없는 다른 컴퓨터에서 사용되는 경우 /home
(결과적으로 해당 기능이 있는 다른 경로가 없고 /home
) 적절한 홈 디렉토리 위치를 갖도록 경로를 조정하고 싶습니다. 대신 경로가 로드되면 새 컴퓨터에 적용됩니다.
답변1
홈 디렉토리를 배치할 필요가 없으며 /home
모든 홈 디렉토리가 공통 상위를 공유하거나 해당 상위가 명명된다는 가정을 하드와이어에 연결하면 프로그램에 오류가 발생합니다 /home
.
/home
심지어 보편적인 협약도 아니다.
/home
유닉스가 발명된 후 박람회에서 고안된 아이디어였습니다. 초기 Unices에서는 다른 디렉토리가 사용되었습니다. 이는 /home
기호 링크가 있고 사용자 디렉토리가 실제로 아래에 있는 FreeBSD(및 그 파생물)와 같은 운영 체제에서 오늘날에도 여전히 볼 수 있습니다 /usr/home
.
Solaris도 마찬가지로 자동 NFS 마운트 등으로 가득 차 있을 수 /export/home
있도록 "실제" 홈 디렉토리를 배치합니다 ./home
/home
많은 공통 홈 디렉토리의 상위가 아닙니다.
에 거주하지 않는 홈 디렉토리가 많이 있습니다 /home
.
- 가장 확실한 것은
/root
슈퍼유저의 홈 디렉토리가 이전 위치에서 이동되어/
루트의 개인 파일과 "점" 파일이 루트 디렉토리를 복잡하게 만들지 않고 슈퍼유저가 로그인할 수 있도록 루트 볼륨에 유지된다는 것입니다. 다른 디스크 볼륨을 마운트하는 데 실패합니다. - 다양한 데몬 소프트웨어는 해당 데몬이 실행하는 전용 계정에 대한 홈 디렉토리를 다른 위치에 가지고 있습니다.
- 큐메일의 다양한 데몬 계정은
/var/qmail
예를 들어 또는 를 사용합니다/var/qmail/alias
. 후자는 심지어 일반적으로 다음과 같이 언급됩니다~alias
.디자인된~alias/.qmail
다른 (실제) 사용자의 홈 디렉토리와 같은 파일이 있는 홈 디렉토리입니다 . - 다양한 HTTP(S) 및 FTP(들) 서버 소프트웨어에는 (공식 또는 비공식) 규칙이 있습니다. 예를 들어, 전용 시스템 계정이 있는 가상 호스트의 홈 디렉터리는
/var/www
또는 일 수 있습니다/var/www/$VHOST
. /var/unbound
기타 소프트웨어는 ,/var/db/mysql
및 와 같은 개인이 아닌 사용자 계정의 홈 디렉토리를 사용하여 다양한 운영 체제에서 찾을 수 있습니다/var/db/tor
./sbin
다양한 기존의 비개인 사용자 계정에는 ,/var/adm
,/var/spool/lpd
,/var/spool/mail
,/var/spool/news
,/var/spool/uucp
등과 같은 홈 디렉터리가 있습니다 .
- 큐메일의 다양한 데몬 계정은
- OpenBSD에서 시스템 운영자 계정은 홈 디렉토리를 가지며
/operator
다양한 비개인 사용자 계정은/var/empty
홈 디렉토리를 갖습니다.
홈 디렉토리는 에 남아 있을 필요가 없습니다 /home
.
Linux 운영 체제에서는 명령 에 -d
( --home
) 및 -m
( --move-home
) 옵션을 사용하여 계정 생성 후 홈 디렉터리를 이동할 수 있습니다 .usermod
OpenBSD에도 usermod
동일한 옵션이 있습니다. ( pw usermod
FreeBSD, TrueOS/PC-BSD 등의 명령 에서는 동일한 작업을 수행하지 마십시오 . -m -d
해당 조합의 의미는 미묘하게 다릅니다.)
에서는 홈 디렉토리를 만들 필요가 없습니다 /home
.
계정을 만들 때 사용되는 기존 상위 디렉터리도 변경할 수 있지만 반드시 그럴 필요는 없습니다 /home
.
Linux 운영 체제 및 OpenBSD에서 useradd
명령의 -b
( ) 옵션은 ( ) --base-dir
로 명시적으로 이름이 지정되지 않은 경우 홈 디렉토리가 생성되는 상위 디렉토리를 지정합니다 . 그만큼-d
--home
기본기본 디렉토리는 OpenBSD base_dir
의 변수 /etc/usermgmt.conf
이고 많은 Linux HOME
의 변수입니다 . /etc/default/useradd
시스템 관리자는 이를 임의로 변경할 수 있습니다.
FreeBSD, TrueOS/PC-BSD 등에서. 명령 -b
과 유사한 옵션이 있으며 의 변수를 pw useradd
통해 수정할 수 있는 기본값이 있습니다 .home
/etc/pw.conf
이에 대처
귀하의 프로그램은 홈 디렉토리나 상위 디렉토리의 위치에 대해 어떤 기대도 하지 말아야 합니다.
- 현재 로그인한 사용자의 홈 디렉터리를 알고 싶다면 환경
HOME
변수를 사용하세요. 등의 프로그램에 의해 설정되거나 ,login
로그인 된 계정으로 전환될 때 설정됩니다. 환경 변수 가 없으면 프로그램을 실행하려면 로그인 세션 환경 변수가 있어야 하기 때문에 그냥 중단하는 것이 유효한 디자인 선택입니다. 그렇지 않으면 프로세스의 유효/실제(적절한) UID를 얻고 비밀번호 데이터베이스를 쿼리하는 것으로 대체할 수 있습니다.userenv
systemd
HOME
- 특정 사용자의 홈 디렉토리를 알고 싶다면
getpwnam()
/getpwnam_r()
또는getpwuid()
/getpwiud_r()
라이브러리 기능을 사용하여 비밀번호 데이터베이스를 쿼리하고 필드를 꺼내십시오pw_dir
. (참고하세요이 필드는 NULL이거나 길이가 0인 문자열을 가리킬 수 있습니다..) - 실제 위치와 무관한 방식으로 사용자의 홈 디렉토리를 상징적으로 표시하려면 쉘과 같은 물결표 확장 규칙을 채택할 수 있습니다
~JdeBP
.vim
에서 까지 많은 프로그램에서 이 작업을 수행합니다mailx
.
추가 읽기
- "/export/home"과 "/home"의 차이점
- 조나단 드 보인 폴라드.
userenv
. nosh 도구 세트 매뉴얼 페이지. - 조나단 드 보인 폴라드(2016). "데몬 환경에 대한 잘못된 진술". systemd doco에 대한 정오표. 자주 주어지는 답변.
답변2
사용자 홈 디렉터리 위치를 다른 위치로 변경하려면 이 답변을 참조하세요.
https://stackoverflow.com/questions/20797819/command-to-change-the-default-home-directory-of-a-user