web-dev-qa-db-ja.com

'chmod g + s'コマンド

こんにちはUnixにおけるchmod g+sコマンドの役割を理解したいと思います。

また、この特定のコンテキストで何が行われるのかを知りたいです。

cd /home/canard;
touch un;
chgrp canard .;
chmod g+s .;
touch deux ;

chmod g+sを除くすべてのコマンドの役割を理解しています。この一連のコマンドの結果であるundeuxの違いを知りたいです。

46
otus
chmod g+s .;

このコマンドは、現在のディレクトリにグループID(setgid)を設定し、.と記述します。

つまり、現在のディレクトリ内に作成されたすべてのnewファイルおよびサブディレクトリは、ファイルを作成したユーザーのプライマリグループIDではなく、ディレクトリのグループIDを継承します。これは、現在のディレクトリに作成された新しいサブディレクトリにも渡されます。

g+sはファイルのグループIDに影響しますが、所有者IDには影響しません。

これはnewly-createdファイルにのみ適用されることに注意してください。 移動mv)がディレクトリにあるファイルは、setgid設定の影響を受けません。 cp -pでコピーされたファイルも影響を受けません。

touch un;
chgrp canard .;
chmod g+s .;
touch deux ;

この場合、deuxはグループcanardに属しますが、unはそれを作成したユーザーのグループに属します。

シェルコマンドでのセミコロンの使用に関する小メモ

cまたはPerlとは異なり、シェルコマンドの後にセミコロンが続く必要があるのは、sameコマンドラインでそれに続く別のシェルコマンドがある場合のみです。したがって、次のコマンドラインを検討してください。

chgrp canard .; chmod g+s .;

最後のセミコロンは不要であり、削除できます。

chgrp canard .; chmod g+s .

さらに、2つのコマンドを別々の行に配置する場合、残りのセミコロンは不要です。

chgrp canard .
chmod g+s .
64
John1024

Chmodコマンドを使用して、ファイルのアクセス権を変更できます。 Unixでは、ファイルへのさまざまなタイプのアクセス権を持つユーザーを確立するファイル許可は、アクセスクラスとアクセスタイプの両方で指定されます。アクセスクラスはユーザーのグループであり、それぞれに特定のアクセスタイプを割り当てることができます

Unix/Linuxには、ファイルアクセスに割り当てることができるユーザーとユーザーグループがあります。

オプションg + sは次のとおりです。

g-ファイルのグループ内の他のユーザーが持っているアクセス許可

s-実行時にユーザーまたはグループIDを設定する

以下は使用例です。

chmod =rwx,g+s filename

(特定のファイルの読み取り、書き込み、実行を全員に許可し、設定されたグループIDをオンにします)

ファイルの権限を設定/変更するには、chmodプログラムを使用する必要があります。もちろん、ファイルの所有者だけがchmodを使用してファイルの権限を変更できます。 chmodの構文は次のとおりです。chmod [options] mode file(s) 'mode'の部分は、引数として続くファイルの新しい権限を指定します。モードは、どのユーザーの権限を変更する必要があるかを指定し、その後、どのアクセスタイプを変更する必要があるかを指定します。たとえば、次のようにしましょう:chmod a-x socktest.pl

つまり、すべてのユーザーに対して実行ビットをクリア(-)する必要があります。 (所有者、グループ、およびその他の国)アクセス許可は、変更によって影響を受けるユーザーを指定する文字で始まります。これは次のいずれかです。

u the owner user
g the owner group
o others (neither u, nor g)
a all users

この後に、+(セットビット)または クリアビット)と、変更する必要があるビットに対応する文字で構成される変更命令が続きます。いくつかの例を見てみましょう:

$ ls -l socktest.pl 
-rwxr-xr-x   1 nick     users         1874 Jan 19 10:23 socktest.pl*

$ chmod a-x socktest.pl 
$ ls -l socktest.pl 
-rw-r--r--   1 nick     users         1874 Jan 19 10:23 socktest.pl

$ chmod g+w socktest.pl 
$ ls -l socktest.pl 
-rw-rw-r--   1 nick     users         1874 Jan 19 10:23 socktest.pl

$ chmod ug+x socktest.pl 
$ ls -l socktest.pl 
-rwxrwxr--   1 nick     users         1874 Jan 19 10:23 socktest.pl*

$ chmod ug-wx socktest.pl 
$ ls -l socktest.pl 
-r--r--r--   1 nick     users         1874 Jan 19 10:23 socktest.pl

奇妙な数字... chmod 755 somefileのようなものに遭遇したかもしれませんが、もちろんこれは何だろうと思うでしょう。問題は、この例のように1つの番号を使用して、ファイルのアクセス許可パターン全体を一度に変更できることです。どのモードにも対応するコード番号があり、どの番号がどのモードに対応するかを理解する非常に簡単な方法があります。モード番号の3桁の数字はすべて、3つの許可トリプレットの1つに対応しています。 (u、g、およびo)トリプレットのすべての許可ビットは、値に対応します。rは4、wは2、xは1です。許可ビットの場合、この値を許可トリプレットの数に追加します。クリアされている場合は、何も追加しません。 (実際には、トリプレットの数は3ビットパターンに対応する8進数の値であることに気づくかもしれません-8進数の値が何であるかがわからない場合は、問題にはなりません。指示に従ってください。 )したがって、ファイルにrwxr-xr-x権限がある場合、次の計算を行います。

Uのトリプレット:rwx => 4 + 2 + 1 =7

Gのトリプレット:r-x => 4 + 0 + 1 =5

Oのトリプレット:r-x => 4 + 0 + 1 =5

これは:755

したがって、755は「他の人がこのファイルを読んだり実行したりしてもかまいませんが、変更できるのは私だけです」という簡単な言い方であり、777は「すべての人がこのファイルにフルアクセスできる」という意味です。

---(完全な参照

7
parallaxis

Linuxでは、extのデフォルトのマウントオプションの1つですか? fsは 'nogrpid | sysvgroups '。したがって、最初のタッチunは、fsgid = egidである作成プロセスのfsgidに等しいグループIDを持つファイルを作成します。

chmod g + s。、は、後続のファイル/ディレクトリの作成に親フォルダからグループIDを継承させ、作成されたものがdirの場合も、g + sをその親として設定します。

ここでタッチドゥーは、グループカナードでドゥーを作成します。

マウントオプションが 'grpid |その場合、bsdgroupsの場合、新しいファイル/ディレクトリの作成は、親自体にg + sを設定しなくても、親フォルダーからグループIDを継承します。

0
Nizam Mohamed

Lsコマンドの結果はumaskに依存します。

g + sはファイルにsgidを設定します。 SUID SGIDの詳細については こちら を確認してください

たとえば、umaskが022の場合、結果は次のようになります。

-rw-r--r--    1 romeo    canard     0 Jan 31 20:58 deux
-rw-r-Sr--    1 romeo    UsersGrp   0 Jan 31 20:58 un
0
Romeo Ninov