this post was submitted on 28 Sep 2023
27 points (96.6% liked)

Linux

48044 readers
785 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS
 

I have a public SMB share mainly as a media dump. Everyone can read and write, without any auth - as intended. However, if I copy files via SSH (as a regular user, not the samba user), these files are of course owned by that user and thus not writable for the samba user - so I can't touch these files via SMB.

My config looks like this

[public]
  path = /path/to/samba/public
  guest ok = yes
  writeable = yes
  browseable = yes
  create mask = 0664
  directory mask = 0775
  force user = sambapub
  force group = users

I can fix the permissions by simply chown/chmod all files, but that's not really a solution.

top 11 comments
sorted by: hot top controversial new old
[–] [email protected] 20 points 1 year ago* (last edited 1 year ago)

Add the sticky group bit to the directory so that new files are created with the group of the directory.

chmod 2775 /path/to/samba/public```

Now any new file will have group "users".
[–] [email protected] 6 points 1 year ago (1 children)

Samba is a pipe of sorts... those settings only apply to files created using that pipe.

SSH is a different pipe, with different configuration. I think you need to modify the umask of the user connecting via ssh and/or add them to a samba group.

[–] [email protected] 1 points 1 year ago (1 children)

umask seems to only set the permissions, not the ownership. But ownership seems to be necessary to delete files.

[–] [email protected] 2 points 1 year ago (1 children)

... which is why you also need to join the samba group.

[–] [email protected] 1 points 1 year ago

The user is in that group, but files are (by default) owned by the user (that is, the group of the same name as the user, I'm not sure, what the wording is).

However, at least it seems to currently work somewhat. I had to chown and umask the entire share, and then restart the machine. Maybe some dangling session interfered?

[–] [email protected] 5 points 1 year ago (1 children)

Untested Evil Method, Not Really Recommended: format the backing file system in vfat, which has no notion of file ownership.

[–] [email protected] 2 points 1 year ago* (last edited 11 months ago)

[This comment has been deleted by an automated system]

[–] [email protected] 2 points 1 year ago (1 children)

I'm not 100% sure on this, but there's a config in the general which tells samba which user to use, if none is defined it uses nobody. I assume that if you change that to the same user you use via SSH it should work.

That being said, what you're seeing is expected, it's complaining that you copied files as user A to a public directory and now user B can't delete them unless user A sets the files as read/write for everyone (chmod) or transfers ownership (chown). There's a thing called ACL's that should allow you to set the permissions to the same as the parent folder so you can have everything be 777, but I've never used it so can't really help, however with the name you should be able to find some examples on the internet.

[–] [email protected] 3 points 1 year ago (1 children)
  force user = sambapub
  force group = users

This should set the user, and it's exactly what I'm seeing if I copy files over via smb. I'm aware, that it's kind if expected, but not what is intended (by me).

[–] [email protected] 1 points 1 year ago

Are you using the sambapub user to SSH the files into the folder? I thought that the force user refered to a samba user, not a Linux user.

[–] [email protected] 1 points 1 year ago

My hacky way was to make sure group ID on each computer matches and have the directory writable by the group. I also make sure user ID is different so I can identify who created it. It was easy for me because I only have to worry about 2 computers plus my NAS.