From 1caa6b23e417f77e7b38ecdfa47d9abe8c7b7d0e Mon Sep 17 00:00:00 2001 From: Gerald Carter Date: Wed, 16 Jul 2003 05:42:34 +0000 Subject: ading new files from 3.0 (This used to be commit 99feae7b5b1c229a925367b87c0c0f636d9a2d75) --- docs/htmldocs/AccessControls.html | 660 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 660 insertions(+) create mode 100644 docs/htmldocs/AccessControls.html (limited to 'docs/htmldocs/AccessControls.html') diff --git a/docs/htmldocs/AccessControls.html b/docs/htmldocs/AccessControls.html new file mode 100644 index 0000000000..044d347107 --- /dev/null +++ b/docs/htmldocs/AccessControls.html @@ -0,0 +1,660 @@ +Chapter 13. File, Directory and Share Access Controls

Chapter 13. File, Directory and Share Access Controls

John H. Terpstra

Samba Team

Jeremy Allison

Samba Team

May 10, 2003

+Advanced MS Windows users are frequently perplexed when file, directory and share manipulation of +resources shared via Samba do not behave in the manner they might expect. MS Windows network +administrators are often confused regarding network access controls and what is the best way to +provide users with the type of access they need while protecting resources from the consequences +of untoward access capabilities. +

+Unix administrators frequently are not familiar with the MS Windows environment and in particular +have difficulty in visualizing what the MS Windows user wishes to achieve in attempts to set file +and directory access permissions. +

+The problem lies in the differences in how file and directory permissions and controls work +between the two environments. This difference is one that Samba can not completely hide, even +though it does try to make the chasm transparent. +

+POSIX Access Control List technology has been available (along with Extended Attributes) +for Unix for many years, yet there is little evidence today of any significant use. This +explains to some extent the slow adoption of ACLs into commercial Linux products. MS Windows +administrators are astounded at this given that ACLs were a foundational capability of the now +decade old MS Windows NT operating system. +

+The purpose of this chapter is to present each of the points of control that are possible with +Samba-3 in the hope that this will help the network administrator to find the optimum method +for delivering the best environment for MS Windows desktop users. +

+This is an opportune point to mention that it should be borne in mind that Samba was created to +provide a means of interoperability and interchange of data between two operating environments +that are quite different. It was never the intent to make Unix/Linux like MS Windows NT. Instead +the purpose was an is to provide a sufficient level of exchange of data between the two environments. +What is available today extends well beyond early plans and expectations, yet the gap continues to +shrink. +

Features and Benefits

+ Samba offers a lot of flexibility in file system access management. These are the key access control + facilities present in Samba today: +

Samba Access Control Facilities

  • + Unix File and Directory Permissions +

    + Samba honours and implements Unix file system access controls. Users + who access a Samba server will do so as a particular MS Windows user. + This information is passed to the Samba server as part of the logon or + connection setup process. Samba uses this user identity to validate + whether or not the user should be given access to file system resources + (files and directories). This chapter provides an overview for those + to whom the Unix permissions and controls are a little strange or unknown. +

  • + Samba Share Definitions +

    + In configuring share settings and controls in the smb.conf file + the network administrator can exercise over-rides to native file + system permissions and behaviours. This can be handy and convenient + to affect behaviour that is more like what MS Windows NT users expect + but it is seldom the best way to achieve this. + The basic options and techniques are described herein. +

  • + Samba Share ACLs +

    + Just like it is possible in MS Windows NT to set ACLs on shares + themselves, so it is possible to do this in Samba. + Very few people make use of this facility, yet it remains on of the + easiest ways to affect access controls (restrictions) and can often + do so with minimum invasiveness compared with other methods. +

  • + MS Windows ACLs through Unix POSIX ACLs +

    + The use of POSIX ACLs on Unix/Linux is possible ONLY if the underlying + operating system supports them. If not, then this option will not be + available to you. Current Unix technology platforms have native support + for POSIX ACLs. There are patches for the Linux kernel that provide + this also. Sadly, few Linux platforms ship today with native ACLs and + Extended Attributes enabled. This chapter has pertinent information + for users of platforms that support them. +

File System Access Controls

+Perhaps the most important recognition to be made is the simple fact that MS Windows NT4 / 200x / XP +implement a totally divergent file system technology from what is provided in the Unix operating system +environment. Firstly we should consider what the most significant differences are, then we shall look +at how Samba helps to bridge the differences. +

MS Windows NTFS Comparison with Unix File Systems

+ Samba operates on top of the Unix file system. This means it is subject to Unix file system conventions + and permissions. It also means that if the MS Windows networking environment requires file system + behaviour that differs from unix file system behaviour then somehow Samba is responsible for emulating + that in a transparent and consistent manner. +

+ It is good news that Samba does this to a very large extent and on top of that provides a high degree + of optional configuration to over-ride the default behaviour. We will look at some of these over-rides, + but for the greater part we will stay within the bounds of default behaviour. Those wishing to explore + to depths of control ability should review the smb.conf man page. +

File System Feature Comparison

Name Space

+ MS Windows NT4 / 200x/ XP files names may be up to 254 characters long, Unix file names + may be 1023 characters long. In MS Windows file extensions indicate particular file types, + in Unix this is not so rigorously observed as all names are considered arbitrary. +

+ What MS Windows calls a Folder, Unix calls a directory, +

Case Sensitivity

+ MS Windows file names are generally Upper Case if made up of 8.3 (ie: 8 character file name + and 3 character extension. If longer than 8.3 file names are Case Preserving, and Case + Insensitive. +

+ Unix file and directory names are Case Sensitive and Case Preserving. Samba implements the + MS Windows file name behaviour, but it does so as a user application. The Unix file system + provides no mechanism to perform case insensitive file name lookups. MS Windows does this + by default. This means that Samba has to carry the processing overhead to provide features + that are NOT native to the Unix operating system environment. +

+ Consider the following, all are unique Unix names but one single MS Windows file name: + + MYFILE.TXT + MyFile.txt + myfile.txt + + So clearly, In an MS Windows file name space these three files CAN NOT co-exist! But in Unix + they can. So what should Samba do if all three are present? Answer, the one that is lexically + first will be accessible to MS Windows users, the others are invisible and unaccessible - any + other solution would be suicidal. +

Directory Separators

+ MS Windows and DOS uses the back-slash '\' as a directory delimiter, Unix uses the forward-slash '/' + as it's directory delimiter. This is transparently handled by Samba. +

Drive Identification

+ MS Windows products support a notion of drive letters, like C: to represent + disk partitions. Unix has NO concept if separate identifiers for file partitions since each + such file system is mounted to become part of the over-all directory tree. + The Unix directory tree begins at '/', just like the root of a DOS drive is specified like + C:\. +

File Naming Conventions

+ MS Windows generally never experiences file names that begin with a '.', while in Unix these + are commonly found in a user's home directory. Files that begin with a '.' are typically + either start up files for various Unix applications, or they may be files that contain + start-up configuration data. +

Links and Short-Cuts

+ MS Windows make use of "links and Short-Cuts" that are actually special types of files that will + redirect an attempt to execute the file to the real location of the file. Unix knows of file and directory + links, but they are entirely different from what MS Windows users are used to. +

+ Symbolic links are files in Unix that contain the actual location of the data (file OR directory). An + operation (like read or write) will operate directly on the file referenced. Symbolic links are also + referred to as 'soft links'. A hard link is something that MS Windows is NOT familiar with. It allows + one physical file to be known simultaneously by more than one file name. +

+ There are many other subtle differences that may cause the MS Windows administrator some temporary discomfort + in the process of becoming familiar with Unix/Linux. These are best left for a text that is dedicated to the + purpose of Unix/Linux training/education. +

Managing Directories

+ There are three basic operations for managing directories, create, delete, rename. +

Table 13.1. Managing directories with unix and windows

ActionMS Windows CommandUnix Command
createmd foldermkdir folder
deleterd folderrmdir folder
renamerename oldname newnamemv oldname newname

+

File and Directory Access Control

+ The network administrator is strongly advised to read foundational training manuals and reference materials + regarding file and directory permissions maintenance. Much can be achieved with the basic Unix permissions + without having to resort to more complex facilities like POSIX Access Control Lists (ACLs) or Extended + Attributes (EAs). +

+ Unix/Linux file and directory access permissions involves setting three (3) primary sets of data and one (1) control set. + A Unix file listing looks as follows:- + +

+	jht@frodo:~/stuff> ls -la
+	total 632
+	drwxr-xr-x   13 jht   users      816 2003-05-12 22:56 .
+	drwxr-xr-x   37 jht   users     3800 2003-05-12 22:29 ..
+	d---------    2 jht   users       48 2003-05-12 22:29 muchado00
+	d--x--x--x    2 jht   users       48 2003-05-12 22:29 muchado01
+	dr-xr-xr-x    2 jht   users       48 2003-05-12 22:29 muchado02
+	drwxrwxrwx    2 jht   users       48 2003-05-12 22:29 muchado03
+	drw-rw-rw-    2 jht   users       48 2003-05-12 22:29 muchado04
+	d-w--w--w-    2 jht   users       48 2003-05-12 22:29 muchado05
+	dr--r--r--    2 jht   users       48 2003-05-12 22:29 muchado06
+	drwxrwxrwt    2 jht   users       48 2003-05-12 22:29 muchado07
+	drwsrwsrwx    2 jht   users       48 2003-05-12 22:29 muchado08
+	----------    1 jht   users     1242 2003-05-12 22:31 mydata00.lst
+	---x--x--x    1 jht   users     1674 2003-05-12 22:33 mydata01.lst
+	--w--w--w-    1 jht   users     7754 2003-05-12 22:33 mydata02.lst
+	--wx-wx-wx    1 jht   users   260179 2003-05-12 22:33 mydata03.lst
+	-r--r--r--    1 jht   users    21017 2003-05-12 22:32 mydata04.lst
+	-r-xr-xr-x    1 jht   users   206339 2003-05-12 22:32 mydata05.lst
+	-rw-rw-rw-    1 jht   users    41105 2003-05-12 22:32 mydata06.lst
+	-rwxrwxrwx    1 jht   users    19312 2003-05-12 22:32 mydata07.lst
+	jht@frodo:~/stuff>
+	

+

+ The columns above represent (from left to right): permissions, no blocks used, owner, group, size (bytes), access date, access time, file name. +

+ The permissions field is made up of: + +

+	 JRV: Put this into a diagram of some sort
+	[ type  ] [ users ] [ group ] [ others ]   [File, Directory Permissions]
+	[ d | l ] [ r w x ] [ r w x ] [ r w x  ]
+	  |   |     | | |     | | |     | | |
+	  |   |     | | |     | | |     | | |-----> Can Execute, List files
+	  |   |     | | |     | | |     | |-------> Can Write,   Create files
+	  |   |     | | |     | | |     |---------> Can Read,    Read files
+	  |   |     | | |     | | |---------------> Can Execute, List files
+	  |   |     | | |     | |-----------------> Can Write,   Create files
+	  |   |     | | |     |-------------------> Can Read,    Read files
+	  |   |     | | |-------------------------> Can Execute, List files
+	  |   |     | |---------------------------> Can Write,   Create files
+	  |   |     |-----------------------------> Can Read,    Read files
+	  |   |-----------------------------------> Is a symbolic Link
+	  |---------------------------------------> Is a directory
+	

+

+ Any bit flag may be unset. An unset bit flag is the equivalent of 'Can NOT' and is represented as a '-' character. + +

Example 13.1. Example File

+		-rwxr-x---   Means: The owner (user) can read, write, execute
+		                    the group can read and execute
+		                    everyone else can NOT do anything with it
+		

+ +

+ Additional possibilities in the [type] field are: c = character device, b = block device, p = pipe device, s = Unix Domain Socket. +

+ The letters `rwxXst' set permissions for the user, group and others as: read (r), write (w), execute (or access for directories) (x), + execute only if the file is a directory or already has execute permission for some user (X), set user or group ID on execution (s), + sticky (t). +

+ When the sticky bit is set on a directory, files in that directory may be unlinked (deleted) or renamed only by root or their owner. + Without the sticky bit, anyone able to write to the directory can delete or rename files. The sticky bit is commonly found on + directories, such as /tmp, that are world-writable. +

+ When the set user or group ID bit (s) is set on a directory, then all files created within it will be owned by the user and/or + group whose 'set user or group' bit is set. This can be very helpful in setting up directories that for which it is desired that + all users who are in a group should be able to write to and read from a file, particularly when it is undesirable for that file + to be exclusively owned by a user who's primary group is not the group that all such users belong to. +

+ When a directory is set drw-r----- this means that the owner can read and create (write) files in it, but because + the (x) execute flags are not set files can not be listed (seen) in the directory by anyone. The group can read files in the + directory but can NOT create new files. NOTE: If files in the directory are set to be readable and writable for the group, then + group members will be able to write to (or delete) them. +

Share Definition Access Controls

+The following parameters in the smb.conf file sections that define a share control or affect access controls. +Before using any of the following options please refer to the man page for smb.conf. +

User and Group Based Controls

+ User and group based controls can prove very useful. In some situations it is distinctly desirable to affect all + file system operations as if a single user is doing this, the use of the force user and + force group behaviour will achieve this. In other situations it may be necessary to affect a + paranoia level of control to ensure that only particular authorised persons will be able to access a share or + it's contents, here the use of the valid users or the invalid users may + be most useful. +

+ As always, it is highly advisable to use the least difficult to maintain and the least ambiguous method for + controlling access. Remember, that when you leave the scene someone else will need to provide assistance and + if that person finds too great a mess, or if they do not understand what you have done then there is risk of + Samba being removed and an alternative solution being adopted. +

Table 13.2. User and Group Based Controls

Control ParameterDescription - Action - Notes
admin users

+ List of users who will be granted administrative privileges on the share. + They will do all file operations as the super-user (root). + Any user in this list will be able to do anything they like on the share, + irrespective of file permissions. +

force group

+ Specifies a UNIX group name that will be assigned as the default primary group + for all users connecting to this service. +

force user

+ Specifies a UNIX user name that will be assigned as the default user for all users connecting to this service. + This is useful for sharing files. Incorrect use can cause security problems. +

guest ok

+ If this parameter is set for a service, then no password is required to connect to the service. Privileges will be + those of the guest account. +

invalid users

+ List of users that should not be allowed to login to this service. +

only user

+ Controls whether connections with usernames not in the user list will be allowed. +

read list

+ List of users that are given read-only access to a service. Users in this list + will not be given write access, no matter what the read only option is set to. +

username

+ Refer to the smb.conf man page for more information - this is a complex and potentially misused parameter. +

valid users

+ List of users that should be allowed to login to this service. +

write list

+ List of users that are given read-write access to a service. +

File and Directory Permissions Based Controls

+ The following file and directory permission based controls, if misused, can result in considerable difficulty to + diagnose the cause of mis-configuration. Use them sparingly and carefully. By gradually introducing each one by one + undesirable side-effects may be detected. In the event of a problem, always comment all of them out and then gradually + re-introduce them in a controlled fashion. +

Table 13.3. File and Directory Permission Based Controls

Control ParameterDescription - Action - Notes
create mask

+ Refer to the smb.conf man page. +

directory mask

+ The octal modes used when converting DOS modes to UNIX modes when creating UNIX directories. + See also: directory security mask. +

dos filemode

+ Enabling this parameter allows a user who has write access to the file to modify the permissions on it. +

force create mode

+ This parameter specifies a set of UNIX mode bit permissions that will always be set on a file created by Samba. +

force directory mode

+ This parameter specifies a set of UNIX mode bit permissions that will always be set on a directory created by Samba. +

force directory security mode

+ Controls UNIX permission bits modified when a Windows NT client is manipulating UNIX permissions on a directory +

force security mode

+ Controls UNIX permission bits modified when a Windows NT client manipulates UNIX permissions. +

hide unreadable

+ Prevents clients from seeing the existence of files that cannot be read. +

hide unwriteable files

+ Prevents clients from seeing the existence of files that cannot be written to. Unwriteable directories are shown as usual. +

nt acl support

+ This parameter controls whether smbd will attempt to map UNIX permissions into Windows NT access control lists. +

security mask

+ Controls UNIX permission bits modified when a Windows NT client is manipulating the UNIX permissions on a file. +

Miscellaneous Controls

+ The following are documented because of the prevalence of administrators creating inadvertant barriers to file + access by not understanding the full implications of smb.conf file settings. +

Table 13.4. Other Controls

Control ParameterDescription - Action - Notes
case sensitive, default case, short preserve case

+ This means that all file name lookup will be done in a case sensitive manner. + Files will be created with the precise filename Samba received from the MS Windows client. +

csc policy

+ Client Side Caching Policy - parallels MS Windows client side file caching capabilities. +

dont descend

+ Allows to specify a comma-delimited list of directories that the server should always show as empty. +

dos filetime resolution

+ This option is mainly used as a compatibility option for Visual C++ when used against Samba shares. +

dos filetimes

+ DOS and Windows allows users to change file time stamps if they can write to the file. POSIX semantics prevent this. + This options allows DOS and Windows behaviour. +

fake oplocks

+ Oplocks are the way that SMB clients get permission from a server to locally cache file operations. If a server grants an + oplock then the client is free to assume that it is the only one accessing the file and it will aggressively cache file data. +

hide dot files, hide files, veto files

+ Note: MS Windows Explorer allows over-ride of files marked as hidden so they will still be visible. +

read only

+ If this parameter is yes, then users of a service may not create or modify files in the service's directory. +

veto files

+ List of files and directories that are neither visible nor accessible. +

Access Controls on Shares

+ This section deals with how to configure Samba per share access control restrictions. + By default, Samba sets no restrictions on the share itself. Restrictions on the share itself + can be set on MS Windows NT4/200x/XP shares. This can be a very effective way to limit who can + connect to a share. In the absence of specific restrictions the default setting is to allow + the global user Everyone Full Control (ie: Full control, Change and Read). +

+ At this time Samba does NOT provide a tool for configuring access control setting on the Share + itself. Samba does have the capacity to store and act on access control settings, but the only + way to create those settings is to use either the NT4 Server Manager or the Windows 200x MMC for + Computer Management. +

+ Samba stores the per share access control settings in a file called share_info.tdb. + The location of this file on your system will depend on how samba was compiled. The default location + for Samba's tdb files is under /usr/local/samba/var. If the tdbdump + utility has been compiled and installed on your system, then you can examine the contents of this file + by: tdbdump share_info.tdb. +

Share Permissions Management

+ The best tool for the task is platform dependant. Choose the best tool for your environment. +

Windows NT4 Workstation/Server

+ The tool you need to use to manage share permissions on a Samba server is the NT Server Manager. + Server Manager is shipped with Windows NT4 Server products but not with Windows NT4 Workstation. + You can obtain the NT Server Manager for MS Windows NT4 Workstation from Microsoft - see details below. +

Procedure 13.1. Instructions

  1. + Launch the NT4 Server Manager, click on the Samba server you want to administer, then from the menu + select Computer, then click on the Shared Directories entry. +

  2. + Now click on the share that you wish to manage, then click on the Properties tab, next click on + the Permissions tab. Now you can add or change access control settings as you wish. +

Windows 200x/XP

+ On MS Windows NT4/200x/XP system access control lists on the share itself are set using native + tools, usually from filemanager. For example, in Windows 200x: right click on the shared folder, + then select Sharing, then click on Permissions. The default + Windows NT4/200x permission allows Everyone Full Control on the Share. +

+ MS Windows 200x and later all comes with a tool called the Computer Management snap-in for the + Microsoft Management Console (MMC). This tool is located by clicking on Control Panel -> + Administrative Tools -> Computer Management. +

Procedure 13.2. Instructions

  1. + After launching the MMC with the Computer Management snap-in, click on the menu item Action, + select Connect to another computer. If you are not logged onto a domain you will be prompted + to enter a domain login user identifier and a password. This will authenticate you to the domain. + If you where already logged in with administrative privilege this step is not offered. +

  2. + If the Samba server is not shown in the Select Computer box, then type in the name of the target + Samba server in the field Name:. Now click on the [+] next to + System Tools, then on the [+] next to Shared Folders in the + left panel. +

  3. + Now in the right panel, double-click on the share you wish to set access control permissions on. + Then click on the tab Share Permissions. It is now possible to add access control entities + to the shared folder. Do NOT forget to set what type of access (full control, change, read) you + wish to assign for each entry. +

Warning

+ Be careful. If you take away all permissions from the Everyone user without removing this user + then effectively no user will be able to access the share. This is a result of what is known as + ACL precedence. ie: Everyone with no access means that MaryK who is part of the group + Everyone will have no access even if this user is given explicit full control access. +

MS Windows Access Control Lists and Unix Interoperability

Managing UNIX permissions Using NT Security Dialogs

Windows NT clients can use their native security settings + dialog box to view and modify the underlying UNIX permissions.

Note that this ability is careful not to compromise + the security of the UNIX host Samba is running on, and + still obeys all the file permission rules that a Samba + administrator can set.

Note

+ All access to Unix/Linux system file via Samba is controlled at + the operating system file access control level. When trying to + figure out file access problems it is vitally important to identify + the identity of the Windows user as it is presented by Samba at + the point of file access. This can best be determined from the + Samba log files. +

Viewing File Security on a Samba Share

From an NT4/2000/XP client, single-click with the right + mouse button on any file or directory in a Samba mounted + drive letter or UNC path. When the menu pops-up, click + on the Properties entry at the bottom of + the menu. This brings up the file properties dialog + box. Click on the tab Security and you + will see three buttons, Permissions, + Auditing, and Ownership. + The Auditing button will cause either + an error message A requested privilege is not held + by the client to appear if the user is not the + NT Administrator, or a dialog which is intended to allow an + Administrator to add auditing requirements to a file if the + user is logged on as the NT Administrator. This dialog is + non-functional with a Samba share at this time, as the only + useful button, the Add button will not currently + allow a list of users to be seen.

Viewing file ownership

Clicking on the Ownership button + brings up a dialog box telling you who owns the given file. The + owner name will be of the form :

"SERVER\user (Long name)"

Where SERVER is the NetBIOS name of + the Samba server, user is the user name of + the UNIX user who owns the file, and (Long name) + is the descriptive string identifying the user (normally found in the + GECOS field of the UNIX password database). Click on the + Close button to remove this dialog.

If the parameter nt acl support + is set to false then the file owner will + be shown as the NT user "Everyone".

The Take Ownership button will not allow + you to change the ownership of this file to yourself (clicking on + it will display a dialog box complaining that the user you are + currently logged onto the NT client cannot be found). The reason + for this is that changing the ownership of a file is a privileged + operation in UNIX, available only to the root + user. As clicking on this button causes NT to attempt to change + the ownership of a file to the current user logged into the NT + client this will not work with Samba at this time.

There is an NT chown command that will work with Samba + and allow a user with Administrator privilege connected + to a Samba server as root to change the ownership of + files on both a local NTFS filesystem or remote mounted NTFS + or Samba drive. This is available as part of the Seclib + NT security library written by Jeremy Allison of + the Samba Team, available from the main Samba ftp site.

Viewing File or Directory Permissions

The third button is the Permissions + button. Clicking on this brings up a dialog box that shows both + the permissions and the UNIX owner of the file or directory. + The owner is displayed in the form :

"SERVER\ + user + (Long name)"

Where SERVER is the NetBIOS name of + the Samba server, user is the user name of + the UNIX user who owns the file, and (Long name) + is the descriptive string identifying the user (normally found in the + GECOS field of the UNIX password database).

If the parameter nt acl support + is set to false then the file owner will + be shown as the NT user "Everyone" and the + permissions will be shown as NT "Full Control".

The permissions field is displayed differently for files + and directories, so I'll describe the way file permissions + are displayed first.

File Permissions

The standard UNIX user/group/world triplet and + the corresponding "read", "write", "execute" permissions + triplets are mapped by Samba into a three element NT ACL + with the 'r', 'w', and 'x' bits mapped into the corresponding + NT permissions. The UNIX world permissions are mapped into + the global NT group Everyone, followed + by the list of permissions allowed for UNIX world. The UNIX + owner and group permissions are displayed as an NT + user icon and an NT local + group icon respectively followed by the list + of permissions allowed for the UNIX user and group.

As many UNIX permission sets don't map into common + NT names such as read, + "change" or full control then + usually the permissions will be prefixed by the words + "Special Access" in the NT display list.

But what happens if the file has no permissions allowed + for a particular UNIX user group or world component ? In order + to allow "no permissions" to be seen and modified then Samba + overloads the NT "Take Ownership" ACL attribute + (which has no meaning in UNIX) and reports a component with + no permissions as having the NT "O" bit set. + This was chosen of course to make it look like a zero, meaning + zero permissions. More details on the decision behind this will + be given below.

Directory Permissions

Directories on an NT NTFS file system have two + different sets of permissions. The first set of permissions + is the ACL set on the directory itself, this is usually displayed + in the first set of parentheses in the normal "RW" + NT style. This first set of permissions is created by Samba in + exactly the same way as normal file permissions are, described + above, and is displayed in the same way.

The second set of directory permissions has no real meaning + in the UNIX permissions world and represents the + inherited permissions that any file created within + this directory would inherit.

Samba synthesises these inherited permissions for NT by + returning as an NT ACL the UNIX permission mode that a new file + created by Samba on this share would receive.

Modifying file or directory permissions

Modifying file and directory permissions is as simple + as changing the displayed permissions in the dialog box, and + clicking the OK button. However, there are + limitations that a user needs to be aware of, and also interactions + with the standard Samba permission masks and mapping of DOS + attributes that need to also be taken into account.

If the parameter nt acl support + is set to false then any attempt to set + security permissions will fail with an "Access Denied" + message.

The first thing to note is that the "Add" + button will not return a list of users in Samba (it will give + an error message of The remote procedure call failed + and did not execute). This means that you can only + manipulate the current user/group/world permissions listed in + the dialog box. This actually works quite well as these are the + only permissions that UNIX actually has.

If a permission triplet (either user, group, or world) + is removed from the list of permissions in the NT dialog box, + then when the OK button is pressed it will + be applied as "no permissions" on the UNIX side. If you then + view the permissions again the "no permissions" entry will appear + as the NT "O" flag, as described above. This + allows you to add permissions back to a file or directory once + you have removed them from a triplet component.

As UNIX supports only the "r", "w" and "x" bits of + an NT ACL then if other NT security attributes such as "Delete + access" are selected then they will be ignored when applied on + the Samba server.

When setting permissions on a directory the second + set of permissions (in the second set of parentheses) is + by default applied to all files within that directory. If this + is not what you want you must uncheck the Replace + permissions on existing files checkbox in the NT + dialog before clicking OK.

If you wish to remove all permissions from a + user/group/world component then you may either highlight the + component and click the Remove button, + or set the component to only have the special Take + Ownership permission (displayed as "O" + ) highlighted.

Interaction with the standard Samba create mask + parameters

There are four parameters + to control interaction with the standard Samba create mask parameters. + These are : + +

security mask
force security mode
directory security mask
force directory security mode

+ +

Once a user clicks OK to apply the + permissions Samba maps the given permissions into a user/group/world + r/w/x triplet set, and then will check the changed permissions for a + file against the bits set in the + security mask parameter. Any bits that + were changed that are not set to '1' in this parameter are left alone + in the file permissions.

Essentially, zero bits in the security mask + mask may be treated as a set of bits the user is not + allowed to change, and one bits are those the user is allowed to change. +

If not set explicitly this parameter is set to the same value as + the create mask + parameter. To allow a user to modify all the + user/group/world permissions on a file, set this parameter + to 0777.

Next Samba checks the changed permissions for a file against + the bits set in the + force security mode parameter. Any bits + that were changed that correspond to bits set to '1' in this parameter + are forced to be set.

Essentially, bits set in the force security mode + parameter may be treated as a set of bits that, when + modifying security on a file, the user has always set to be 'on'.

If not set explicitly this parameter is set to the same value + as the force + create mode parameter. + To allow a user to modify all the user/group/world permissions on a file + with no restrictions set this parameter to 000.

The security mask and force + security mode parameters are applied to the change + request in that order.

For a directory Samba will perform the same operations as + described above for a file except using the parameter + directory security mask instead of security + mask, and force directory security mode + parameter instead of force security mode + .

The directory security mask parameter + by default is set to the same value as the directory mask + parameter and the force directory security + mode parameter by default is set to the same value as + the force directory mode parameter.

In this way Samba enforces the permission restrictions that + an administrator can set on a Samba share, whilst still allowing users + to modify the permission bits within that restriction.

If you want to set up a share that allows users full control + in modifying the permission bits on their files and directories and + doesn't force any particular bits to be set 'on', then set the following + parameters in the smb.conf file in that share specific section : +

security mask = 0777
force security mode = 0
directory security mask = 0777
force directory security mode = 0

Interaction with the standard Samba file attribute + mapping

Samba maps some of the DOS attribute bits (such as "read + only") into the UNIX permissions of a file. This means there can + be a conflict between the permission bits set via the security + dialog and the permission bits set by the file attribute mapping. +

One way this can show up is if a file has no UNIX read access + for the owner it will show up as "read only" in the standard + file attributes tabbed dialog. Unfortunately this dialog is + the same one that contains the security info in another tab.

What this can mean is that if the owner changes the permissions + to allow themselves read access using the security dialog, clicks + OK to get back to the standard attributes tab + dialog, and then clicks OK on that dialog, then + NT will set the file permissions back to read-only (as that is what + the attributes still say in the dialog). This means that after setting + permissions and clicking OK to get back to the + attributes dialog you should always hit Cancel + rather than OK to ensure that your changes + are not overridden.

Common Errors

+File, Directory and Share access problems are very common on the mailing list. The following +are examples taken from the mailing list in recent times. +

Users can not write to a public share

+ “ + We are facing some troubles with file / directory permissions. I can log on the domain as admin user(root), + and there's a public share, on which everyone needs to have permission to create / modify files, but only + root can change the file, no one else can. We need to constantly go to server to + chgrp -R users * and chown -R nobody * to allow others users to change the file. + ” +

+ There are many ways to solve this problem, here are a few hints: +

Procedure 13.3. Example Solution:

  1. + Go to the top of the directory that is shared +

  2. + Set the ownership to what ever public owner and group you want +

    +			find 'directory_name' -type d -exec chown user.group {}\;
    +			find 'directory_name' -type d -exec chmod 6775 'directory_name'
    +			find 'directory_name' -type f -exec chmod 0775 {} \;
    +			find 'directory_name' -type f -exec chown user.group {}\;
    +			

    +

    Note

    + The above will set the 'sticky bit' on all directories. Read your + Unix/Linux man page on what that does. It causes the OS to assign + to all files created in the directories the ownership of the + directory. +

  3. + + Directory is: /foodbar +

    +				$ chown jack.engr /foodbar
    +			

    +

    Note

    +

    This is the same as doing:

    +

    +					$ chown jack /foodbar
    +					$ chgrp engr /foodbar
    +				

    +

  4. Now do: + +

    +				$ chmod 6775 /foodbar
    +				$ ls -al /foodbar/..
    +			

    + +

    You should see: +

    +				drwsrwsr-x  2 jack  engr    48 2003-02-04 09:55 foodbar
    +			

    +

  5. Now do: +

    +				$ su - jill
    +				$ cd /foodbar
    +				$ touch Afile
    +				$ ls -al
    +			

    +

    + You should see that the file Afile created by Jill will have ownership + and permissions of Jack, as follows: +

    +		-rw-r--r--  1 jack  engr     0 2003-02-04 09:57 Afile
    +		

    +

  6. + Now in your smb.conf for the share add: +

    +		force create mode = 0775
    +		force directory mode = 6775
    +		

    +

    Note

    + The above are only needed if your users are not members of the group + you have used. ie: Within the OS do not have write permission on the directory. +

    + An alternative is to set in the smb.conf entry for the share: +

    +		force user = jack
    +		force group = engr
    +		

    +

I have set force user and Samba still makes root the owner of all the files + I touch!

+ When you have a user in 'admin users', Samba will always do file operations for + this user as root, even if force user has been set. +

-- cgit