ファイルへのアクセスを制御する
Linux ファイルのアクセス許可
権限 | ファイルへの影響 | ディレクトリへの影響 |
---|---|---|
r | ファイルの内容を読み取る | ディレクトリの内容を一覧表示する |
w | ファイルの内容を変更する | 削除ディレクトリファイルを作成する |
バツ | コマンドとして実行 | ディレクトリは現在の作業ディレクトリに変更できます |
コマンドラインからのファイルシステム権限の管理
ファイルとディレクトリのアクセス許可を変更する
chmod
chmod WhoWhatWhich file|directory
- 誰 (u、g、o、a はユーザー、グループ、その他、すべてを表します)
- 何を(+ - = 追加、削除、設定を表します)
- Which(r,w,x は読み取りおよび書き込みの実行を表します)
#对file.txt 中组和其他删除读取权限
[root@servera ~]# ll
total 4
-rw-------. 1 root root 1078 Jul 15 10:29 anaconda-ks.cfg
-rw-r--r--. 1 root root 0 Jul 18 02:51 file.txt
[root@servera ~]# chmod go-r file.txt
[root@servera ~]# ll
total 4
-rw-------. 1 root root 1078 Jul 15 10:29 anaconda-ks.cfg
-rw-------. 1 root root 0 Jul 18 02:51 file.txt
#对file.txt添加执行权限
[root@servera ~]# chmod a+x file.txt
[root@servera ~]# ll
total 4
-rw-------. 1 root root 1078 Jul 15 10:29 anaconda-ks.cfg
-rwx--x--x. 1 root root 0 Jul 18 02:51 file.txt
権限を数値で変更する
chmod ### file|dir
「#」文字は数字を表し、各数字はアクセス許可のアクセス レベル (ユーザー、グループ、その他) を表します。
権限 | 対応する番号 |
---|---|
r | 4 |
w | 2 |
バツ | 1 |
#对用户设置读写权限,对组设置读取权限,对file其他设置读取权限
[root@servera ~]# chmod 644 file
[root@servera ~]# ll
total 0
-rw-r--r--. 1 root root 0 Jul 18 02:59 file
#对用户设置读写执行权限,对组设置读执行权限,对file其他不设权限
[root@servera ~]# chmod 750 file
[root@servera ~]# ll
total 0
-rwxr-x---. 1 root root 0 Jul 18 02:59 file
ファイルとディレクトリのユーザーとグループの所有権を変更する
権限を変更する
chown -R はディレクトリ ツリー全体の所有権を再帰的に変更します
#更改file所有权为usr1
[root@servera ~]# ll
total 0
-rwxr-x---. 1 root root 0 Jul 18 02:59 file
[root@servera ~]# chown usr1 file
[root@servera ~]# ll
total 0
-rwxr-x---. 1 usr1 root 0 Jul 18 02:59 file
#将test_dir所有文件所有权变成usr1
[root@servera ~]# ll test_dir/
total 0
-rw-r--r--. 1 root root 0 Jul 18 03:09 a
-rw-r--r--. 1 root root 0 Jul 18 03:09 b
-rw-r--r--. 1 root root 0 Jul 18 03:09 c
-rw-r--r--. 1 root root 0 Jul 18 03:09 d
[root@servera ~]# chown -R usr1 test_dir/
[root@servera ~]# ll test_dir/
total 0
-rw-r--r--. 1 usr1 root 0 Jul 18 03:09 a
-rw-r--r--. 1 usr1 root 0 Jul 18 03:09 b
-rw-r--r--. 1 usr1 root 0 Jul 18 03:09 c
-rw-r--r--. 1 usr1 root 0 Jul 18 03:09 d
グループとユーザーを変更する
[root@servera ~]# ll | grep test_dir
drwxr-xr-x. 2 usr1 root 42 Jul 18 03:09 test_dir
[root@servera ~]# chown :admins test_dir
[root@servera ~]# ll | grep test_dir
drwxr-xr-x. 2 usr1 admins 42 Jul 18 03:09 test_dir
[root@servera ~]# chown root:root test_dir
[root@servera ~]# ll | grep test_dir
drwxr-xr-x. 2 root root 42 Jul 18 03:09 test_dir
デフォルトの権限とファイルアクセスを管理する
特別な権限 | ファイルへの影響 | ディレクトリへの影響 | ||
---|---|---|---|---|
u+s | ファイルを実行したユーザーではなく、ファイルを所有するユーザーとしてファイルを実行します。 | なし | ||
g+s | ファイルを所有するグループとしてファイルを実行する | ディレクトリ用に最近作成されたファイルには、そのディレクトリのグループ所有者と一致するようにグループ一致所有者が設定されています。 | ||
o+t | 無効 | ディレクトリへの書き込みアクセス権を持つユーザーは、自分が所有するファイルのみを削除でき、他のユーザーが所有するファイルを削除したり、強制的に保存したりすることはできません。 |
[root@servera ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 33424 Feb 7 2022 /usr/bin/passwd
長いリストでは、setuid 権限は小文字の s (通常は x) で識別されます。所有者に実行権限がない場合は、S に置き換えられます。
[root@servera ~]# ls -ld /run/log/journal
drwxr-sr-x. 3 root systemd-journal 60 Jul 15 10:54 /run/log/journal
ディレクトリに対する setgid 権限は、ディレクトリ内に作成されたファイルが、作成ユーザーを継承するのではなく、ディレクトリのグループの所有権を継承することを意味します。
特別な権限を設定する
setuid=u+s 4
setgid=g+s 2
sticky=o+t 1
#在dir目录添加setgid位
[root@servera ~]# chmod g+s dir/
[root@servera ~]# ll
total 0
drwxr-sr-x. 2 root root 6 Jul 18 05:02 dir
#为dir设置setgid位并为用户和组添加读写执行权限 其他不具备权限
[root@servera ~]# chmod 2770 dir/
[root@servera ~]# ll
total 0
drwxrws---. 2 root root 6 Jul 18 05:02 dir
デフォルトのファイル権限
新しいディレクトリを作成するには、システムは最初に 8 進数のアクセス許可 0777 (drwxrwxrwx) を割り当てます。
通常のファイルを作成すると、システムは 8 進数のアクセス許可 0666 (-rw-rw-rw-) を割り当てます。
シェル セッションは、umask を設定して、初期設定権限をさらに制限します。これは、プロセスによって作成された新しいファイルおよびディレクトリの権限をクリアするために使用される 8 ビット マスクです。umask にビットが設定されている場合、対応するファイルのアクセス許可がクリアされます。
[root@servera ~]# umask
0022
Bash シェル ユーザー システムのデフォルトの umask 値は次のとおりです。/etc/profile
/etc/bashrc
[root@servera ~]# umask
0022
[root@servera ~]# touch default.txt
[root@servera ~]# ls -l default.txt
-rw-r--r--. 1 root root 0 Jul 18 05:20 default.txt
[root@servera ~]# mkdir default
[root@servera ~]# ls -ld default
drwxr-xr-x. 2 root root 6 Jul 18 05:20 default
umask 値を 0 に設定すると、他のファイルのアクセス許可は読み取りから読み取りと書き込みに変更され、他のディレクトリのアクセス許可は読み取りと実行から読み取り、書き込み、実行に変更されます。
[root@servera ~]# umask 0
[root@servera ~]# touch zero.txt
[root@servera ~]# ls -l zero.txt
-rw-rw-rw-. 1 root root 0 Jul 18 05:23 zero.txt
[root@servera ~]# mkdir zero
[root@servera ~]# ls -ld zero
drwxrwxrwx. 2 root root 6 Jul 18 05:23 zero
他のすべてのファイルのディレクトリ権限をブロックするには、umask を 007 に設定します。
[root@servera ~]# umask 007
[root@servera ~]# touch seven.txt
[root@servera ~]# ls -l seven.txt
-rw-rw----. 1 root root 0 Jul 18 05:24 seven.txt
[root@servera ~]# mkdir seven
[root@servera ~]# ls -ld seven
drwxrwx---. 2 root root 6 Jul 18 05:25 seven
umask 027 は、新しいファイルにユーザーの読み取りおよび書き込み権限と、グループの読み取り権限があることを保証します。新しいディレクトリのグループには読み取りおよび書き込み権限がありますが、他のグループにはアクセス権がありません。
[root@servera ~]# umask 027
[root@servera ~]# touch two-seven.txt
[root@servera ~]# ls -l two-seven.txt
-rw-r-----. 1 root root 0 Jul 18 05:33 two-seven.txt
[root@servera ~]# mkdir two-seven
[root@servera ~]# ls -ld two-seven
drwxr-x---. 2 root root 6 Jul 18 05:33 two-seven