Add readonly sftponly data access account

This commit is contained in:
Charlotte Van Petegem 2022-06-03 21:02:37 +02:00
parent d19ec8b548
commit e71ae589e0
No known key found for this signature in database
GPG key ID: 019E764B7184435A
5 changed files with 34 additions and 2 deletions

View file

@ -9,6 +9,15 @@
group = "users";
passwordFile = "/run/secrets/password_file";
};
users.users.readonly = {
isNormalUser = true;
home = "/home/readonly";
description = "Readonly data access";
uid = 1001;
group = "sftponly";
passwordFile = "/run/secrets/readonly_password_file";
};
users.groups.sftponly = { gid = 10000; };
environment.systemPackages = [ pkgs.rsync pkgs.mktorrent (pkgs.writeShellScriptBin "create_torrent" ". /run/secrets/create_torrent") ];
security.sudo.enable = false;
services.openssh = {
@ -20,7 +29,12 @@
];
extraConfig = ''
HostKeyAlgorithms +ssh-rsa
Match group sftponly
X11Forwarding no
AllowTcpForwarding no
AllowAgentForwarding no
ForceCommand internal-sftp
'';
authorizedKeysFiles = [ "/run/secrets/authorized_keys" ];
authorizedKeysFiles = [ "/run/secrets/%u_authorized_keys" ];
};
}

View file

@ -40,6 +40,10 @@
hostPath = "/srv/data";
isReadOnly = false;
};
"/home/readonly/data" = {
hostPath = "/srv/data";
isReadOnly = true;
};
"/run/secrets" = {
hostPath = "/run/data-access";
isReadOnly = true;
@ -86,10 +90,22 @@
path = "/run/data-access/password_file";
symlink = false;
};
age.secrets."data-access/readonly_password_file" = {
file = ../../../secrets/data-access/readonly_password_file.age;
path = "/run/data-access/readonly_password_file";
symlink = false;
};
age.secrets."data-access/authorized_keys" = {
file = ../../../secrets/data-access/authorized_keys.age;
owner = "charlotte";
path = "/run/data-access/authorized_keys";
path = "/run/data-access/data_authorized_keys";
symlink = false;
};
age.secrets."data-access/readonly_authorized_keys" = {
file = ../../../secrets/data-access/readonly_authorized_keys.age;
owner = "1001";
group = "65534";
path = "/run/data-access/readonly_authorized_keys";
symlink = false;
};
age.secrets."data-access/create_torrent" = {

View file

@ -82,5 +82,7 @@ in
"secrets/data-access/ssh_host_ed25519_key.pub.age".publicKeys = [ urithiru ] ++ users;
"secrets/data-access/authorized_keys.age".publicKeys = [ urithiru ] ++ users;
"secrets/data-access/password_file.age".publicKeys = [ urithiru ] ++ users;
"secrets/data-access/readonly_authorized_keys.age".publicKeys = [ urithiru ] ++ users;
"secrets/data-access/readonly_password_file.age".publicKeys = [ urithiru ] ++ users;
"secrets/data-access/create_torrent.age".publicKeys = [ urithiru ] ++ users;
}

Binary file not shown.

Binary file not shown.