After hours of searching, I discovered that the share name and the share directory cannot be the same (and it's not case-sensitive, either). See this post on serverfault.
So, if I change my share name in smb.conf from:
[Music]
to
[Tunes]
I can both read and write to the share. No other changes to my smb.conf were necessary, and no need to chmod 0777.
Answer from the_meter413 on askubuntu.comAfter hours of searching, I discovered that the share name and the share directory cannot be the same (and it's not case-sensitive, either). See this post on serverfault.
So, if I change my share name in smb.conf from:
[Music]
to
[Tunes]
I can both read and write to the share. No other changes to my smb.conf were necessary, and no need to chmod 0777.
Under linux, you need to map your system account to the samba server account.
If you are creating a new user for samba access, then enter the following commands
sudo useradd {user}
sudo passwd {user}
To map a system account to a samba user use the following command
sudo smbpasswd -a {user}
The edit the file /etc/samba/smbusers to map the system account to the samba account, where the system account references the samba account
user = "user"
Ok, figured it out. It wasn't in my samba settings. The error was actually in how I was "permanently" mounting my samba share.
I was doing:
//192.168.1.11/craig /home/craig/musicServer cifs username=craig,password=MYPASSWORD 0 0
but I needed
//192.168.1.11/craig /home/craig/musicServer cifs username=craig,password=MYPASSWORD,file_mode=0777,dir_mode=0777 0 0
Adding both file_mode and dir_mode solved it.
The difference in owner printout is probably due to different UID/GID you have on your local and remote machines.
You can use noperm option at mount instead (no need for file_mode or dir_mode). This option turns off the local file permission check (so UID/GID inconsistency will be okay) and assume the remote identity you authenticated at mount. Remote access control is still enforced.
debian - Can't make samba share writable - Unix & Linux Stack Exchange
Samba permissions mess - can't write anything (from Windows)
debian - Samba non-root user can't write to share - Unix & Linux Stack Exchange
How to create a Samba share that is writable from Windows without 777 permissions? - Unix & Linux Stack Exchange
for what it is worth, I couldn't access my samba share, maybe you have forgotten to add you username to the samba password group (for lack of beter description phrase)
this is what I did to get mine to work
smbpasswd -a username
after by using nautilus, shared my drive/folder with right-click, sharing, etc.
create your password, and use your username and passsword (which you just entered) to access your samba drive, you can also map this drive in Windows
hope this could help
Are the group and owner of the shared folder set properly for the samba user? Should be the same, or try
$ chown -R nobody:nogroup sharedfolder
for testing purposes...
Hello,
I have a game server running on my machine, and I often move files and folders around.
So I decided to use samba (version 4.7.6-Ubuntu) to create a shared folder (which contains the game server) - and I can't write anything.
The folder is located at /home/locale/Documents.
locale is the username of the account I use to log physically on my machine, and is pretty much the "admin" account. (Note : they don't have root privileges, I'm not that dumb)
To connect to that folder, I use another account, named John. (The username of my Windows account).
I can connect to the share from Windows without any trouble, using the credentials from John (inputing the Unix password) ; but I cannot write anything.
This is what I have in my smb.conf for the folder :
[gameserver] path = /home/locale/Documents/ valid users = John browsable = yes read only = no writeable = yes available = yes create mask = 0775 force user = John
I've seen plenty of people on the internet using 644 or 755 as a create mask - I don't want that. The directories set in locale/Documents are all set at 775, and I don't want to change that.
drwxrwxr-x 5 locale locale 4096 mars 3 09:19 . drwxr-xr-x 19 locale locale 4096 mars 3 09:27 .. drwxrwxr-x 19 locale locale 4096 mars 1 23:53 gameserver
John is of course part of the locale group. So I should not be a problem to write in the folder right ? After all, it works like that for my FTP.
What I should do ? I am really forced to go full on 777 on my folder in order to make this thing work ?
Thanks.
You're missing:
force directory mode = 0777
Also, you really want to use 0666 for force create mask. Probably no good reason to force the execute bits.
Changing permissions to 777 ALWAYS makes me nervous, even if this is a home project. Instead, add all your samba users to a group (like samba_user), then in smb.conf add the line:
force group = samba_user
Naturally, you must also chgrp all the necessary folders as well. Then you can set finer grained permissions, allow people to do their thing in other people's folders, and your server isn't turned into a free for all. Someone wants to have a private folder? Just change that folder's group from samba_user back to the user's private group.
I recommend to create a dedicated user for that share and specify it in force user(see docs).
Create a user (shareuser for example) and set the owner of everything in the share folder to that user:
adduser --system shareuser
chown -R shareuser /path/to/share
Then add force user and permission mask settings in smb.conf:
[myshare]
path = /path/to/share
writeable = yes
browseable = yes
public = yes
create mask = 0644
directory mask = 0755
force user = shareuser
Note that guest ok is a synonym for public.
In the share settings in smb.conf, you'll need to specify the names of users and/or groups that are allowed to write to the share, using a write list = ... line.
Example:
[myshare]
...
write list = my_linux_username
Then you'll need to use the smbpasswd command to set up a password to authenticate my_linux_username for Samba:
sudo smbpasswd -a my_linux_username
This step is necessary because the standard system passwords in /etc/shadow are hashed in algorithms that are incompatible with the password hash algorithms used in the SMB protocol. When a client sends a SMB authentication packet, it includes a hashed password. It can only be compared to another password hash that uses the same algorithm.
(Very, very old instructions from the previous millennium may recommend disabling password encryption in Samba, and using certain registry hacks to allow Windows to emit unencrypted passwords to the network. This advice is obsolete: those registry hacks may no longer work in current versions of Windows, and allow anyone who can monitor your network traffic to trivially capture your password.)
There's one more thing you may have to do client-side. When your Windows client system is joined to an Active Directory domain and you're logged in with an AD account, it automatically prefixes all unqualified usernames with the name of the AD domain of the user, i.e. you will be authenticating as AD_DOMAIN\your_username, not just your_username.
If you are logged in with a local account (or your client system is not joined to an AD domain), Windows may automatically prefix the username with the client hostname unless you specify another domain name.
To successfully log in to a stand-alone Samba server from a stand-alone Windows client, you may have to specify your username as SAMBA_SERVER_HOSTNAME\your_username.
Otherwise Samba will see the username as WINDOWS_CLIENT_HOSTNAME\your_username, conclude that it has no way to verify any users belonging to domain named WINDOWS_CLIENT_HOSTNAME, and will reject the login.
(Newer versions of Samba may have a built-in check for this specific situation, and they might allow you access nevertheless. But this is basically how SMB authentication works "under the hood", and if you need to deal with old versions of Samba, it might be useful still.)
I setup a Samba shared folder and I can access it through my other linux laptop (manjaro) but I can't write any changes to it. I get a Permission Denied message.
samba config file
Also I did steps 2/3 from this site to make samba work on Fedora 31.
Anyone know how can I make my shared folder writeable by other users mainly my other linux machine (manjaro)?
Thanks