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

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

  • Bash не читает .bashrc, если только не запущен вручную
  • Есть что-то вроде «split ()» JavaScript в оболочке?
  • Экспортировать командную строку без оценки вывода?
  • Выполнять вторую команду в цепочке как другой пользователь
  • Как получить символ в заданной позиции строки в сценарии оболочки?
  • Что означает «rm hashed»?
  • Переменная среды $ PATH, по-видимому, не распознается
  • Git alias multi-commands с; а также &&
  • 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 - лучшая ОС в мире.