получение владельца папки с командой if

Я хочу, чтобы люди могли случайно удалять критические файлы системы в моем сценарии, кто-нибудь знает, как использовать инструкцию, чтобы узнать, есть ли владелец папки?

  • Как запустить команду со скрытым паролем
  • find: отсутствующий аргумент `-exec '
  • Как напечатать имя переменной вместе со значением?
  • как добавить параметр в bash alias без пробела между ними?
  • bash script autobeautifiying с использованием declare -f
  • Как получить чистую среду в оболочке ksh?
  • Сравните главы двух файлов в bash
  • Как выполнить команду во всех подпапках
  • Как мне ожидать «echo -e»? \ С»?
  • сравнить массив в bash
  • Как я могу упростить этот сценарий bash, который печатает количество файлов в рабочем каталоге?
  • Правильный синтаксис для использования awk в сочетании с другой командой внутри xargs sh -c
  • 2 Solutions collect form web for “получение владельца папки с командой if”

    find . -prune -user "$(id -u)" 

    Будет печать . если текущий каталог принадлежит вам.

    Вы можете:

     find . -prune -user "$(id -u)" -exec some command \; 

    Или:

     if [ -n "$(find . -prune -user "$(id -u)")" ]; then some command fi 

    Чтобы выполнить some command только если текущий каталог принадлежит вам.

    Чтобы получить идентификатор владельца текущего каталога, POSIXly, вы можете выполнить:

     ownerid=$(LC_ALL=C ls -lnd . | awk '{print $3}') 

    Или, с установкой stat zsh :

     stat -H stat . && ownerid=$stat[uid] 

    Или с GNU find :

     ownerid=$(find . -prune -printf %U) 

    Или с GNU stat :

     ownerid=$(stat -c %u .) 

    Или, со stat BSD:

     ownerid=$(stat -f %u .) 

    Как только у вас есть этот $ownerid , вы можете сравнить его с эффективным идентификатором пользователя процесса вашей оболочки, который вы можете получить с помощью "$(id -u)" . Как правило, лучше работать с идентификаторами пользователей, чем имена пользователей, поскольку их количество может быть более одного имени пользователя на идентификатор пользователя в базе данных учетной записи (и это избавляет от необходимости запрашивать эту пользовательскую базу данных).

    Чего ждать? Чтобы люди не могли удалять критические системные файлы, не позволяйте им входить в систему под учетной записью root и не создавать свой скрипт setuid.

    Если вы пытаетесь помочь людям управлять файлами, которые им не принадлежат, узнайте о разрешениях групп и используйте подходящую настройку. (Я не могу сказать больше, потому что не знаю, что вы делаете.)

    Если права root действительно необходимы (чтобы обычные пользователи могли управлять системными журналами, например), используйте «белый список»: ваш скрипт должен управлять только файлами, которые соответствуют определенным критериям. В противном случае, кто знает, какой важный ресурс вы забудете защитить?

    Linux и Unix - лучшая ОС в мире.