Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm looking for a way to search a directory or directories and list all the files that have the wrong permissions for a public directory.

share|improve this question
up vote 10 down vote accepted

Your question could be stated more clearly, esp. what do you mean with "the wrong permissions" for a public directory?

Assuming that you want directories to be 755 and ordinary files to be 644, I'd do it like this:

$ find \! -perm 644 -type f -o \! -perm 755 -type d
share|improve this answer
    
What does the -o do? Does it mean something like OR? – user154925 Jan 17 '13 at 17:07
2  
RTFM ;-): linuxcommand.org/man_pages/find1.html – 0x89 Nov 17 '14 at 17:30
2  
In this particular case RTFM is not a very helpful answer given the multiple levels of finds settings; it is particularly confusing trying to figure out if the -o is associated with -type or -perm. – Lighthart Nov 9 '15 at 23:27
    
I allow myself to disagree. The question was "What does the -o do? Does it mean something like OR?". This is perfectly answered by the man page: " expr1 -o expr2 Or; expr2 is not evaluated if expr1 is true." – 0x89 Nov 10 '15 at 8:17
    
Btw. your question about precedence is handled in the same paragraph of the man page: "OPERATORS Listed in order of decreasing precedence" and "Two expressions in a row are taken to be joined with an implied 'and'; expr2 is not evaluated if expr1 is false."). – 0x89 Nov 10 '15 at 8:24

This worked for me

find .  \! -perm +755

The \! flag means not and the -perm option uses the normal chmod options

share|improve this answer

Everything depends on what do you consider 'incorrect permission'. man find helps you by defining the way how you can look for files/dirs with given permission:

   -perm -mode
          All of the permission bits mode are set for the file.  Symbolic modes are
          accepted in this form, and this is usually the way in which would want to
          use them.  You must specify ‘u’, ‘g’ or ‘o’ if you use a  symbolic  mode.
          See the EXAMPLES section for some illustrative examples.

   -perm /mode
          Any of the permission bits mode are set for the file.  Symbolic modes are
          accepted in this form.  You must specify ‘u’, ‘g’ or ‘o’  if  you  use  a
          symbolic  mode.  See the EXAMPLES section for some illustrative examples.
          If no permission bits in mode are set, this test matches  any  file  (the
          idea here is to be consistent with the behaviour of -perm -000).

   -perm +mode
          Deprecated,  old  way  of  searching for files with any of the permission
          bits in mode set.  You should use -perm /mode instead. Trying to use  the
          ‘+’  syntax with symbolic modes will yield surprising results.  For exam‐
          ple, ‘+u+x’ is a valid symbolic mode (equivalent to +u,+x, i.e. 0111) and
          will  therefore  not be evaluated as -perm +mode but instead as the exact
          mode specifier -perm mode and so it matches files with exact  permissions
          0111  instead of files with any execute bit set.  If you found this para‐
          graph confusing, you’re not alone - just use -perm /mode.  This  form  of
          the -perm test is deprecated because the POSIX specification requires the
          interpretation of a leading ‘+’ as being part of a symbolic mode, and  so
          we switched to using ‘/’ instead.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.