일반적으로 디렉터리(Debian 및 Ubuntu와 같은 배포판)에 할당된 기능을 다른 디렉터리에 /home
제공하는 것이 가능합니까? 예를 들어, 이 작업을 수행하고 로 변경할 수 있으면 /xyz
사람이 소유한 모든 새로운 사용자 디렉터리가 아래에 설치됩니다 (예: Sally의 데스크톱 경로가 대신 /xyz
사용되며 존재할 필요가 없습니다 )./xyz/Sally/Desktop
/home/Sally/Desktop
/home
경로를 저장하고 로드하는 휴대용 프로그램을 개발 중입니다. 홈 디렉토리가 없는 다른 시스템에서 사용되는 경우 /home
(따라서 해당 기능이 있는 다른 경로는 없지만 /home
) 경로가 로드될 때 올바른 홈 디렉토리 위치를 갖도록 경로를 조정하고 싶습니다. 그것은 새로운 컴퓨터에서 작동합니다.
답변1
홈 디렉토리를 배치할 필요가 없으며 /home
프로그램이 그러한 가정(예: 모든 홈 디렉토리가 공통 상위 디렉토리를 공유하거나 상위 디렉토리의 이름이 지정됨)을 하드와이어한다면 프로그램은 잘못된 것입니다 /home
.
/home
보편적인 협약도 아닙니다.
/home
이 아이디어는 유닉스가 발명되고 얼마 후에 나왔습니다. 이전 Unices에서는 다른 디렉터리가 사용되었습니다. 이는 오늘날에도 FreeBSD(및 그 파생 버전)와 같은 운영 체제에서 볼 수 있으며, 여기서 /home
심볼릭 링크와 사용자 디렉터리는 실제로 /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
기본base_dir
기본 디렉토리는 OpenBSD 및 많은 Linux 시스템의 변수입니다 . 시스템 관리자는 이 설정을 마음대로 변경할 수 있습니다./etc/usermgmt.conf
HOME
/etc/default/useradd
FreeBSD, TrueOS/PC-BSD 등에서 -b
이 명령에는 비슷한 옵션이 있으며 pw useradd
기본값 home
은 의 변수를 통해 수정할 수 있습니다 /etc/pw.conf
.
이것을 처리하다
귀하의 프로그램은 홈 디렉토리나 상위 디렉토리의 위치에 대해 어떠한 기대도 가져서는 안 됩니다.
- 현재 로그인한 사용자의 홈 디렉터리를 알고 싶다면
HOME
환경 변수를 사용하세요. , 등의 프로그램에 의해 설정login
되거나 로그인 계정을 전환할userenv
때 설정됩니다 . 프로그램을 실행하려면 로그인 세션 환경 변수가 있어야 하므로 환경 변수가systemd
없으면 중단하는 것이 유효한 디자인 선택입니다.HOME
그렇지 않으면 프로세스의 유효/실제(적절한) UID를 가져오고 비밀번호 데이터베이스를 쿼리하는 데 의존할 수 있습니다. 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