답변:
Linux는 모든 사용자가 사용할 수있는 tmpfs 장치를 제공합니다 /dev/shm
. 기본적으로 특정 디렉토리에 마운트되지 않지만 여전히 하나의 디렉토리로 사용할 수 있습니다.
디렉토리를 /dev/shm
만든 다음 원하는 곳으로 심볼릭 링크하십시오. 다른 사용자가 액세스 할 수 없도록 작성된 디렉토리에 원하는 권한을 부여 할 수 있습니다.
이것은 RAM 지원 장치이므로 기본적으로 메모리에있는 것이 있습니다. 내부에 필요한 디렉토리를 만들 수 있습니다/dev/shm
당연히 여기에 배치 된 파일은 재부팅 후에도 유지되지 않으며 컴퓨터가 교환을 시작 /dev/shm
하면 도움이되지 않습니다.
Solaris 병렬 /dev/shm
은 /tmp
"스왑"유형 파티션이며 메모리 기반입니다. 와 마찬가지로 /dev/shm
임의의 사용자가 /tmp
Solaris 에서 파일을 만들 수 있습니다 .
OpenBSD는 메모리 기반 마운트를 사용하는 기능도 있지만 기본적으로 사용 가능한 것은 없습니다. mount_mfs 명령은 수퍼 유저가 사용할 수 있습니다.
다른 * BSD에 대해서는 잘 모르겠습니다.
/dev/tmpfs
시스템에 없는 것 같습니다 (3.0.0 커널을 가진 자체 시스템도 아닙니다). 배포판에서 생성 한 것이 아닌가?
/run
아마도 /run/shm
내 대답을 업데이트하기 전에 추가로 조사 할 필요가있다.
... 활성 스왑이있는 시스템에서 ! 컴퓨터가 활성화했을 가능성이 매우 높습니다 .
더 좋고 안전한 표준 대안이 ramfs
있습니다. ramfs
RAM 지원 공간을 사용 하여 개인 키, 비트 코인 또는 이더 리움 지갑 등과 같은 민감한 데이터 를 임시 저장 하려는 경우 에 사용할 수 있습니다 .
ramfs
데이터 가 스왑 되지 않고 (물리적 스토리지 드라이브에 저장 되지 않음 ) 스왑 될 수 tmpfs
있기 때문에 보안에 관한 것보다 낫 습니다. 써드 파티는 스왑 공간을 검사 할 수 있습니다 및 민감한 데이터를 추출 .ramfs
tmpfs
ramfs
권한이없는 모든 사용자가 필요에 따라 마운트를 마운트 해제 할 수 있도록 마운트 를 준비 할 수 있습니다 .
이렇게하려면 루트 권한이 한 번 필요 합니다 . 루트 권한이없는 경우 시스템 관리자에게이를 설정하도록 요청하십시오.
처음에는에 줄을 추가해야합니다 /etc/fstab
. fstab의 줄은 다음과 같습니다.
none /mnt/ramfs ramfs noauto,user,size=1024M,mode=0770 0 0
/mnt/ramfs
ramfs 파일 시스템이 마운트 될 마운트 지점입니다. 디렉토리가 존재해야합니다.noauto
옵션을 사용하면 시스템이 부팅 될 때 자동으로 마운트되지 않습니다.user
일반 사용자가 마운트 할 수있게합니다.size
이 "램 디스크의"크기를 설정합니다 (당신이 사용 M
하고 G
여기에).mode
이다 매우 중요한 8 진수 코드로, 0770
이 파일 시스템을 마운트에만 루트와 사용자, 그것에 읽기 및 쓰기 할 수없는 다른 사람 (당신이 아니라 당신의 선택의 다른 코드를 사용하지만, 그것에 대해 매우 확신 할 수 있습니다! ).이 작업이 완료되면 모든 사용자가 필요에 따라이를 마운트 할 수 있습니다.
일부 사용자가 이것을 마운트하면 새로운 1024MB ramfs
파일 시스템이 생성되어에 마운트됩니다 /mnt/ramfs/
. 이 소유합니다 root:user
. 마운트를 해제하거나 시스템을 재부팅하면이 RAM 기반 파일 시스템은 모든 데이터 와 함께 사라집니다 . 어느 것이 멋지다.
또한이 파일 시스템은 여러 사용자가 독립적으로 마운트 할 수 있지만 동시에는 아닙니다 . 즉, 다음 사용자가 마운트 할 준비가 되려면 이전 사용자가이 파일 시스템을 마운트 해제해야합니다.
마운트 :
mount /mnt/ramfs/
마운트를 해제하려면
umount /mnt/ramfs/
PS rsync
루트가 아닌 사용자로서 새로 마운트 / 작성된 램프의 루트에 파일 을 저장 하려고 하면 rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1183) [sender=3.1.1]
오류가 발생할 수 있습니다. 사용자가 램 파일 시스템의 루트를 소유하지 않기 때문에 이것은 완전히 훌륭하고 예상됩니다. 해결책은 간단 합니다. /mnt/ramfs/copied/
예를 들어 디렉토리를 만들고 그 안에 디렉토리를 만드 rsync
십시오.
PPS는 데비안 9에서 테스트되었습니다. 우분투에서도 작동합니다.
시스템에 이미 사용 가능한 시스템이있을 수 있습니다. Glibc 기반의 최신 Linux 시스템 에는/dev/shm
항상 tmpfs가 마운트되어 있습니다.
시스템에 시스템이 없거나 너무 작은 경우 루트로 마운트되지 않은 파일 시스템은 FUSE를 의미 합니다. 우분투에서는 fuse
FUSE를 사용하기 위해 그룹에 속해 있어야합니다. 통해 찾고 사용할 수 FUSE 파일 시스템 , 난 단지 참조 Ramfuse 불행하게도 상류 포기한다.
일반적으로, 파일 시스템은 루트로만 마운트 할 수 있습니다. 사용자가 파일 시스템을 임의로 배치하도록 허용하는 경우 근본적으로 루트를 부여하는 것입니다. (쉬운 방법 : / etc 위에 하나를 마운트하고 방금 만든 새로운 루트 암호로 su를 자신의 passwd와 shadow를 넣고 마운트 해제하십시오)
특정 위치에 tmpfs를 원한다면 /etc/fstab
, 플래그를 사용 하여 tmpfs를 추가 할 수 noauto,user
있으며 사용자는 마운트 할 수 있습니다 (그러나 자동 마운트하지 않는 이유는 명확하지 않습니다)
사용자에게 임의의 tmpfs가 필요한 경우 몇 가지 옵션이 있습니다.
sudo
사용자가 실행 할 수 있도록. 당신이 않음을 확인 하지 사용자가 임의의 경로를 선택할 수 있습니다.