web-dev-qa-db-ja.com

14.04から16.04の間にSudoでインストールする際の権限の問題

16.04でパッケージをインストールする際に、多くの権限の問題に遭遇しました。 Sudoを使用してインストールしますが、通常のユーザーはパッケージ内のファイルを読み取ることができません。

そこで、簡単なテストを実行しました。14.04でSudoを使用してディレクトリを作成し、権限を確認しました。

Sudo mkdir test_14_04
ls -ld test_14_04/ 
#returns: drwxr-xr-x 2 root root 4096 Jan  3 05:57 test_14_04/

その後、16.04で同じことをしましたが、代わりに次のようになります:

#returns: drwxr-x--- 2 root root 4096 Jan  3 06:00 test_16_04/

ご覧のように、デフォルトの許可は、14.04ではワールドリードですが、16.04ではそうではありません。したがって、これはSudo- installedパッケージのアクセス許可に問題がある可能性があります。

どうすれば修正できますか?

PS:
私の16.04 Ubuntuバージョンは次のとおりです。

Distributor ID: Ubuntu
Description:    Ubuntu 16.04.3 LTS
Release:        16.04
Codename:       xenial

私の14.04バージョンは次のとおりです。

Distributor ID: Ubuntu
Description:    Ubuntu 14.04.5 LTS
Release:        14.04
Codename:       trusty
4
kingaj

あなたの質問について:

Sudo visudoを実行し、次の行を追加します。

`Defaults umask=0022`
`Defaults umask_override`

umask_override (sudoersのマンページを参照)

設定されている場合、Sudoは、変更せずにsudoersによって指定されたumaskを設定します。これにより、sudoersでユーザー自身のumaskよりも寛容なumaskを指定することが可能になり、履歴動作に一致します。 umask_overrideが設定されていない場合、Sudoはumaskをユーザーのumaskとsudoersで指定されたものの和集合に設定します。このフラグはデフォルトではオフです。設定すると、I/Oロギングがなくなっていなくても、sudoはコマンドを疑似ptyで実行します。 Sudoで実行される悪意のあるプログラムは、メインプログラムの実行が終了した後、ユーザーの端末デバイスに保持されるバックグラウンドプロセスをフォークする可能性があります。このオプションを使用すると、それが不可能になります。このフラグはデフォルトではオフです。

これがお役に立てば幸いです!

1
galoget

あなたが直面している問題は、rootumaskのデフォルト値にあるようです。

バージョン14.04で作成された権限は、0022umaskに等しく、これはrootのデフォルトのumask値でなければなりません

# umask
0022

16.04のデフォルトのumask0027のようで、rootプロンプトで実行することで確認できます。

umask

デフォルトの動作を変更するには、root起動スクリプト(profileloginなど)を確認し、この値が設定されている場所を見つけて、変更する必要があります。 :

umask 0022

の代わりに:

umask 0027

詳細は linux umask値の使用法を理解する にあります。


例:

root@ubuntu:~# umask
0022
root@ubuntu:~# mkdir /tmp/z123
root@ubuntu:~# ll -ld /tmp/z123
drwxr-xr-x 2 root root 4096 Jan  3 14:51 /tmp/z123/
root@ubuntu:~# umask 0027
root@ubuntu:~# umask
0027
root@ubuntu:~# mkdir /tmp/a123
root@ubuntu:~# ll -ld /tmp/a123
drwxr-x--- 2 root root 4096 Jan  3 14:54 /tmp/a123/
6
Yaron