I'm using CentOS 6 and I'm trying to move a file from USER A to USER B but I keep getting permission denied.
What do I need to edit to allow to me to put files from one user's directory into another's?
You need the rights to read the file from user A, and to write the file to user B's location.
There are several ways to archive this:
As user A (assumed she can read her own files) get WRITE permission to user B's location. This means being in a group which is allowed to w to the destination directory and which is allowed to access (x) the directory path to the destination.
cd /home/user/A/ ls -l testfile -rw------- 1 userA users 18 Dec 31 16:31 testfile
Notice the r. User A is allowed to read her own file
cp testfile /home/userB/testdir
User A will need to traverse to the folders /home, /home/userB and /home/userB/testdir. All of these need to be 'x' for her. She wants to write to the folder 'testdir' and thus she also needs 'w' on that folder.
That 'w' can be in the user, group or other part. But if you set it in 'other' then every user can write to it. Thus you usually make shared files or shared folders part of a group. (e.g. in /etc/group create a group 'sales' and add both users to that).
As user B: (which is assumed to be able to write in his own folder).
Get read permission on the file in userA's folder and the right to traverse there. (same as in 1).
You now can copy the file to your own location. You can not delete it from user A's folder unless you also have the rights to do that. So you can copy but not move.
As a user with uid 0 (usually root, toor, admin):
mv /home/userA/testfile /home/userB/
Notice that the file is still owned by userA, and that user B might not have the rights to work on the file. You can correct this with
Without the heavy guns, as often done by two users:
As UserA: cp testfile /tmp/ As userB: cp /tmp/testfile ~ As userA: rm /tmp/testfile
This is not the most secure way (other can see the file while it is in /tmp), but I think that this is the most common solution.
If you want to do this often then I strongly suggest creating a group and giving all users in that group rights to a shared location.
Not asked, but a solution like this is often practical (shown with music, but it might as well be sales reports).
vim /etc/group and add a line like this:
shared_music:*:3141:userA,UserB,UserC. This will create a group called shared_music, give it a number, and select which users will belong to that group.
Then make folder owned by that group.
cd /usr/local/ md our_ultimate_shared_music_collection chgrp shared_music our_ultimate_shared_music_collection chmod g+rwx our_ultimate_shared_music_collection chmod g+S our_ultimate_shared_music_collection
Make a folder in a sane location. Set the group and then allow all people in that group to read, write and cd into that folder. The last command (make group setuid) means that newly created subfiles inherit the same group as the directory, and newly created subdirectories inherit the set-group-ID bit of the parent directory. This prevent userA from writing files to that directory which USerB (or anyone but A) could not deleted or rename.
You need permissions to access that directory. Both write and execute on the directory in question and write in any files your overwriting.
The easiest way is to
sudo mv /dir1/file /dir2/file but you should probably read Quick and Dirty Guide to Linux File Permissions first.
Assuming that at least one of the users have
sudo privileges, execute the following while logged in as that user (i.e., with sudo privileges):
sudo mv /home/userA/file_name /home/userB
It will prompt you for the corresponding user's password.
Otherwise, login as the root, and execute the above without the "sudo" at the beginning.