Obtenha o proprietário / usuário de um cronjob

2

No Linux (Mint / Ubuntu), posso criar cronjobs para cada usuário individualmente. Existe alguma maneira, eu posso descobrir o nome do usuário contra quem o cronjob está sendo executado. Eu quero obter o nome de usuário do proprietário do cronjob em um script de shell que vai cron'd ...

    
por 8thperson 27.05.2016 / 05:08

2 respostas

1

Obtenha o proprietário do script

Em qualquer sistema com como stat que seja compatível com o moderno GNU stat , o ID do usuário do script é:

stat -c %u "$0"

O nome de usuário do proprietário do script é:

stat -c %U "$0"

Em geral, no linux, stat -c %U file retorna o proprietário de file . Substituímos em $0 porque essa variável geralmente contém o nome do arquivo de script atual.

Obtendo um ID de usuário efetivo do usuário que está executando o script

Para obter o número de ID de usuário efetivo do usuário que está executando um script, use id -u :

$ id -u
1001

Para salvá-lo em uma variável

$ uid=$(id -u)
$ echo "$uid"
1001

Se o script estiver sendo executado em bash , o ID do usuário efetivo será armazenado na variável do shell EUID :

$ echo $EUID
1001

Em muitos sistemas, o padrão é que os cronjobs sejam executados em dash , que não suporta EUID . Assim, é mais seguro e confiável usar id -u como mostrado acima.

Use a opção -n além da opção -u para obter o nome do usuário:

$ id -un
john1024
    
por 27.05.2016 / 05:14
1

man 5 crontab sugere que um cronjob localizará o nome de usuário do usuário proprietário na variável de ambiente LOGNAME :

Several environment variables are set up automatically by the cron(8) daemon. SHELL is set to /bin/sh, and LOGNAME and HOME are set from the /etc/passwd line of the crontab´s owner. HOME and SHELL can be overridden by settings in the crontab; LOGNAME can not.

(Note: the LOGNAME variable is sometimes called USER on BSD systems and is also automatically set).

    
por 27.05.2016 / 09:38

Tags