>>> For some reason I thought SFTP would provide access control but now
>>> I'm thinking it's just like SSH in that access control is based on
>>> file ownership and permissions?  If that's the case, can anyone think
>>> of a better way to control remote access to my files than chmod/chown?
>>
>> ACLs.
>>
>
> We went this route once too. We had a developer ($USER) who was supposed
> to have access to just one subdirectory of /var/www.
>
> I took notes, assuming /etc, /root, and /usr have correct permissions:
>
>   1. A group named ssh_users was created. The $USER account was
>      added as a member of this group.
>
>   2. The ssh_users group was granted the ability to traverse /var/www:
>
>      setfacl -m group:ssh_users:--x /var/www
>
>      This is necessary to allow the $USER user to chdir into its
>      home directory in /var/www/$HIS_HOME_DIR.
>
>   3. A default ACL was set on /var/www which will apply to each new
>      subdirectory created within it.
>
>      setfacl -d --set u::rwx,g::rx,g:ssh_users:-,o::rx /var/www
>
>      This prevents members of the ssh_users group from traversing any
>      newly-created subdirectories of /var/www.
>
>   4. The default ACL described above was applied manually to each of
>      the existing subdirectories of /var/www:
>
>      setfacl -m g:ssh_users:- /var/www/*
>
>      Warning: At the time of writing, there were no regular files in
>      /var/www, so the above command makes sense. Don't blindly run it
>      again without checking.
>
>   5. The $USER user was granted full read/write/traverse permissions
>      on its home directory and all subdirectories/files contained
>      therein:
>
>      setfacl -R -m u:$USER:rwx /var/www/$HIS_HOME_DIR
>
>   6. At this point, we need to change the default ACLs of every
>      directory within /var/www/$HIS_HOME_DIR. This is so that, when
>      $USER creates a new file/directory somewhere beneath its home
>      directory, it has access to the newly-created file or directory:
>
>      setfacl -d -R --set u::rwx,u:$USER:rwx,g::rx,o::rx /var/www
>      /$HIS_HOME_DIR
>
>      This command sets the default ACL recursively, and is smart
>      enough to only apply the command to directories.

Thanks for that.  I haven't thought it all the way through, but if
Unix ownership and permissions aren't granular enough and subversion's
path-based authorization won't work, I will need to use ACLs.  I think
both subversion's path-based authorization and Unix
ownership/permissions would be simpler to implement and maintain than
ACLs so I'm hoping it doesn't come to that.

- Grant

Reply via email to