GNU/Linux >> Linux Esercitazione >  >> Linux

Come forzare la proprietà utente/gruppo di file su una condivisione Samba

La domanda

Hai una directory del disco condivisa tra i client Linux e Microsoft Windows. Più utenti devono accedere a questa condivisione di directory, ma quando i file vengono creati o modificati dai client Linux vengono applicate le autorizzazioni dei file Linux rendendo difficile o impossibile per i client Windows accedere a questi file.

Vorresti condividere queste risorse del disco in modo omogeneo.

La soluzione

A seconda della tua strategia di manutenzione generale, potrebbe essere utilizzata una delle seguenti tecniche.

1. Forzare la proprietà dell'utente o del gruppo

Nel file /etc/samba/smb.conf puoi usare la direttiva:

force user = [user]
force group = [group]

Ciò sovrascriverà i normali attributi di proprietà del file per l'accesso a file o directory. Per impostazione predefinita, vengono utilizzate le credenziali utente effettive. Utilizzando una (o entrambe) delle direttive precedenti, la credenziale associata può essere forzata a un valore specifico. Pertanto, tutti gli accessi ai file verranno eseguiti come se il processo di accesso fosse in esecuzione con le credenziali specificate.

Se la direttiva assume la forma:

force group = +[group]

quindi solo gli utenti Linux che sono già membri di [gruppo] avranno il loro gruppo principale cambiato in [gruppo] per la durata dell'accesso. Gli utenti Linux che non sono già membri del [gruppo] non sono interessati da questa direttiva.

2. Usa le autorizzazioni di accesso alla directory

Considera il director /tmp:è uno scratchpad che consente a più utenti di creare, modificare o eliminare file. Per impedire all'utente A di eliminare un file di proprietà dell'utente B, nella directory è impostato lo sticky bit:

$ ls -ld /tmp
drwxrwxrwt 14 root root 360 Mar 19 08:25 /tmp

Nota la t flag dei permessi:indica il “sticky ” è impostato per la directory. Qualsiasi utente può creare file in questa directory, ma solo l'utente proprietario può eliminare la voce; senza il bit appiccicoso chiunque potrebbe eliminare qualsiasi file poiché la directory ha i permessi di lettura/scrittura/esecuzione del mondo.

1. Un modo per aggirare questo problema è fare in modo che la directory SAMBA condivisa sia di proprietà dell'utente SAMBA:

# /bin/mkdir [/path/to/SAMBA/share]
# /bin/chown -R [user]:[group] -R [/path/to/SAMBA/share]

2. Quindi, attiva il bit setgid per la directory per forzare le credenziali di gruppo di qualsiasi voce di directory in modo che corrispondano alle credenziali di gruppo di quella directory:

# /bin/chmod g+s [/path/to/SAMBA/share]
# /bin/ls -ld [/path/to/SAMBA/share]
drwxrws--- 1 [user] [group] 0 Mar 19 09:07 [/path/to/SAMBA/share]

3. Ora crea un file all'interno di [/path/to/SAMBA/share] come utente root. Il file sarà di proprietà di root ma il suo gruppo sarà il gruppo [gruppo]:

# /bin/mkdir /example
# /bin/chown root:oracle /example
# /bin/chmod g+s /example
# /bin/ls -ld /example
drwxr-sr-x 2 root oracle 4096 Mar 19 10:03 /example

4. Infine, crea un file in /example come utente root:

# id
uid=0(root) gid=0(root) groups=0(root)
# touch /example/file
# ls -ld /example /example/file
drwxrws--- 2 root oracle 4096 Mar 19 10:09 /example
-rw-r--r-- 1 root oracle    0 Mar 19 10:09 /example/file

Si noti che sebbene le credenziali utilizzate per creare il file fossero root:root, le credenziali di accesso salvate per il file erano root:oracle; la proprietà del gruppo è stata impostata automaticamente sul gruppo della directory.

Nota

Il metodo setgid descritto sopra funziona anche se viene utilizzato il bit setuid. Nel passaggio chmod, fai invece questo:

# chmod u+s [/path/to/SAMBA/share]

Puoi anche ignorare sia la proprietà del file che l'appartenenza al gruppo in questo modo:

# chmod u+s,g+s [/path/to/SAMBA/share]

Sebbene sia una capacità affascinante, potrebbe avere un'utilità limitata.

3. Usa gli elenchi di controllo di accesso (ACL)

Gli elenchi di controllo di accesso, o ACL, sono funzionalità del file system in cui un set aggiuntivo di attributi di file viene archiviato in aggiunta alle normali autorizzazioni di proprietario/gruppo/altre autorizzazioni di file Linux. L'utilizzo di ACL consente un controllo molto preciso sul tipo esatto di accesso da concedere a un determinato tipo di accesso.

L'implementazione del file system SAMBA su Linux supporta gli elenchi di controllo di accesso, ma la funzione deve essere abilitata in modo esplicito tramite l'attributo acl mount. È possibile abilitare questa funzione in modo dinamico, come:

# mount -o remount,acl [/path/to/samba/mount/point]

Ad esempio, supponiamo di avere una condivisione /samba/office/ in cui permettiamo a qualsiasi utente di scrivere un file, ma le credenziali del gruppo dovrebbero essere forzate a office. Potremmo usare il comando:

# mount -o remount,acl /group
# setfacl -R -d -m u::rwx,g:office:rwx,o::r-x /samba/office
# /bin/getfacl /samba/office
# file: samba/office/
# owner: root
# group: office
user::rwx
group::rwx
other::rwx
default:user::rwx
default:group:office:rwx
default:mask::rwx
default:other::r-x

Poiché stiamo stabilendo questo ACL per la directory, si applica ai suoi file e sottodirectory contenuti.


Linux
  1. Linux chmod and chown - Come modificare le autorizzazioni e la proprietà dei file in Linux

  2. Come aggiungere un utente a un gruppo in Linux

  3. Come abilitare le autorizzazioni dei file Unix su Samba Share con Smb 2.0+?

  4. Come ripristinare la proprietà predefinita del gruppo/utente di tutti i file in /var?

  5. Come forzare la proprietà del gruppo su Samba Share?

Linux:come condividere file su una rete locale con woof

Come condividere file localmente su Linux utilizzando NitroShare

Come rinominare uno o più file in Linux

Come aggiungere un utente al gruppo su Linux

Come aggiungere un utente a un gruppo Linux

Come comprimere un file in Linux