コンテキスト:ログインしている間(Ubuntu 16.04)、ユーザーとしてコマンドを実行しようとすると、su a -c task
次のエラーメッセージが表示されます。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環境変数(設定されている場合)で指定されたシェル、または呼び出し元のユーザーのパスワードデータベースエントリで指定されたシェルを実行します。コマンドを指定すると、シェルの -c オプションで実行できるようにシェルに渡されます。コマンドを指定しないと、対話型シェルが実行されます。
主にシェルコマンドに影響を与えるようです。現時点では、これがtask
シェルコマンドであるか、そうであれば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