Linux権限とsudo
6034 ワード
Linuxのrwx権限
Linuxのファイル権限表示は、実は簡単です.いずれのファイルについても、
ls -l filename
を使用してtaの権限シーケンスを表示できます.例:-rwxr-xr-x 1 wgjak 47 wgjak 47 221287 11月16 2010 aliedit.sh
パーミッション・シーケンスの1番目は、ファイル・タイプです.
次に、3組のrwx、rは読み取り可能、wは書き込み可能、xは実行可能、-は権限がないことを示す.
例えば、ファイル属性が754である場合、すなわち(rwxr−xr−).
chmodを使用してファイルの権限を変更できます.基本的な使い方は以下の通りです.
<!-- lang: shell -->
chmod XXXX filename
ここで、Xは8進数であり、1位は一般的に省略される.なぜなら、2進数に変換するとrwxにちょうど対応し、例えば7(111)はrwxを表し、5(101)はr-xを表すからである.ディレクトリの場合、-Rオプションを使用してサブディレクトリとサブファイルのプロパティを再帰的に変更できます.また、XXXXはオペレータ+シンボルを使用してフォーマットを変更することもできます.
文字列'rwxXstugo':ユーザーに新しい属性を選択
Linuxの特殊な権限
chmodのman Pageから,rwxの3つの基本権限のほかにs,tの2つの権限があることが分かった.展開は、setuid、setgid、stick bit(貼り付けビット)
例:/etc/passwdファイルで、ユーザーパスワードを格納するファイルです.
-rw-r–r–1 root root 2090 12月23 20:29/etc/passwd
これはユーザーパスワードを格納するファイルであることは知っていますが、権限はrootで読み書きでき、他のユーザーは読み取り専用です.このファイルを読み書きするpasswdのプロパティは次のとおりです.
-rwsr-xr-x 1 root root 47032 2月17 2014/usr/bin/passwd
3番目のアルファベットsはsetuidを表し、権利の実行を表し、つまり普通のユーザーがpasswdを実行するときにrootとしてpasswdを実行します.tty 1で普通のユーザーでpasswdを起動し、tty 2で
ps -aux | grep passwd
を実行すると、次の結果が得られます.root 20174 0.0 0.0 64680 1584 pts/23 S+ 23:37 0:00 passwd
実行者はrootです.setpidという権限は,一般にパスワード修正のような敏感さに対応するために要求される権限が高いが,多くの一般ユーザが実行しなければならない操作に対応するために誕生した.
setgidは同じ理屈で、ユーザーグループになったにすぎない.
stick bit(t)属性は一時的にディレクトリにのみ使用され、主に/tmpディレクトリであり、tmpはrootに属し、属性はdrwxrwxrwtであるが、誰もがファイルを書くことができる.ただし、各ユーザは他のユーザのファイルを削除できません(rootを除く).簡単に言えば、ユーザーがこの属性を持つディレクトリの下でファイルまたはディレクトリを作成すると、自分とrootだけが削除する権利があります.
setuidとsudo
Linuxではrootユーザの権利が大きすぎるため,誤操作による取り返しのつかない損失がしばしば発生する.root権限を制限するために,通常のユーザに必要なときだけroot権限を取得していくつかの操作を実行させ,通常のユーザ権限で動作させることを提案する.そこでsudoツールが誕生しました.sudoの簡単な説明:
sudoが1980年前後に書かれる前に,一般ユーザ管理システムはsuを利用してスーパーユーザに切り替える方式であった.しかしsuを使用する欠点の1つは,スーパーユーザのパスワードを先に通知しなければならないことである.sudoは,一般ユーザがスーパーユーザのパスワードを知る必要がなく,権限を得ることができる.まず、スーパーユーザーは、一般ユーザーの名前、実行可能な特定のコマンド、どのユーザーまたはユーザーグループのアイデンティティに従って実行するかなどの情報を、特殊なファイル(通常は/etc/sudoers)に登録し、そのユーザーに対する権限を完了する(この場合、そのユーザーを「sudoer」と呼ぶ).一般ユーザが特殊な権限を取得する必要がある場合、コマンドの前に「sudo」を付けると、sudoはそのユーザ自身のパスワード(端末機の前にあるユーザ本人を確認する)を尋ね、回答するとシステムはそのコマンドのプロセスをスーパーユーザの権限で実行する.その後の期間(デフォルトは5分、/etc/sudoersでカスタマイズ可能)では、sudoを使用してパスワードを再入力する必要はありません.スーパーユーザーのパスワードが不要であるため、一部のUnixシステムでは、Ubuntu、Mac OS Xなどの管理アカウントとしてスーパーユーザーに代わって一般ユーザーをsudoを利用することもある.
sudoの原理はsetuid属性を利用することです.
-rwsr-xr-x 1 root root 155008 2月11 2014/usr/bin/sudo
sudoのワークフローは大体以下の通りです.
sudoの構成と使用:
sudoのプロファイルの編集方法はcrontabと似ていますが、sudoersは直接編集するのではなく、visudoで編集します.Visudoはcrontab-eと同様に、コピー(/etc/sudoer.tmp)をコピーし、コピーを保存してから/etc/sudoerを更新します.
sudoersの構文:
1つ目はユーザー名で、sudoを使用できるユーザーを示します.2つ目はログイン者のホスト名で,許容可能なリモートログインのホスト名を示す.ALLは、rootが任意のホストからrootとしてネイティブにログインし、sudoを使用できることを示します.3つ目はsudoによって切り替えられるアイデンティティを示し、ALLはsudoによって任意のアイデンティティを切り替えてコマンドを実行できることを示す.4つ目は実行可能なコマンドを表し、ALLはすべてのコマンドを表し、特にコマンドを宣言する場合は絶対パスを使用する必要があり、パラメータとワイルドカードもサポートされています.異なるコマンドは','分割を使用します.鳥の兄の本の例:
myuser1 ALL=(root) !/usr/bin/passwd,/usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root # ! 実行できないことを示す(ブラックリスト)
sudoを使用できるユーザーを追加する場合は、別の行を実行します.例えばwgjak 47 ALL=(ALL)ALL
このような構成の化は、sudoユーザグループ内のユーザがsudoを使用できる限り可能である.
二、パスワードなし操作sudoのデフォルトはパスワードが必要で、インタラクティブな入力しかサポートされていません.もちろんexpectや有名なパイプでこのプロセスをシミュレートすることができます.しかし、パスワードの明文をスクリプトに書くのは安全ではありません(ソニーはこのように死んでいます)、すべての操作ではなく、いくつかの操作に対してパスワードを免除することを望んでいます.sudoerはNOPASWDキーワードをサポートしています.たとえば、サービス操作を実行するときにパスワードを設定します.
username ALL=(ALL) NOPASSWD:/sbin/service
これにより、足どりの中でsudoでサービスを実行するにはパスワードは必要ありません.
三、ホスト、ユーザー、コマンド管理(alias)管理を便利にするために、ユーザー、ホスト名、コマンドを別名にパッケージ化することができ、管理を便利にする:鳥兄の例を変更する
User_Alias ADMPW = pro1, pro2, pro3, myuser1, myuser2 Cmnd_Alias ADMPWCOM = !/usr/bin/passwd,/usr/bin/passwd [A-Za-z], !/usr/bin/passwd root Host_Alias THO = .threebody.com ADMPW THO=(root) ADMPWCOM
Linuxは大文字と小文字を厳格に区別しているので、冒頭のアルファベットの大文字に注意してください.