LinuxQuestions.org
Review your favorite Linux distribution.
Go Back   LinuxQuestions.org > Forums > Linux Forums > Linux - Newbie
User Name
Password
Linux - Newbie This Linux forum is for members that are new to Linux.
Just starting out and have a question? If it is not in the man pages or the how-to's this is the place!

Notices

Reply
 
Search this Thread
Old 09-23-2009, 01:20 PM   #1
bridrod
Member
 
Registered: Aug 2009
Distribution: SLES, openSUSE
Posts: 39

Rep: Reputation: 15
Replacing owner of Directories


I have an interesting task in front of me. For reasons not important right now, I had to change the UID from a user from 105 to 700. Now, as expected all files and dirs are showing with 105. I need to replace all dirs/files with the new UID. How can I do that?

I tried using LS and FIND and grep the output file. The idea I had was to then use CHOWN but an easier way gotta be out there. There are thousands of files and dirs...

-ROD
 
Old 09-23-2009, 01:31 PM   #2
kirukan
Senior Member
 
Registered: Jun 2008
Location: Eelam
Distribution: Redhat, Solaris, Suse
Posts: 1,230

Rep: Reputation: 132Reputation: 132
If you want to do the change to all file then why do you want to use find, grep, ls

Ex:-
chown apache:apache *
this will change user and group as apache within a directory where you are
 
Old 09-23-2009, 02:43 PM   #3
bridrod
Member
 
Registered: Aug 2009
Distribution: SLES, openSUSE
Posts: 39

Original Poster
Rep: Reputation: 15
Quote:
Originally Posted by kirukan View Post
If you want to do the change to all file then why do you want to use find, grep, ls

Ex:-
chown apache:apache *
this will change user and group as apache within a directory where you are
My problem is that I have other users (including root) with rights. If I do the above, I will be replacing those too... To avoid that, I would have to re-issue the command multiple times.

-Rod
 
Old 09-23-2009, 05:31 PM   #4
lutusp
Member
 
Registered: Sep 2009
Distribution: Fedora
Posts: 835

Rep: Reputation: 101Reputation: 101
Quote:
Originally Posted by bridrod View Post
My problem is that I have other users (including root) with rights. If I do the above, I will be replacing those too... To avoid that, I would have to re-issue the command multiple times.

-Rod
You are not being clear. Do you want to change the permissions of directories only, files only, or both? Do you want to change ownership only of specific files belonging to a particular user?

Here's how to do the second (filter specific user, change ownership of only those files):

Code:
find $path -type f -user "oldusername" | while read filepath
do
   chown newuser.newgroup $filepath 
done
This will change ownership of files owned by "oldusername" to newuser.newgroup in the specified path and all subdirectories. This has to be run as root, so be careful.

Last edited by lutusp; 09-23-2009 at 05:32 PM.
 
Old 09-23-2009, 06:58 PM   #5
AnanthaP
Member
 
Registered: Jul 2004
Location: Chennai, India
Distribution: UBUNTU 5.10 since Jul-18,2006 on Intel 820 DC
Posts: 627

Rep: Reputation: 137Reputation: 137
I would go with the find command. In find, by default, the depth parameter is on, ie find traverses all sub directries by default.

find /(start from root) ... -exec

So all you got to do is to:
(1) Test it in a sub directory with about two levels.
(2) Once done, backup the file system and run the single find command.

End
 
Old 09-23-2009, 07:19 PM   #6
chrism01
Guru
 
Registered: Aug 2004
Location: Sydney
Distribution: Centos 6.5, Centos 5.10
Posts: 16,267

Rep: Reputation: 2028Reputation: 2028Reputation: 2028Reputation: 2028Reputation: 2028Reputation: 2028Reputation: 2028Reputation: 2028Reputation: 2028Reputation: 2028Reputation: 2028
Something like

Code:
for file in $(find / -uid 105 -print 2>/dev/null)
do
    echo chown 700 $file
done
Test with the echo cmd there, remove echo if you are happy. Needs to run as root.
 
Old 09-23-2009, 07:28 PM   #7
lutusp
Member
 
Registered: Sep 2009
Distribution: Fedora
Posts: 835

Rep: Reputation: 101Reputation: 101
Quote:
Originally Posted by chrism01 View Post
Something like

Code:
for file in $(find / -uid 105 -print 2>/dev/null)
do
    echo chown 700 $file
done
Test with the echo cmd there, remove echo if you are happy. Needs to run as root.
This fails for paths with whitespace. It also enters places no one should go, like /proc (which will include processes owned by most users), and tries to chown things located there. Newbies need to be warned of the risks in basing a search at '/'.
 
Old 09-23-2009, 08:17 PM   #8
AlucardZero
Senior Member
 
Registered: May 2006
Location: USA
Distribution: Debian
Posts: 4,642

Rep: Reputation: 523Reputation: 523Reputation: 523Reputation: 523Reputation: 523Reputation: 523
Does no one know -exec?

Code:
find / -uid 105 -exec chown 700 '{}' \;
 
Old 09-24-2009, 07:51 AM   #9
kirukan
Senior Member
 
Registered: Jun 2008
Location: Eelam
Distribution: Redhat, Solaris, Suse
Posts: 1,230

Rep: Reputation: 132Reputation: 132
Quote:
change the UID from a user from 105 to 700. Now, as expected all files and dirs are showing with 105. I need to replace all dirs/files with the new UID.
Is this mean you need to change username only for all file and directory(within in a specific location)?
Am i correct?

#chown 700 *
is this not correct?
 
Old 09-24-2009, 08:23 AM   #10
bridrod
Member
 
Registered: Aug 2009
Distribution: SLES, openSUSE
Posts: 39

Original Poster
Rep: Reputation: 15
Quote:
Originally Posted by lutusp View Post
You are not being clear. Do you want to change the permissions of directories only, files only, or both? Do you want to change ownership only of specific files belonging to a particular user?

Here's how to do the second (filter specific user, change ownership of only those files):

Code:
find $path -type f -user "oldusername" | while read filepath
do
   chown newuser.newgroup $filepath 
done
This will change ownership of files owned by "oldusername" to newuser.newgroup in the specified path and all subdirectories. This has to be run as root, so be careful.
Thank you guys for all the input. I will be testing the different suggestions.

Yes, i need to filter specific user, change the ownership of files AND directories without affecting the other users.
 
Old 09-24-2009, 03:33 PM   #11
bridrod
Member
 
Registered: Aug 2009
Distribution: SLES, openSUSE
Posts: 39

Original Poster
Rep: Reputation: 15
Thumbs up

Quote:
Originally Posted by bridrod View Post
Thank you guys for all the input. I will be testing the different suggestions.

Yes, i need to filter specific user, change the ownership of files AND directories without affecting the other users.
Just an update for you guys. I created a 4 level path. Changed rights to folders, files and both.

Both suggestions worked like a charm:
--------------------------------------------
script #1:

find / -uid 666 -exec chown root '{}' \;
--------------------------------------------
script #2:

for file in $(find / -uid 666 -print 2>/dev/null)
do
chown root $file
done
--------------------------------------------

Thank you very much!
 
  


Reply

Tags
owner, ownership, replace


Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Owner of a directory different than file owner problems Guardian-Mage Linux - Server 4 04-24-2009 10:26 AM
How do I copy over directories to directories with the same name without overwriting? SentralOrigin Linux - General 1 03-14-2009 01:09 AM
creating directories with owner/permissions that stick amg_ Linux - Newbie 4 11-28-2007 12:11 AM
Searching multiple directories and sub directories for a file jeep99899 Linux - Newbie 2 10-13-2005 12:23 PM
Copying linked files, replacing directories in bash scripts? ta0kira Programming 2 10-10-2004 04:46 AM


All times are GMT -5. The time now is 10:33 PM.

Main Menu
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
identi.ca: @linuxquestions
Facebook: linuxquestions Google+: linuxquestions
Open Source Consulting | Domain Registration