LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Security (https://www.linuxquestions.org/questions/linux-security-4/)
-   -   set file permissions for 100 directories & its files (https://www.linuxquestions.org/questions/linux-security-4/set-file-permissions-for-100-directories-and-its-files-274181/)

cevjr 01-05-2005 10:49 AM

set file permissions for 100 directories & its files
 
I have a directory called /Data
It has many directories; probably 100. Inside those dir I have executable files - They shouldn't be executable.
For example lets just say /Data has 2 directories calles /folder1 and /folder2

I would like to be at /Data and issue one command to give the
subsequent directories rwxr xr x and its
subsequent files rw r r

Can this be done or do I have to go to each of the 100 directories and
chmod -x * ??

apolinsky 01-05-2005 11:02 AM

I have always found its easier dealing with numbers when modifying permissions. Read is 4, write 2, and execute 1. This means the rx is 5 and rw is 6. With that in mind, it would issue a chmod -R 644 * That would (recursively) from the attach point change permissions to rw,r,r.

cevjr 01-05-2005 11:18 AM

I've tried that already. It doesnt work becasue:

it takes away the x permission on all the directories, making it impossible for other users to read the file.
Directory
drw-r--r-- 2 Smith users 3208 Mar 13 2004 temp/
ITS CONTENTS
-rw-r--r-- 1 Smith users 153454 Aug 5 2002 sample

I need other users to be able to look into the directory and read the files.

Fle>< 01-05-2005 05:31 PM

I have asked myself this question - but I still have not found a solution.
With
Code:

ls
you are able to list the files and (sub)directories in a directory.
With
Code:

ls -d
or
Code:

ls --directory
you should
Quote:

list directory entries instead of contents
(from ls --help).
I think this means that you can see all (sub)directories in the choosen directory. Further I think if you can find this out, it's simple to write a short script doing what you want.
The problem is: ls -d shows me only the directory itself with one dot. nothing more.

Cerbere 01-06-2005 03:11 AM

1) cd /Data

2) chmod -R 755 *

3) find ./ -type f | xargs chmod 644

Step 2 is just to be sure your directories are correct.

Step 3 will find any 'regular' files (see 'man find' for other types), and then make them non-executable.

Enjoy!
--- Cerbere

jschiwal 01-06-2005 07:56 AM

Another way of doing it is using the -exec option of the find command.

1) cd /Data
2) find ./ -type d -exec chmod 755 {} \;
3) find ./ -type f -exec chmod 644 {} \;

If only a handful of files and directories need changing, you can add the -perm test to return files with execute permissions for Groups and Others.

---

If this directory is truly a data directory, and its own partition, consider also using the -noexec option when mounting. You the owner won't be able to execute files from there either, but this is added insurance.

cevjr 01-06-2005 10:23 AM

thanks for your replies.


All times are GMT -5. The time now is 09:25 PM.