语境:在登录时 尝试su a -c task
以用户身份执行命令时(在 Ubuntu 16.04上),我收到以下错误消息:dummy
sudo su
root
root@DESKTOP-344ab:/home/dummy# su dummy -c task
[task next] Taskwarrior does not have the correct permissions for '/home/dummy/.task/pending.data'. root@DESKTOP-344ab:/home/dummy#
而当我第一次用 * 切换root
回用户su dummy
然后执行时,task
它运行良好。 *当dummy
帐户登录时,在用户可以执行任何操作之前,会自动执行以下.bashrc
文件:/home/dummy/.bashrc
sudo -i service cron start
#get root
if [ ! -f /home/a/maintenance/getRootBool ]; then
echo "Getting sudo rights now."
touch /home/a/maintenance/getRootBool
sudo -s
fi
# remove got root boolean for next time you boot up Unix
sudo rm /home/a/maintenance/getRootBool
#Start cron service
#sudo -i service cron start
#Startup taskwarrior
export TASKDDATA=/var/taskd
cd $TASKDDATA
sudo taskd config --data $TASKDDATA
taskdctl start
task sync
这导致终端左下角出现以下“用户描述”:root@DESKTOP-344ab:~#
。这让我有点困惑,因为它仍然说root
即使当我cd ~
它去时/home/dummy
,这似乎已经获得root
许可,但仍然在虚拟中account
。
所以我认为sudo -s
脚本.bashrc
将用户的权限提升dummy
为root。
问题:dummy
执行命令时如何提高帐户的权限:su dummy -c task
作为用户dummy
来自root
?
尝试:
su dummy -c sudo task
,这表明 的用法sudo
不正确,这意味着我没有使用有效的语法。info sudo
检查脚本sudo -s
中的确切功能.bashrc
,因为这似乎是权限提升命令,同时仍保留在dummy
用户中。说的是:
-s, --shell 运行由 SHELL 环境变量指定的 shell(如果已设置)或由调用用户的密码数据库条目指定的 shell。如果指定了命令,则会通过 shell 的 -c 选项将其传递到 shell 执行。如果未指定命令,则执行交互式 shell。
它主要似乎影响shell命令,目前我不确定是否task
是shell命令,如果是,如何sudo -s
提升权限。这让我怀疑我的假设,即它可能确实是sudo -s
权限提升命令。我正在进一步研究这一点。
此外:
作为对以下评论的回应,该.bashrc
文件的输出是:
* Starting periodic command scheduler cron [ OK ]
Getting sudo rights now.
touch: cannot touch '/home/dummy/maintenance/getRootBool': Permission denied
* Starting periodic command scheduler cron [ OK ]
Getting sudo rights now.
* Starting periodic command scheduler cron [ OK ]
Configuration read from /var/taskd/config
Variable Value
------------- --------------------------
ca.cert /var/taskd/ca.cert.pem
client.cert /var/taskd/client.cert.pem
client.key /var/taskd/client.key.pem
confirmation 1
debug.tls 3
extensions /usr/libexec/taskd
ip.log on
log /var/taskd/taskd.log
pid.file /var/taskd/taskd.pid
queue.size 10
request.limit 1048576
root /var/taskd
server 0.0.0.0:53583
server.cert /var/taskd/server.cert.pem
server.crl /var/taskd/server.crl.pem
server.key /var/taskd/server.key.pem
trust strict
verbose 1
/usr/bin/taskdctl start: daemon started
Syncing with myserver.com:53583
Sync successful. No changes.
root@DESKTOP-344ab:/var/taskd# test