# [RISOLTO] Samba: problemi con le condivisioni e permessi

## fbcyborg

Salve a tutti, 

non riesco a impostare un paio di condivisioni.

La situazione è la seguente: ho due utenti user1 e user2 con le rispettive /home/user{1|2} condivise con samba.

Prima di tutto voglio che se l'utente user1 fa login, possa accedere (in lettura e scrittura) solo a /home/user1. Viceversa per quanto riguarda user2.

E questo principalmente vale per quanto riguarderebbe gli accessi "fisici" su questo sistema.

Ma gli accessi avvengono tramite client windows.

La prima cosa che ho fatto è quella di assegnare i permessi sul filesystem, nel seguente modo:

```
chmod 600 /home/user1
```

Il risultato è il seguente:

```
drw------- 2 user1 user1 4096 May  8 19:59 user1

drw------- 2 user2 user2 4096 May  8 19:55 user2
```

Così, a prescindere da samba, se l'utente user1 fa login, può entrare solo nella sua directory.

Poi ho configurato il file smb.conf come indicato anche nel file smb.conf.example, ovvero:

```
[user1]

    path = /home/user1

    valid users = user1

    public = no

    writable = yes

    printable = no

[user2]

    path = /home/user2

    valid users = user2

    public = no

    writable = yes

    printable = no

```

Infatti dal smb.conf.example:

```
# A private directory, usable only by Fred. Note that Fred requires write

# access to the directory.

;[fredsdir]

;   comment = Fred's Service

;   path = /usr/somewhere/private

;   valid users = fred

;   public = no

;   writable = yes

;   printable = no
```

Il problema è che a meno di impostare i permessi 777 su quelle dir, sono del tutto inaccessibili da remoto.

Accendendo il PC client windows se provo ad entrare nel Samba Server, mi chiede username e password, e mi mostra le condivisioni.

Ora quindi sono loggato come user1. Se provo ad entrare nella condivisione "user1" mi dice accesso negato (andando contro alle regole che ho impostato nel smb.conf e ai permessi che ho impostato).

Se provo ad entrare in "user2", mi chiede di rifare login, ma anche facendolo non riesco a entrare per il motivo di cui sopra.

Non capisco cosa manchi... qualcuno sa darmi una spiegazione?

Grazie

----------

## devilheart

se devi fare in modo che un utente acceda solo alla sua home puoi usare lo share speciale di samba homes

----------

## Peach

cioè:

```
[home]

   comment = Home Directory

   path = /home/%U

   browseable = no

   valid users = %S

   writable = yes

   guest ok = no

   inherit permissions = yes
```

il problema del fatto che non ti vengano fuori i nomi nel listing dei servizi direi che è abbastanza normale imho

per accedervi devi usare il percorso completo alla cartella

----------

## fbcyborg

Grazie mille per i consigli.

Dunque, se ho capito bene basta quindi che io definisca una sola condivisione nel file smb.conf, corrispondente appunto a quanto ha citato Peach e a seconda di quale utente fa login, ha la sua home.

Il problema è che non riesco a fare login.

Quando tento di accedere da winzozz a \\10.0.0.1\home mi chiede appunto di fare login, ma proprio non ne vuole sapere.

Stessa cosa se provo da Linux: NT_STATUS_ACCESS_DENIED.

----------

## fbcyborg

Dunque mi sono accorto prima di tutto che avevo commesso un errore.

In smb.conf avevo scritto [home] e non [homes], ma ho prontamente corretto.

Ora in effetti quando entro nell'host che condivide le homes se entro come user1, vedo la dir user1 e basta.. 

Però non riesco ad entrarci.

Da notare che il login su windows lo faccio con username e password diversi però... e questo però spero non sia una limitazione

perché ora cambiare tutti gli utenti dei client non è che sia una cosa bellissima.

(Fra l'altro ho anche provato a creare un account con le stesse credenziali che ha su Linux, ma le cose non cambiano)

Ecco cosa vedo in log.smbd:

```
[2009/05/11 20:49:19, 3] smbd/error.c:error_packet_set(106)

  error packet at smbd/process.c(992) cmd=50 (SMBtrans2) NT_STATUS_NETWORK_ACCESS_DENIED
```

[...]

```
[2009/05/11 20:49:19, 3] auth/auth.c:check_ntlm_password(221)

  check_ntlm_password:  Checking password for unmapped user []\[]@[Gentoo] with the new password interface

```

[...]

```
[2009/05/11 20:49:19, 3] auth/auth.c:check_ntlm_password(270)

  check_ntlm_password: guest authentication for user [] succeeded
```

[...]

```
[2009/05/11 20:49:19, 3] smbd/msdfs.c:get_referred_path(636)

  get_referred_path: |user41| in dfs path \Ml310-g5\user1 is not a dfs root.

[2009/05/11 20:49:19, 3] smbd/error.c:error_packet_set(106)

  error packet at smbd/trans2.c(6307) cmd=50 (SMBtrans2) NT_STATUS_NOT_FOUND

```

[...]

```
[2009/05/11 20:49:19, 0] smbd/service.c:set_current_service(184)

  chdir (/home/user1) failed

[2009/05/11 20:49:19, 3] smbd/error.c:error_packet_set(106)

  error packet at smbd/process.c(992) cmd=50 (SMBtrans2) NT_STATUS_NETWORK_ACCESS_DENIED
```

----------

## Peach

l'utente è addato a samba con smbpasswd?

da winzozz ti colleghi alla dir remota autenticandoti correttamente? o se non lo fai hai provato ad esplicitare l'autenticazione?

----------

## fbcyborg

Azz, c'hai ragione.. ora che ho rifatto l'add con smbpasswd funziona! 

Grazie!  :Smile: 

----------

## fbcyborg

Salve di nuovo a tutti.

Mi è capitata una cosa stranissima!

Da quando ho impostato le seguenti righe su samba 

```
[homes]

    comment = Home Directory

    path = /home/%U

    browseable = no

    valid users = %S user43

    writable = yes

    guest ok = no

    inherit permissions = yes

    read only = no

    create mask = 0775

    directory mask = 0775
```

Ogni utente che da un pc windows si connette al server può vedere la sua home.

E questo funziona. Ho mappato un' unità di rete e lo bindata sulla directory documenti classica di windows.

Ora, come potete vedere ho impostato che l'user43 possa vedere tutte le home degli utenti.

Fino a qualche tempo fa ha funzionato ora non funziona più. Quando ad esempio vado su \\ipdelserver\user50 non è che mi dice "accesso negato", e non da alcun errore, ma semplicemente invece di farmi vedere il contenuto della directory di home di user50, mi fa vedere sempre la mia!!!

Quindi se io sono user43, sia che io acceda a \\ipdelserver\user43, sia che io acceda a \\ipdelserver\user50 o qualche altra home, mi mostra sempre lo stesso contenuto,ovvero quello della mia home, la user43!

Come può accadere una roba del genere?

Non capisco perché ora debba fare questo redirect assurdo!!! Eppure non ho cambiato nulla!

EDIT: Comincio a sospettare che questa cosa in realtà non abbia mai funzionato. Solo che non me n'ero accorto perché prima le varie home erano tutte vuote, e quindi non avevo realizzato che si comportasse in questo modo.

----------

## devilheart

credo che samba dia la precedenza alla home di user43

----------

## fbcyborg

Quindi non si può fare questa cosa?

----------

## devilheart

ora ho letto che il manuale di samba mostra tutte le home se l'utente guest è abilitato ad accedere allo share homes

----------

## fbcyborg

Vabbè, buono a sapersi. Oramai ho impostato per tutte le home una condivisione a se.

----------

