Problem med SFTP, chroot och behörigheter

Trädvy Permalänk
Medlem
Registrerad
Jun 2003

Problem med SFTP, chroot och behörigheter

Hej!

Jag har ett Linux-system där jag har en grupp användare ("authors") som producerar en del text. Denna grupp användare vill göra delar av det de skriver tillgängligt för ett annat konto ("guest") genom en viss mapp (/mnt/storage/public). "Guest" ska ansluta via SFTP för att ladda ner denna textmängd, utan att kunna se andra delar av systemet, och utan att kunna logga in via SSH.

Jag får det nästan att funka, men problemet är att "authors" inte kan skriva till /mnt/storage/public på grund av de behörigheter som krävs för chroot (vilket jag antar krävs för att "guest" inte ska kunna se resten av filsystemet via SFTP).

Hur kan jag lösa detta på ett smart sätt? Hoppas ni förstår hur jag menar.

Trädvy Permalänk
Medlem
Registrerad
Apr 2013

Troligen via posix acl:er satta med setfacl

Trädvy Permalänk
Medlem
Registrerad
Jun 2003
Skrivet av aluser:

Troligen via posix acl:er satta med setfacl

Tack! Men om det går skulle jag gärna slippa ACL:er.

Trädvy Permalänk
Medlem
Registrerad
Apr 2013
Skrivet av Santrium:

Tack! Men om det går skulle jag gärna slippa ACL:er.

För att?

Då chroot i sftp kräver rootägarskap så finns det inget annat sätt att fillrättighetsmässigt komma runt det utan att ändra reglerna i koden i sftp och det känns som ett större jobb eller låta authors skriva som root.
Går ju att lösa samma problem med filsynkdemoner eller monteringstrix.

Trädvy Permalänk
Medlem
Registrerad
Jun 2003
Skrivet av aluser:

För att?

Då chroot i sftp kräver rootägarskap så finns det inget annat sätt att fillrättighetsmässigt komma runt det utan att ändra reglerna i koden i sftp och det känns som ett större jobb eller låta authors skriva som root.
Går ju att lösa samma problem med filsynkdemoner eller monteringstrix.

För att jag gärna inte vill montera om enheten (med acl-flaggan) då den behöver användas i princip konstant. Men det är nog det lättaste sättet. Tack för hjälp!

Trädvy Permalänk
Medlem
Registrerad
Maj 2003

Har du satt guests hem-mapp till /mnt/storage/public ?
Ett alternativ är att sätta en annan hem-mapp och använda mount --bind för att montera in de åtkomster som användarna ska ha. Det fungerar bra, och blockeras inte av chroot.

Trädvy Permalänk
Medlem
Registrerad
Jun 2003
Skrivet av Genesis:

Har du satt guests hem-mapp till /mnt/storage/public ?
Ett alternativ är att sätta en annan hem-mapp och använda mount --bind för att montera in de åtkomster som användarna ska ha. Det fungerar bra, och blockeras inte av chroot.

Jag har satt guests hemmapp till /mnt/storage/public, men det gör ingen skillnad.

Har testat med mount --bind men mappen/mountpointen dyker inte upp i sftp.

Trädvy Permalänk
Medlem
Registrerad
Maj 2003
Skrivet av Santrium:

Jag har satt guests hemmapp till /mnt/storage/public, men det gör ingen skillnad.

Har testat med mount --bind men mappen/mountpointen dyker inte upp i sftp.

Kan du visa hur du satt upp mount --bind, om du vill ha hjälp med det?

Säg att du sätter hem-mappen för guest till /home/guest, och där skapar mappen public, och sedan manuellt kör "sudo mount --bind /mnt/storage/public/ /home/guest/public/" eller att du sätter upp samma sak i fstab, syns mappen public då inte via SFTP? Det har jag aldrig varit med om att den inte visas. Visas mappen public som tom, eller ser du inte public-mappen alls?

Trädvy Permalänk
Medlem
Registrerad
Jun 2003
Skrivet av Genesis:

Kan du visa hur du satt upp mount --bind, om du vill ha hjälp med det?

Säg att du sätter hem-mappen för guest till /home/guest, och där skapar mappen public, och sedan manuellt kör "sudo mount --bind /mnt/storage/public/ /home/guest/public/" eller att du sätter upp samma sak i fstab, syns mappen public då inte via SFTP? Det har jag aldrig varit med om att den inte visas. Visas mappen public som tom, eller ser du inte public-mappen alls?

Tack för hjälpen! Det är exakt så jag har gjort och mappen public syns inte alls. Kanske något knas med permissions? Har dock testat diverse men utan skillnad. Vem bör äga vad, och vad för permissions borde jag köra för att det ska funka så som jag har tänkt i första inlägget?

Trädvy Permalänk
Medlem
Registrerad
Maj 2003
Skrivet av Santrium:

Tack för hjälpen! Det är exakt så jag har gjort och mappen public syns inte alls. Kanske något knas med permissions? Har dock testat diverse men utan skillnad. Vem bör äga vad, och vad för permissions borde jag köra för att det ska funka så som jag har tänkt i första inlägget?

Lyckas mount --bind som det ska utan felmeddelande? Kan du se innehållet rätt i guests hem-mapp som root, och ser att mount --bind lyckats så?

Kan du logga in korrekt över SFTP för chroot-ade användare, och ser övriga lokala filer i hem-mappen (skapa några lokala filer i hem mappen för att testa om den nu är tom)? Ser du inget alls när du loggar in, eller är det bara mappar monterade via mount --bind som du inte ser?
Du har inte exempelvis satt att guest ej ska ha list-rättigheter för sin hem-mapp, och därav inte ser något alls i sin hem-mapp?
Jag brukar köra "chown root:root" och "chmod 755" för hem-mappen för SFTP i chroot-jail.
Sedan behöver du ju även sätta att guest ska ha läs- och list-rättigheter för filerna och mapparna guest ska kunna se.

Hur ser det ut via SSH för guest? (Och tillfälligt sätter bash som shell om du blockerar SSH). Ses mappen då?

För mount --bind så spelar rättigheterna ingen roll för att det ska fungera. Den monterade mappen får precis samma rättigheter som käll-mappen oavsett vad de är. Att du inte ser mappen alls tyder på ett annat problem. Min första gissning är att något annat spökar än just mount --bind, så vida du inte får något felmeddelande som du ignorerar.

Vilken dist kör du? Vilken SSHd kör du, OpenSSH? Hur sätter du chroot-jail?

Får du någon varning i logg-filen från din SSHd när guest loggar in? (Vanligtvis /var(log/auth.log för OpenSSH)

Trädvy Permalänk
Medlem
Registrerad
Jul 2004
Skrivet av Santrium:

För att jag gärna inte vill montera om enheten (med acl-flaggan) då den behöver användas i princip konstant. Men det är nog det lättaste sättet. Tack för hjälp!

Du kan ju alltid köra remount med acl flaggan helt online utan att störa eventuell produktion, du nämner ej distro men många har redan acl stöd by default, sedan prova slänga på de nödvändiga ACL'ler som behövs. Är du nöjd med resultat kan du bara uppdatera fstab så det överlever reboot efteråt. Ångrar du dig kör du bara "setfacl -b" på de kataloger/filer du pillat på och tabort acl-flaggan, no harm done.

(om inte det redan finns acl stöd) mount -o remount,acl /filesytem

setfacl -m g:authors:rx /mnt/storage
setfacl -m g:authors:rwx /mnt/storage/public

Intel Core i7 7700K | Asus ROG Strix Z270H | EVGA GeForce GTX 1080 Ti SC | Corsair Vengeance LPX 32GB 3000MHz | Corsair HX 650W