이 배포판은 2.6.35-30 Linux 커널을 실행하는 Ubuntu 서버입니다.
나는 완전히 메모리에 있는 디렉토리를 원합니다. 루트 권한 없이도 가능합니까?
답변1
Linux는 모든 사용자가 사용할 수 있는 tmpfs 장치를 제공합니다 /dev/shm
. 기본적으로 특정 디렉터리에 설치되지 않지만 여전히 디렉터리로 사용할 수 있습니다.
그 안에 디렉터리를 만들고 /dev/shm
원하는 위치에 심볼릭 링크를 연결하면 됩니다. 다른 사용자가 액세스할 수 없도록 생성한 디렉터리에 대해 선택한 권한을 부여할 수 있습니다.
이것은 RAM 지원 장치이므로 기본적으로 모든 것이 메모리에 있습니다. 내부에 필요한 디렉토리를 만들 수 있습니다/dev/shm
물론 여기에 배치된 파일은 재부팅 후에는 저장되지 않으며 컴퓨터가 스왑을 시작하면 /dev/shm
도움이 되지 않습니다 .
Solaris와 유사하게 메모리 기반인 "스왑" 유형 파티션도 /dev/shm
있습니다 . /tmp
와 마찬가지로 /dev/shm
모든 사용자가 /tmp
Solaris에서 파일을 만들 수 있습니다.
OpenBSD는 메모리 기반 마운트도 사용할 수 있지만 기본적으로 사용할 수 있는 것은 없습니다. mount_mfs 명령은 수퍼유저가 사용할 수 있습니다.
다른 *BSD에 대해서는 잘 모르겠습니다.
답변2
/dev/shm은 비밀 저장에 적합하지 않습니다.
...활동이 있는 시스템에서교환! 기회는매우 높다귀하의 컴퓨터에 이 기능이 활성화되어 있습니다.
더 좋은 게 있는데,단기간 보장, 표준 대안 — ramfs
다음 ramfs
작업에 RAM 지원 공간을 사용할 계획이라면 다음을 사용할 수 있습니다.일시적인개인 키, 비트코인 또는 이더리움 지갑 등과 같은 민감한 데이터를 저장합니다.
ramfs
tmpfs
ramfs
데이터 를 비밀로 유지해야 하는 경우보다 낫습니다.안 돼요스왑(물리적 스토리지 드라이브에 저장)되는 동안tmpfs
가능한교환됩니다. 이후에 시스템에 대한 루트 또는 물리적 액세스 권한을 얻는 제3자스왑 공간을 확인할 수 있습니다.그리고민감한 데이터 추출.
해결책
ramfs
권한이 없는 사용자가 요청 시 마운트/마운트 해제할 수 있도록 마운트를 준비할 수 있습니다 .
이를 위해서는 당신이 필요합니다뿌리특권,한 번. 루트 권한이 부족한 경우 시스템 관리자에게 설정을 요청하세요.
먼저 를 추가해야 합니다 /etc/fstab
. 이 줄은 fstab
다음과 같습니다.
none /mnt/ramfs ramfs noauto,user,size=1024M,mode=1777 0 0
/mnt/ramfs
ramfs 파일 시스템이 마운트될 마운트 지점입니다. 목차존재해야 한다.noauto
자동 설치를 방지하는 옵션(예: 시스템 시작 시)user
일반 사용자가 설치할 수 있도록 합니다.size
이 "ramdisk"의 크기를 설정합니다( 여기에서M
및 를 사용할 수 있음G
). 하지만 필요에 따라 램디스크가 커지기 때문에 아무런 효과가 없습니다.mode
예매우 중요, 8진수 코드를 사용하면1777
모든 사용자가 파일과 디렉터리를 만들 수 있지만 해당 파일과 디렉터리의 소유자만 액세스할 수 있습니다(원하는 다른 코드를 사용할 수도 있지만 반드시 확인하세요!).
이 작업이 완료되면 모든 사용자가 필요에 따라 설치할 수 있습니다.
사용자가 이를 설치하면 ramfs
새 파일 시스템이 생성되어 에 마운트됩니다 /mnt/ramfs/
. 의 소유가 됩니다 root:user
. 마운트를 해제하거나 시스템을 재부팅하면 이 RAM 기반 파일 시스템은사라지다그리고모두그 데이터. 멋지네요.
또한 파일 시스템은 여러 사용자가 독립적으로 마운트할 수 있지만동시에는 아님즉, 다음 사용자가 설치할 수 있도록 준비하려면 이전 사용자가 파일 시스템을 마운트 해제해야 합니다. 또는 각 사용자에 대해 별도의 파일 시스템을 생성할 수 있습니다.
설치하다:
mount /mnt/ramfs/
제거:
umount /mnt/ramfs/
rsync
PS 루트가 아닌 사용자로 새로 설치/생성된 ramfs의 루트에 파일을 쓰려고 하면 오류가 발생할 수 있습니다 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는 Debian 9에서 테스트되었습니다. 우분투에서도 작동할 것이라고 확신합니다.
PPPS는 훨씬 더 안전하지만 RAM 기반 스토리지입니다.여전히 취약하다일부 정교한 공격.콜드 스타트 공격. 따라서 데이터 보안을 정말로 중요하게 생각한다면 다음 사항을 확인하세요.물리적케이스와 메모리 스틱을 잠가서 PC/노트북을 보호하거나 더 나은 방법은 RAM이 마더보드에 직접 납땜된 컴퓨터를 구입하는 것을 고려하는 것입니다(대부분의 고급 울트라포터블 노트북의 경우와 마찬가지로). 앞으로 한 시간 정도 동안 컴퓨터를 사용할 계획이 없다면 컴퓨터를 완전히 종료하는 것도 고려해 볼 수 있습니다. 절전/최대 절전 모드 기능을 완전히 비활성화하는 것도 가능합니다.
답변3
귀하의 시스템에는 이미 사용 가능한 것이 있을 수 있습니다. 최신 Linux 시스템은 항상 Glibc를 기반으로 합니다.설치된 tmpfs/dev/shm
.
시스템에 시스템이 없거나 너무 작은 경우 루트로 마운트되지 않은 파일 시스템은 거의 의미가 있습니다.퓨즈. Ubuntu에서는 fuse
FUSE를 사용하려면 그룹에 가입해야 합니다 . 뒤집다사용 가능한 FUSE 파일 시스템, 나만 본다램포스, 불행하게도 상류에 버려졌습니다.
답변4
일반적으로 말해서 파일 시스템은 루트로만 마운트할 수 있습니다. 사용자가 파일 시스템에 원하는 것을 무엇이든 배치할 수 있도록 허용하면 본질적으로 사용자에게 루트 권한을 부여하는 것입니다. (쉬운 방법: /etc에 마운트하고, 거기에 자신의 비밀번호와 섀도우를 입력하고, 방금 생성한 새 루트 비밀번호로 su하고, 제거합니다.)
특정 위치에 tmpfs를 갖고 싶다면 /etc/fstab
플래그를 사용하여 에 추가 noauto,user
하면 사용자가 이를 마운트할 수 있습니다(그러나 자동으로 마운트하지 않는 이유는 특별히 명확하지 않습니다).
사용자에게 임의의 tmpfs가 필요한 경우 몇 가지 옵션이 있습니다.
- tmpfs의 하위 디렉터리를 사용합니다. 아마도 가장 좋은 방법 일 것입니다. 아마도 여러 개의 tmpf가 필요하지 않을 것입니다.
- 디렉토리를 생성하고 그 디렉토리에 tmpfs를 마운트하는 스크립트를 생성한 다음 디렉토리가 있는 위치를 인쇄합니다.
sudo
사용자가 실행할 수 있도록 하는 데 사용됩니다 . 꼭 이렇게 해라아니요사용자가 임의의 경로를 선택할 수 있도록 허용합니다.