
我最近在 Linux 伺服器上設定了 Samba,並輕鬆發現了 Windows 電腦上的共用驅動器,但無法將檔案複製到該驅動器,因為它會要求額外的權限。
我能夠以 777 權限寫入子資料夾,但主磁碟機的權限為 775。
據我所知,777 權限非常不安全,如何修改群組以包含從 Windows 瀏覽且在 Linux 伺服器中沒有使用者級權限的使用者?
這是一個家庭網絡,對 Samba 伺服器的存取透過阻止來自網路外部的存取的全域設定進行限制(透過將以下行新增至 /etc/samba/smb.conf)
[global]
hosts allow = 192.168.0.
hosts deny = ALL
因此,我並不擔心網路內的安全性 - 如果使用者位於 192.168.0.x 子網路上,我很高興假設他們是合法的,並且目前不想添加進一步的身份驗證步驟。
答案1
我明白你想要什麼。 LAN 上的所有使用者/電腦都應該是“訪客”,並對檔案共用具有完全的“讀取/寫入”存取權限。
腳步:
檢查 Samba 配置。分享內容是否包括這些:
[Share]
available = yes
browsable = yes
public = yes
writeable = yes
檢查 POSIX 權限。範例 ls -lh:
drwxrws---+ 1 nobody nogroup 252 May 12 14:55 Music
您需要在那裡設定黏性位,否則檔案共享的行為將不會像您在 Windows 中所期望的那樣。 chmod 2770 [dir]... 若要套用所有目錄的權限,請使用 find。例子
find . -type d -exec chmod 2770 {} \;
find . -type f -exec chmod 2760 {} \;
您還需要將群組設定為 nogroup,這是 samba 的預設來賓群組。
最後是 acls。使用獲取事實和設定值。您需要為使用者nobody 和群組nogroup 設定預設值。完成此操作後,透過 samba 建立的任何內容都將繼承良好的權限。下面是目錄 ACL 的範例:
# file: Downloads
# owner: nobody
# group: nogroup
# flags: -s-
user::rwx
group::rwx
mask::rwx
other::---
default:user::rwx
default:group::rwx
default:mask::rwx
default:other::---
要獲得一些預設值,請使用 find:
find . -type d -exec setfacl -d -m u::rwx {} \;
find . -type d -exec setfacl -d -m g::rwx {} \;
要修復現有文件:
find . -type f -exec chgrp nogroup {} \;
find . -type f -exec chmod 660 {} \;
find . -type f -exec setfacl -m g::rw {} \;
想要更多 !
假設您不想更改 POSIX 群組。然後您可以使用 ACL 明確新增群組。例子:
setfacl -m g:linuxgroup:rw [filename]
透過這些設置,我可以在 ubuntu、windows、RPi、android 和其他 Linux 應用程式之間共用。
答案2
通常,人們不希望向每個具有網路存取權限的人授予對目錄的寫入權限。通常有更好的解決方案可以在用戶群組之間共享文件,例如為每個人提供自己的網路共享,並為其他人提供(部分)讀取存取權限。這就是不使用全域可寫存取權限的建議的由來。
但是,就您而言,這似乎正是您想要的。因此,請繼續使用chmod -R a+rwX /path/to/share
1以及適當的 Samba 設定條目,例如writable = yes
.
1 a+rwX
意味著A二(所有者、團體和其他人)將收到r電子頭,w儀式,和有條件的eX執行權限。 「有條件」表示僅當執行/遍歷權限已授予至少一個存取群組(擁有者、群組、其他)時才會新增執行/遍歷權限。如果您想擴展擁有者已經可執行/可遍歷的那些檔案和目錄的執行/遍歷權限,這非常有用。