LinuxおよびUnixライクなオペレーティングシステムでは、すべてのファイル、ディレクトリ、およびプロセス(これもファイルです)はユーザーが所有します。このグループは、そのオブジェクト(ファイル/ディレクトリ)に対して同じアクセス許可(つまり、読み取り、書き込み、実行)を共有するユーザーのセットです。
Linuxでは、chownコマンドを使用して、ファイル、ディレクトリ、およびシンボリックリンクのユーザーとグループの所有権を変更します。
このチュートリアルでは、chownコマンドの使用方法をいくつかの実用的な例とともに示します。
chown構文
次のようにchownコマンドの基本構文を確認しましょう:
chown [OPTIONS] USER[:GROUP] FILE/DIRECTORY
ls -l
を実行できます ファイルの所有権の詳細を印刷するコマンド。
次の出力では、ファイル「myfile.txt」がユーザー「tom」によって所有され、グループが「developers」によって所有されていることがわかります。
$ ls -l
-rw-r--r-- 1 tom developers 0 Apr 4 01:35 myfile.txt
ファイルの所有権を変更する
ファイルの所有権を変更するには、新しい所有者名と所有者を変更する必要のあるファイル名を使用してchownを使用します。
次のコマンドは、「myfile.txt」という名前のファイルの所有権を新しいユーザー「tom」に変更します。
# chown tom myfile.txt
コマンドが正常に実行された場合、端末に出力は表示されません。 ls -l
を使用して確認しましょう 次のようにコマンドを実行します:
# ls -l myfile.txt
-rw-r--r-- 1 tom root 623 Dec 10 2012 myfile.txt
ファイルの所有者とグループの変更
所有者の後にコロンが続く場合(:
)およびグループ名(スペースなし)、グループ名も変更されます。
次の例は、「myfile.txt」という名前のファイルの所有者とグループを変更する方法を示しています。
# chown tom:developers myfile.txt
これで、ファイルの新しい所有者は「tom」になり、新しいグループの所有者は「developers」グループになります。
# ls -l myfile.txt
-rw-r--r-- 1 tom developers 424 Dec 10 2012 myfile.txt
コロンの後にグループ名を削除すると、ファイルのグループが指定されたユーザーのログイングループに変更されます。
# chown tom: myfile.txt
# ls -l myfile.txt
-rw-r--r-- 1 tom tom 453 Dec 10 2012 myfile.txt
コロン(:)とグループが指定されている場合、ファイルのグループのみが変更されます。この場合、コマンドはchgrpコマンドのように機能します。
# chown :developers myfile.txt
# ls -l myfile.txt
-rw-r--r-- 1 tom developers 1579 Dec 10 2012 myfile.txt
ディレクトリの所有権を再帰的に変更する
特定のディレクトリの下にあるすべてのファイルとディレクトリに所有権を再帰的に適用するには、-R
を使用します オプション
次の例では、「/ var / www / html」の下にあるすべてのファイルとディレクトリの所有権が「linoxide」に再帰的に変更され、グループの所有権が「www-data」に変更されます。
# chown linoxide:www-data -R /var/www/html
詳細出力
--verbose
オプションは、端末で変更されているすべての所有権を表示します。処理された各ファイルの診断を出力します。
例:
# chown -R --verbose jones /home/jones/
changed ownership of `/home/jones/hello' to jones
changed ownership of `/home/jones/.emacs' to jones
changed ownership of `/home/jones/.bash_history' to jones
changed ownership of `/home/jones/.bash_logout' to jones
changed ownership of `/home/jones/.bashrc' to jones
changed ownership of `/home/jones/file1' to jones
詳細オプションは、変更が行われていない場合でも、各ファイルの処理を出力します。ただし、-c
または--changes
オプションの場合、出力は変更が加えられたときにのみ報告されます。
シンボリックリンクの所有権を変更する
デフォルトではchown
コマンドはシンボリックリンクの所有権を変更せず、ターゲットファイルの所有権を変更します。 Chmodにはオプション-h
があります シンボリックリンクの所有権を変更するために使用できます。
次の例を確認してください:
# chown -h tom vmlinuz
# ls -l
total 0
lrwxrwxrwx 1 tom root 31 Apr 5 00:50 vmlinuz -> /boot/vmlinuz-4.15.0-88-generic
参照ファイルと同じ所有権を変更する
chown
の元のファイルを参照できます 同じユーザーとグループの所有権を新しいファイルにコピーします。
次のコマンドで--reference=myfile1.txt
'myfile2.txt'という名前のファイルに割り当てられた参照ファイルと所有権を提供するオプション:
# chown --reference=myfile1.txt myfile2.txt
サイレント操作
通常のユーザーは、他のユーザーが所有するファイルの所有権を変更することはできません。そのため、通常のユーザーが所有権を変更しようとするとエラーが表示されます。
[tom@node051 ~]$ chown tom /etc/
chown: changing ownership of `/etc/': Operation not permitted
ただし、-f
を使用する場合 または--silent
または--quiet
オプションの場合、エラーは表示されません。
[tom@node051 ~]$ chown -f tom /etc/
[tom@node051 ~]$
ルートを保持する方法
Chmodコマンドにはオプション--preserve-root
があります chmodが/
に再帰的に作用するのを防ぐため 。このオプションは、-R
とともに使用する必要があります 有効にするオプション。
[root@node051 ~]# chown -c --preserve-root tom /
changed ownership of '/' from root to tom
/
の権限のみ 変更され、/
内のファイルとディレクトリの所有権が変更されます 同じままです。
[root@node051 ~]# ls -ld /
drwxr-xr-x 23 tom root 4096 Feb 19 14:36 /
[root@node051 ~]# ls -l
total 88
drwxr-xr-x 2 root root 4096 Feb 19 14:33 bin
drwxr-xr-x 3 root root 4096 Feb 19 14:36 boot
drwxr-xr-x 16 root root 3660 Mar 28 11:09 dev
drwxr-xr-x 90 root root 4096 Apr 4 02:28 etc
drwxr-xr-x 2 root root 4096 Feb 19 14:35 home
lrwxrwxrwx 1 root root 33 Feb 19 14:35 initrd.img -> boot/initrd.img-4.15.0-88-generic
lrwxrwxrwx 1 root root 33 Feb 19 14:29 initrd.img.old -> boot/initrd.img-4.15.0-76-generic
drwxr-xr-x 22 root root 4096 Feb 19 14:37 lib
drwxr-xr-x 2 root root 4096 Feb 19 14:28 lib64
drwx------ 2 root root 16384 Feb 19 14:27 lost+found
結論
このチュートリアルでは、Linuxでファイルとディレクトリの所有権を変更する方法を学びました。読んでいただきありがとうございます。コメントをお知らせください。