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
あなたの質問について:
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で実行される悪意のあるプログラムは、メインプログラムの実行が終了した後、ユーザーの端末デバイスに保持されるバックグラウンドプロセスをフォークする可能性があります。このオプションを使用すると、それが不可能になります。このフラグはデフォルトではオフです。
これがお役に立てば幸いです!
あなたが直面している問題は、root
umask
のデフォルト値にあるようです。
バージョン14.04で作成された権限は、0022
のumask
に等しく、これはroot
のデフォルトのumask
値でなければなりません
# umask
0022
16.04
のデフォルトのumask
は0027
のようで、root
プロンプトで実行することで確認できます。
umask
デフォルトの動作を変更するには、root
起動スクリプト(profile
、login
など)を確認し、この値が設定されている場所を見つけて、変更する必要があります。 :
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/