I need to automatically assign every new user that gets created a certain folder
Sales in their home directory. (e.g. when you add the user
tim automatically gets a folder named
Sales in his home directory)
How can I do this?
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It only takes a minute to sign up.Sign up to join this community
All new users' home directories are copies of
/etc/skel when the user gets created through any method that automatically creates a home directory.
If you are sure that you need the
Sales folder on every new user account's home directory, you can just create the folder in
Make sure the owner and permission of everything you create or modify in there is correct.
Set the permissions you want, they will be copied to the new user's home directory as they are. Usually you take
644 (octal representation) or
rw-r--r-- (string representation). You can modify this with one the commands below. Make sure everything is owner-readable and all directories are owner-executable (otherwise the owner can't list or access their content).
sudo chmod 644 /etc/skel/FILE_OR_DIRECTORYto set permissions for a single file or directory using the octal representation.
sudo chmod u=rw,g=r,o=r /etc/skel/FILE_OR_DIRECTORYto set permissions for a single file or directory using a syntax similar to the string representation.
sudo chmod -R 644 /etc/skelto recursively set permissions for all files and directories using the octal representation.
sudo chmod -R u=rw,g=r,o=r /etc/skelto recursively set permissions for all files and directoriesusing a syntax similar to the string representation.
The owner should be
root. You change this recursively on all files and folders in
/etc/skel with the command below:
sudo chown -R root: /etc/skel
A relatively simple alternative would be to create a starter in
/etc/xdg/autostart, that will create a folder in (any) user's home directory on log in, only if the folder does not exist yet.
Create a file with the following lines:
[Desktop Entry] Name=Create Sales Exec=/bin/bash -c "mkdir ~/Sales" Type=Application
Save it as
sales.desktop (the extension is essential)
Run the command:
sudo cp /path/to/sales.desktop /etc/xdg/autostart
This will create a folder
~/Sales in the home directory of any user once he or she logs in (only if it doesn't exist).
To run a command on startup (log in actually) locally, for one user only, we can put a
.desktop file in
If we do the same, but store the
.desktop file in
/etc/xdg/autostart, the command runs locally as well, but similarly for any user on log in.
If we make the
.desktop file run the command:
/bin/bash -c "mkdir ~/Sales"
we make sure the folder is created, even re- created on the next log in if the user might remove it manually. At the same time, if the folder exists, the command will not be executed, so existing folders will not be overwritten.