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

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

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 действительно необходимы (чтобы обычные пользователи могли управлять системными журналами, например), используйте «белый список»: ваш скрипт должен управлять только файлами, которые соответствуют определенным критериям. В противном случае, кто знает, какой важный ресурс вы забудете защитить?

  • Косая черта, не обнаруженная в команде «grep»
  • рыба: пробел в псевдониме
  • Сценарий резервного копирования Rsync для нескольких серверов
  • Не удается открыть терминал из-за настроек
  • Различные двоичные файлы сна на Mac (Darwin) и в Linux. Как правильно обрабатывать различия?
  • Батарея в URxvt?
  • Массив Декартово произведение в bash
  • Другие альтернативы команды столбца
  • Что означает эта линия Баша?
  • если команда find -exec
  • Почему ошибки OS X `install` на перенаправленном входе, когда одна и та же версия` install` на linux работает нормально?
  • Добавление ведущих символов перед строкой с использованием printf или echo
  • Interesting Posts

    Как найти репозиторий yum

    Как хранить почту только для определенных пользователей с помощью постфикса?

    VNC-сервер: отключить локальный экран при подключении удаленного клиента VNC

    Убейте и возобновите резервное копирование rsnapshot

    DDNS (dynamic-dns) и добавление имени хоста на устройство (чтобы быть видимым в сети)

    Предотвращение отображения хрома / Chrome в определенных каталогах

    Сортировка списка и отдельных элементов с запятыми вместо строк новой строки

    Скопировать новейший файл в каталог через SSH

    Выполните две команды, если первая не сработает

    Не удалось загрузить изображение Raspbian

    Ubuntu – загрузка черного экрана с фиолетовой рамкой

    Linux netconsole с мостовым интерфейсом

    Как установить Linux на компьютер без видеокарты?

    Команда, работающая от CLI, но не от скрипта

    Невозможно «набить» команды на созданный «экран» сразу после создания

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