Uzavření uživatele v domovském adresáři

Uzavření uživatele v domovském adresáři
« kdy: 28. 05. 2020, 10:59:33 »
Ahoj chtěl bych se zeptat na to, jak lze v linuxu zajistit, aby uživatel nemohl opustit jeho kořenový adresář. Už nějakou dobu se po tom pídím na internetu, ale přiznám se, že jsem nenašel nic čemu bych rozuměl. Nevíte tedy někdo o nějakém postupu jak to realizovat?

Zatím jsem se dostal tam, že mám vytvořené uživatele a jsou jim přidělená práva tak, aby každý měl přístup pouze do svého adresáře ve složce /home. V /etc/passwd jsem zrušil uživatelům přístup k shellu a nyní už mi zbývá jen to, aby nemohli opustit home a rochat se v sytému. Sice nemá práva na to aby něco poškodil, ale pro člověka, který tomu nerozumí je to dost matoucí, že něco takového může a pro člověka nepolíbeného linuxem je to neřešitelná situace se vrátit.

Důležité je asi poznamenat i to, že uživatelé mají přes svůj účet pouze vzdálený přístup ssh k souborům databáze. Jediné co tedy uživatel potřebuje je připojit se přeš ssh do své složky, stahnout si databázi a opustit sezení. Má někdo nějaký nápad. Dík.
« Poslední změna: 28. 05. 2020, 12:10:32 od Petr Krčmář »


Ravise

  • ***
  • 113
    • Zobrazit profil
    • E-mail

Re:uzavření uživatele v domovském adresáři
« Odpověď #2 kdy: 28. 05. 2020, 11:56:34 »
Pokud potřebuje jen stahovat soubory, nepotřebuje ani shell a můžete ho omezit opravdu jen na práci se soubory. Vše je popsané v článku Jak nahradit FTP pomocí SFTP a zamknout uživatele.

Re:Uzavření uživatele v domovském adresáři
« Odpověď #3 kdy: 28. 05. 2020, 12:15:53 »
Ano přesně to potřebuje. Právě jsem ale zjistil dost něšťastnou věc, že pokud mu zakážu shell, tak se mi nejde připojit přes WIN SPC. Musel jsem shell opět zapnout resp. nefunkční /usr/sbin/nologin nahradit funkčním /bin/sh.
Na ty odkazy kouknu.

Re:Uzavření uživatele v domovském adresáři
« Odpověď #4 kdy: 28. 05. 2020, 12:43:18 »
Ano přesně to potřebuje. Právě jsem ale zjistil dost něšťastnou věc, že pokud mu zakážu shell, tak se mi nejde připojit přes WIN SPC. Musel jsem shell opět zapnout resp. nefunkční /usr/sbin/nologin nahradit funkčním /bin/sh.
Na ty odkazy kouknu.

Winscp bud pouziva scp (=vyzaduje shell) nebo sftp (=nevyzaduje shell asi)...


ByCzech

  • *****
  • 1 812
    • Zobrazit profil
    • E-mail
Re:Uzavření uživatele v domovském adresáři
« Odpověď #5 kdy: 28. 05. 2020, 16:15:38 »
Je více možností, jak uživatele omezit ve vzdáleném přístupu přes SCP / SFTP protokoly. Nastavením v SSH daemonovi, speciální shelly, které omezují jen přenos souborů ap. (scponly, mysecureshell a další).

noger

Re:Uzavření uživatele v domovském adresáři
« Odpověď #6 kdy: 29. 05. 2020, 07:49:56 »
Tak ako pisal @ByCzech, viac sposobov.

na sftp only mozes pouzit v /etc/ssh/sshd_config:
ForceCommand internal-sftp
a na uzamknutie v domovskom adresari:
ChrootDirectory /path/to/folder

ked pouzijes chroot directory, tak tento folder musi byt vlastneny uzivatelom root, aj skupinou root. Ja mam este na tento ucel aj tieto nastavenia:
PermitTunnel no
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no


Samozrejme mam to spolu s MatchUser, aby tieto nastavenia neboli globalne, ale iba pre niektorych uzivatelov.

Re:Uzavření uživatele v domovském adresáři
« Odpověď #7 kdy: 29. 05. 2020, 09:29:23 »
Pokud je ucelem celeho snazeni moznost stahnou soubor, tak tam proste strcim apache nakonfigurovany na HTTPS + basic auth, s modulem autentikace vuci systemovym uzivatelum, s nastavenim listingu na jejich home directory a at jinam nemuze

A hotovo.

User stahne proste soubor v browseru.

Re:Uzavření uživatele v domovském adresáři
« Odpověď #8 kdy: 09. 06. 2020, 08:55:49 »
Díky za reakce, opět jsem trochu pokročil, ale bezůspěšně...s největší pravděpodobností se stále točím v kruhu.

Nastavení ssh:

Kód: [Vybrat]
Match User test
  ForceCommand internal-sftp
  X11Forwarding no
  AllowTcpForwarding no
  PermitTunnel no
  ChrootDirectory /home/%u

Výpis uživatele a jeho práv:
Kód: [Vybrat]
drwx------ 5 test test 4096 Jun 9 08:05 test/

V této konfiguraci se mi stane to, že se uživatel nemůže přihlásit. Pokud zakomentuju volbu
Kód: [Vybrat]
ChrootDirectory /home/%u tak se přihlásit může. Pokud princip uzavření uživatele správně chápu, tak tuto volbu musím použít jinak to nejde.

Zapomněl jsem ještě na něco?
 

Re:Uzavření uživatele v domovském adresáři
« Odpověď #9 kdy: 09. 06. 2020, 09:56:45 »
To, že se pro SFTP komunikaci má používat interní SFTP nakonfigurované máte?
Kód: [Vybrat]
Subsystem   sftp    internal-sftp

Re:Uzavření uživatele v domovském adresáři
« Odpověď #10 kdy: 09. 06. 2020, 09:57:31 »
Ten domovský adresář musí vlastnit root, v tom článku je to napsané.

Re:Uzavření uživatele v domovském adresáři
« Odpověď #11 kdy: 09. 06. 2020, 11:01:11 »
Ten domovský adresář musí vlastnit root, v tom článku je to napsané.

To je úplně jedno, protože výsledek je stejný. Nyní mám:
Kód: [Vybrat]
drwx------ 5 root root 4096 Jun 9 08:05 test/

Chová se to stále stejně resp. uživatel se nemůže přihlásit. Pokud použiju příkaz sftp, vypíše to hlášku:
Kód: [Vybrat]
packet_write_wait: Connection to 192.168.1.240 port 22: Broken pipe
Connection closed

Je mi to líto, ale tento návod je sice krásný, ale jsem přesvědčen, že nefunguje nebo stále něco přehlížím...

Re:Uzavření uživatele v domovském adresáři
« Odpověď #12 kdy: 09. 06. 2020, 11:03:43 »
To, že se pro SFTP komunikaci má používat interní SFTP nakonfigurované máte?
Kód: [Vybrat]
Subsystem   sftp    internal-sftp

Ano toto mám. Pokusím se ještě získat přesně ten výpis konfigurace a dám ho sem.

Re:Uzavření uživatele v domovském adresáři
« Odpověď #13 kdy: 09. 06. 2020, 11:11:26 »
Zde je konfigurace ssh, kterou používám:

Kód: [Vybrat]
# $OpenBSD: sshd_config,v 1.101 2017/03/14 07:19:07 djm Exp $

# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options override the
# default value.

#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
#HostKey /etc/ssh/ssh_host_ed25519_key

# Ciphers and keying
#RekeyLimit default none

# Logging
#SyslogFacility AUTH
#LogLevel INFO

# Authentication:

#LoginGraceTime 2m
#PermitRootLogin prohibit-password
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

#PubkeyAuthentication yes

# Expect .ssh/authorized_keys2 to be disregarded by default in future.
#AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2

#AuthorizedPrincipalsFile none

#AuthorizedKeysCommand none
#AuthorizedKeysCommandUser nobody

# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes

# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
#PermitEmptyPasswords no

# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no

# Kerberos options
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosGetAFSToken no

# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes
#GSSAPIStrictAcceptorCheck yes
#GSSAPIKeyExchange no

# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
UsePAM yes

#AllowAgentForwarding yes
#AllowTcpForwarding yes
#GatewayPorts no
X11Forwarding yes
#X11DisplayOffset 10
#X11UseLocalhost yes
#PermitTTY yes
PrintMotd no
#PrintLastLog yes
#TCPKeepAlive yes
#UseLogin no
#PermitUserEnvironment no
#Compression delayed
#ClientAliveInterval 0
#ClientAliveCountMax 3
#UseDNS no
#PidFile /var/run/sshd.pid
#MaxStartups 10:30:100
#PermitTunnel no
#ChrootDirectory none
#VersionAddendum none

# no default banner path
#Banner none

# Allow client to pass locale environment variables
AcceptEnv LANG LC_*

# override default of no subsystems
Subsystem sftp internal-sftp

# Example of overriding settings on a per-user basis
#Match User anoncvs
# X11Forwarding no
# AllowTcpForwarding no
# PermitTTY no
# ForceCommand internal-sftp
#Subsystem sftp internal-sftp

#Match group sftpusers
# ChrootDirectory /home/%u
# ForceCommand internal-sftp
# X11Forwarding no
# AllowTcpForwarding no

#Match User horaci
Match User brodsky
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
PermitTunnel no
ChrootDirectory /home/%u


Re:Uzavření uživatele v domovském adresáři
« Odpověď #14 kdy: 09. 06. 2020, 11:28:29 »
Ve výpisu práv se ten adresář jmenuje test a podle konfigurace posíláte uživatele do /home/brodsky.