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... :cry: -ROD |
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 |
Quote:
-Rod |
Quote:
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 |
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 |
Something like
Code:
for file in $(find / -uid 105 -print 2>/dev/null) |
Quote:
|
Does no one know -exec?
Code:
find / -uid 105 -exec chown 700 '{}' \; |
Quote:
Am i correct? #chown 700 * is this not correct? |
Quote:
Yes, i need to filter specific user, change the ownership of files AND directories without affecting the other users. |
Quote:
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! |
All times are GMT -5. The time now is 07:43 AM. |