Как я выполняю команду на входе в систему для пользователя системы без домашней папки и никакого персонального .bashrc файла?

-exec предикат, который выполняет команду (не оболочка) и оценивает к TRUE или FALSE на основе результата команды (нулевой или ненулевой статус выхода).

Так:

find . -iname '*.csv' -exec grep foo {} \; -print

распечатал бы путь к файлу если grep находит нечто в файле. Вместо -print можно использовать другого -exec предикат или любой другой предикат

find . -iname '*.csv' -exec grep foo {} \; -exec echo {} \;

См. также ! и -o найдите операторы для отрицания и или.

С другой стороны, можно запустить оболочку как:

find . -iname '*.csv' -exec sh -c '
   grep foo "$1" && echo "$1"' sh {} \;

Или избегать необходимости запускать оболочку для каждого файла:

find . -iname '*.csv' -exec sh -c '
  for i do
    grep foo "$i" && echo "$i"
  done' sh {} +
5
14.10.2013, 07:01
2 ответа

Можно добавить файл к системе /etc/profiile.d каталог, который включает a if/then оператор для каждого из пользователей, которых Вы хотите выполнить virtualenv для.

Пример

Скажите, что я создаю файл как это, /etc/profile.d/me.sh.

if [ "$USER" == "saml" ]; then
  touch /tmp/samsfile
fi

Сделайте это исполняемым файлом:

$ chmod +x /etc/profile.d/me.sh

И затем вход в систему как saml, использование su:

$ su saml

Если мы проверяем, чтобы видеть, был ли временный файл создан, это было:

$ ls -l /tmp/samsfile 
-rw-rw-r-- 1 saml saml 0 Oct 14 00:31 /tmp/samsfile
8
27.01.2020, 20:35

Если все, что Вы хотите сделать, определяют переменные среды, можно вставить их ~/.environment в корневом каталоге пользователей. Можно вставить более сложные отрывки оболочки ~/.profile.

Все учетные записи пользователей действительно имеют корневой каталог, даже если он не принадлежит им. В то время как у Вас могут быть учетные записи, корневой каталог которых не существует, нет большого количества точки к выполнению этого. Можно использовать единственный каталог, принадлежавший корню как корневой каталог этих пользователей, если Вам нравится.

Другая возможность выполнить команду во время входа в систему состояла бы в том, чтобы добавить pam_exec к стеку PAM. Но остерегайтесь этого, это довольно хитро для использования правильно, потому что прогоны программы как исходный пользователь, или как корень, и не как целевой пользователь, и это работает в среде, выбранной исходным пользователем, таким образом, трудно заставить его защитить, если это работает как корень.

2
27.01.2020, 20:35

Теги

Похожие вопросы