bagaimana menemukan file dengan izin yang salah di unix?

14

Saya mencari cara untuk mencari direktori atau direktori dan mendaftar semua file yang memiliki izin salah untuk direktori publik.

sal
sumber

Jawaban:

15

Pertanyaan Anda bisa dinyatakan lebih jelas, esp. apa maksudmu dengan "izin yang salah" untuk direktori publik?

Dengan asumsi Anda ingin direktori menjadi 755 dan file biasa menjadi 644, saya akan melakukannya seperti ini:

$ find \! -perm 644 -type f -o \! -perm 755 -type d
0x89
sumber
Apa yang harus dilakukan? Apakah ini berarti sesuatu seperti ATAU?
3
Dalam kasus khusus ini, RTFM bukan jawaban yang sangat membantu mengingat beberapa tingkat pengaturan penemuan; itu sangat membingungkan ketika mencoba mencari tahu apakah -o dikaitkan dengan -type atau -perm.
Lighthart
Saya membiarkan diri saya tidak setuju. Pertanyaannya adalah "Apa yang harus dilakukan? Apakah ini berarti sesuatu seperti ATAU?". Ini dijawab dengan sempurna oleh halaman manual: "expr1 -o expr2 Atau; expr2 tidak dievaluasi jika expr1 benar."
0x89
Btw. pertanyaan Anda tentang presedensi ditangani dalam paragraf yang sama dari halaman manual: "OPERATOR Terdaftar dalam urutan mengurangi prioritas" dan "Dua ekspresi berturut-turut diambil untuk digabungkan dengan tersirat 'dan'; exp2 tidak dievaluasi jika exp1 adalah Salah.").
0x89
5

Ini berhasil untuk saya

find .  \! -perm +755

The \!bendera berarti tidak dan -permmenggunakan opsi pilihan chmod biasa

sal
sumber
3

Semuanya tergantung pada apa yang Anda anggap 'izin salah'. man find membantu Anda dengan menetapkan cara bagaimana Anda dapat mencari file / direktori dengan izin yang diberikan:

   -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.

asdmin
sumber