私が理解しようとしているsudo
文書Debian Wiki。これを行うには、次の2つの例を使用します。しかし、私はそれらの違いを理解していません。ルートのALL:ALL
()オプションと比較して、グループsudoに()があるのはなぜですかALL
?コマンドの各部分が何をするのですか?
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
#Default rule for root.
root ALL=(ALL) ALL
答え1
説明する%sudo ALL=(ALL:ALL) ALL
:-
%sudo
- これグループ(名称sudo
)は許可されていますsudo
。1つ目は、すべての端末またはホスト(すべてのシステム)で
ALL
許可されることを意味します。sudo
(ALL:ALL)
コマンドを次のように実行できることを示します。(User:Group)
- 最後に、
All
すべてのコマンドを実行できることを意味します。
説明するroot ALL=(ALL) ALL
root
- これユーザー(root)は、すべてのユーザーで、すべてのシステムですべての操作を許可します。
説明(ALL:ALL)
:(次に実行(User:Group)
)
最初の「ALL」は、ユーザー(の場合
root
)またはグループのメンバー(の場合%admin
)がコマンドを実行できることを意味します。すべてのユーザーと同様に2番目の「ALL」は、ユーザー(例
root
)またはグループメンバー(例%admin
)がコマンドを実行できることを意味します。すべてのグループと同様に。
使用している場合(ALL)
は、別のグループで実行することはできません(ALL:ALL)
。すべてのユーザーとすべてのグループで実行。
答え2
ALL:ALL
の違いは、利用可能なユーザーとグループの組み合わせALL
です。RunAs
たとえば、
# sudo -u muru -g git id
Sorry, user root is not allowed to execute '/usr/bin/id' as muru:git on muru-laptop.
# sudo -u muru -g muru id
uid=1000(muru) gid=1000(muru) groups=1000(muru),10(wheel),21(locate),102(polkitd),190(systemd-journal)
$ sudo -u muru -g git id
uid=1000(muru) gid=997(git) groups=997(git),10(wheel),21(locate),102(polkitd),190(systemd-journal),1000(muru)
$ id
uid=1000(muru) gid=1000(muru) groups=1000(muru),10(wheel),21(locate),102(polkitd),190(systemd-journal)
最初の2つのコマンドはroot
通常のユーザーとして実行され、3番目と4番目のコマンドは(ALL:ALL)
。
ALL
の場合のみ、-g
ユーザーのデフォルトグループを指定するためにのみ使用できます。これは-g
まったく指定しないよりも優れていません。ALL:ALL
有効なユーザーとグループの組み合わせを提供するために使用できます。
なぜこのような(人為的な)制限があるのかわかりません。