web-dev-qa-db-ja.com

新しいFedoraパッケージマネージャーは無許可のインストールを許可しますか?

Fedora 22 にアップグレードしました。以前のバージョンからの最大の変更点は、yumパッケージマネージャーが dnf に置き換えられたことです。私が気付いた変更の1つは、まだインストールされていない共通パッケージからのコマンドを実行しようとすると、ターミナルがそのパッケージをインストールするように要求することです。例えば:

[wbarlow@wbarlow-thinkpad src]$ ar
bash: ar: command not found...
Install package 'binutils' to provide command 'ar'? [N/y] y


 * Waiting in queue... 
 * Waiting in queue... 
 * Waiting for authentication... 
 * Waiting in queue... 
 * Downloading packages... 
 * Requesting data... 
 * Testing changes... 
 * Installing packages... 
Usage: ar [emulation options] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [--plugin <name>] [member-name] [count] archive-file file...
       ar -M [<mri-script]
 commands:
  d            - delete file(s) from the archive
  m[ab]        - move file(s) in the archive
  p            - print file(s) found in the archive
  q[f]         - quick append file(s) to the archive
  r[ab][f][u]  - replace existing or insert new file(s) into the archive
  s            - act as ranlib
  t            - display contents of archive
  x[o]         - extract file(s) from the archive
 command specific modifiers:
  [a]          - put file(s) after [member-name]
  [b]          - put file(s) before [member-name] (same as [i])
  [D]          - use zero for timestamps and uids/gids (default)
  [U]          - use actual timestamps and uids/gids
  [N]          - use instance [count] of name
  [f]          - truncate inserted file names
  [P]          - use full path names when matching
  [o]          - preserve original dates
  [u]          - only replace files that are newer than current archive contents
 generic modifiers:
  [c]          - do not warn if the library had to be created
  [s]          - create an archive index (cf. ranlib)
  [S]          - do not build a symbol table
  [T]          - make a thin archive
  [v]          - be verbose
  [V]          - display the version number
  @<file>      - read options from <file>
  --target=BFDNAME - specify the target object format as BFDNAME
 optional:
  --plugin <p> - load the specified plugin
 emulation options: 
  No emulation specific options
ar: supported targets: elf64-x86-64 elf32-i386 elf32-x86-64 a.out-i386-linux pei-i386 pei-x86-64 elf64-l1om elf64-k1om elf64-little elf64-big elf32-little elf32-big plugin srec symbolsrec verilog tekhex binary ihex

このプロセス全体で、パスワードを要求されることはありませんでしたが、dnf install binutilsを実行するには、昇格されたアカウントを使用する必要がありました。上記のインストールとdnf installインストールの違いは何ですか?なぜ1つは昇格したアクセス許可を必要とし、もう1つは必要としないのですか?これはセキュリティホールですか?

7
Woodrow Barlow

この質問は時々訪問や賛成投票を受け取り続けますが、いくつかの回答には真の回答の一部が含まれていることがわかりました。そのため、私はそれをすべてまとめたwiki回答を作成しています。同様の質問は、Unix.SEで 質問と回答 になっています。

RH#1225788 によると、これは意図された動作です:

(wheelグループの)管理ユーザーがパスワードを入力せずにソフトウェアをインストールできるのは、仕様によるものです。背景情報については、 https://pagure.io/fesco/issue/1115#comment-27002 およびチケット内の説明を参照してください。

この動作は、/usr/share/polkit-1/rules.d/org.freedesktop.packagekit.rulesの次の行をコメント化することで変更できます。

polkit.addRule(function(action, subject) {
    if (action.id == "org.freedesktop.packagekit.package-install" &&
        subject.active == true && subject.local == true &&
        subject.isInGroup("wheel")) {
            return polkit.Result.YES;
    }
});
1
Woodrow Barlow

これを再現することをお勧めします。ほとんどの場合、すでに認証済みのセッションがあり、キーリングが原因でシステムがそれを記憶していました。テストする優れた方法は、再起動直後です。

aditya@20:54:20:~$ nano
bash: nano: command not found...
Install package 'nano' to provide command 'nano'? [N/y] y


 * Waiting in queue... 
 * Loading list of packages.... 
 * Downloading details about the software sources.... 
 * Loading list of packages.... 
 * Waiting in queue... 
 * Waiting for authentication... Failed to install packages: Failed to obtain authentication.

免責事項:私はFedoraのユーザーであり、寄稿者です。

3
Aditya Patawari

最初のユーザーを作成するとき(Fedoraのインストール)、特別なチェックボックス(「admin」など)を設定することを選択できます。設定されている場合、作成されたユーザーには、いくつかのpolkit-rules(man polkit)によっていくつかの特別な許可が与えられます。

これは、単にユーザーを「ホイール」グループに追加することによって行われると思います。したがって、その動作を変更したい場合は、「system-config-users」を試して、グループ「wheel」を追加/削除してください。

1
xop