
chmod g+s
こんにちは。 Unixで命令の機能を知りたいです。
また、この特定のケースでどのような役割を果たしているのかを知りたいです。
cd /home/canard;
touch un;
chgrp canard .;
chmod g+s .;
touch deux ;
を除くすべてのコマンドの役割を理解しており、この一連のコマンドによって生成されたファイルと結果chmod g+s
の違いを知りたいと思います。un
deux
答え1
chmod g+s .;
このコマンドは、次のように作成された現在のディレクトリの「set group ID」(setgid)モードビットを設定します。.
。
これはすべてを意味します新しい現在のディレクトリに作成されたファイルとサブディレクトリは、ファイルを作成したユーザーのデフォルトのグループIDではなく、そのディレクトリのグループIDを継承します。これは、現在のディレクトリ内に作成された新しいサブディレクトリにも渡されます。
g+s
ファイルのグループ ID には影響しますが、所有者 ID には影響しません。
これは以下にのみ適用されます。新しく作られた文書。ファイルは 動く (mv
)ディレクトリエントリはsetgid設定の影響を受けません。コピーされたファイルcp -p
も影響を受けません。
はい
touch un;
chgrp canard .;
chmod g+s .;
touch deux ;
この場合は、deux
グループに属しますcanard
が、un
そのグループが何であれ、そのグループを作成したユーザーのグループに属します。
シェルコマンドでのセミコロンの使用に関するクイックノート
CやPerlとは異なり、シェルコマンドの後に他のシェルコマンドがある場合は、そのコマンドの後にセミコロンを追加するだけです。同じコマンドライン。したがって、次のコマンドラインを検討してください。
chgrp canard .; chmod g+s .;
最後のセミコロンは重複しているため削除できます。
chgrp canard .; chmod g+s .
また、2 つのコマンドを異なる行に配置する場合、残りのセミコロンは必要ありません。
chgrp canard .
chmod g+s .
文書
詳細については、次を参照してください。手動chmod。さらに、ウィキペディアではテーブルコマンドオプションを要約しますchmod
。
答え2
chmod コマンドを使用してファイル権限を変更できます。 Unix では、ファイル権限によってアクセスカテゴリとアクセスタイプによって、ファイルに対するさまざまな種類のアクセス権を持つことができる人が決まります。アクセスカテゴリはユーザーグループであり、各グループには特定の種類のアクセスを割り当てることができます。
割り当て可能なファイルアクセス権を持つUnix/Linuxユーザーとグループ
g+s オプションは次のとおりです。
g - ファイルグループ内の他のユーザーがそのファイルに対する権限
s - 実行時にユーザーまたはグループIDを設定します。
使用例は次のとおりです。
chmod =rwx,g+s filename
(誰でも特定のファイルを読み、書き込み、実行でき、設定されたグループIDを開くことができます)
ファイルの権限を設定/変更するには、chmodプログラムを使用する必要があります。もちろん、ファイルの所有者だけがchmodを使用してファイルの権限を変更できます。 chmodの構文は次のとおりです。 chmod [オプション]モードファイル「モード」部分は、引数の後に続くファイルに対する新しい権限を指定します。スキーマは、変更する必要があるユーザーの権限と、後で変更する必要があるアクセスの種類を指定します。例: chmod ax 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のようなものに触れたかもしれませんが、もちろんそれが何であるか疑問に思います。問題は、単一の数字(この例の数字など)を使用してファイルのフルアクセスモードを一度に変更できることです。各モードには対応するコード番号があり、今後見ていきますが、すべてのモードに対応する番号を見つける非常に簡単な方法があります。モード番号の3桁の数字は、それぞれ3つの権限トリプルのうちの1つに対応します。 (u、g、o)三重項の各許容ビットは、値(rの場合4、wの場合2、xの場合1)に対応します。許可ビットが設定されている場合、この値は許可三重項の数に追加されます。クリアされたら何も追加しません。 (三重項の数字が実際には3つのビットパターンに対応する8進数値であることをあなたの中には知っています。8進数値が何であるかわからない場合は問題ありません。指示に従ってください)ファイルrwxr-xr-x権限を使用して次の計算を実行します。
あなたの3つの双子:
rwx => 4 + 2 + 1 =
7
gの三重項:
r-x => 4 + 0 + 1 =
5
oの三重項:
r-x => 4 + 0 + 1 =
5
これは作る:
755
したがって、755は「他の人がこのファイルを読んだり実行したりしてもかまいませんが、私だけが変更できるはずです」を簡潔に表現し、777は「誰もがこのファイルへのフルアクセス権を持っています」を意味します。
答え3
このトピックはしばしば明確に理解されていないので、ここに答えを追加したいと思います。 Linuxファイル/フォルダ権限ビットは合計16ビットで構成され、次のように分類されます。
- 4ビット記述ファイル(一般、フォルダ、ソケット、FIFO、リンクなど)
- 12ビット(ユーザー用4ビット、グループ用4ビット、その他用4ビット)
ファイルまたはフォルダにはこれとuser
属性があります。このプロパティの各プロパティには、サブプロパティが含まれています。group
other
read
write
execute
modifier
それは私たちが見るものとuser
一致する3つのビットを持っています。rwx
このgroup
可能性も存在するので、rwx
それother
自体の可能性もありますrwx
。しかし実際、その下にはis修飾子rwx?
ビットがあります?
。したがって、通常user
、またはgroup
4番目のビットに応じて名前が付けられる3つの修飾子ビットがありますother
。
- ユーザー修飾子ビット(setuidとも呼ばれる)
- グループ修飾子ビット(別名setgid)
- その他の修正ビット(固定ビット)
これらのビットの暗黙的なシステムセマンティクスは、ファイル、フォルダ、または実行可能ファイルであるかによって変わります。その結果、一部のファイルは読み取り専用になり、実行可能なバイナリが長い間RAMに残っているか、ファイルの実行中にプロセスの有効なユーザー/グループIDが変更されます。
したがって、次のコマンドは無効であり、何の効果もありません。
chmod u+t
chmod o+s
user
および修飾子group
ビットはおよびを介して設定でき、+s
何らかの理由でまたは単純で修飾子をother
設定できます。o+t
+t
答え4
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