17

Cygwin を使用していて、 chmodでグループ アクセス許可を変更しようとしています。

$ls -l id_rsa
-rwxrwxr-- 1 None 1679 Jun 13 10:16 id_rsa 

$ chmod g= id_rsa 

$ ls -l id_rsa 
-rwxrwxr-- 1 None 1679 Jun 13 10:16 id_rsa 

しかし、これはうまくいきません。ユーザーと他のユーザーの権限を変更できます。グループのアクセス許可レベルは、どういうわけかユーザーのアクセス許可レベルと同じに保たれているようですか?

4

7 に答える 7

4

Cygwin は、知らないグループがファイルを所有することを好みません。残念ながら、これは Cygwin で非常に頻繁に発生します。特に、PC が変化し続ける Windows ドメインにある場合はそうです。また、外部ドライブを介して 2 台の PC 間でファイルを同期していますが、PC ごとに uid/gid が異なるため、これが問題の原因です。

グループ名の代わりに数値のグループ ID が表示された場合はls -l、Cygwin が gid を認識していないことを意味し/etc/groupます。これは、 を実行することで確認できます。getent group <gid>ここ<gid>で、 は数値のグループ ID です。

これを修正するには、chgrp上記の受け入れられた回答で説明されているように、影響を受けるすべてのファイル/ディレクトリのグループを変更するか/etc/group、未使用のグループ名 (例: Users2) を使用して不明な gid のエントリを に作成します。

これを行った後、すべての Cygwin ウィンドウを閉じてから再度開く必要がある場合があります。

于 2016-06-08T03:14:59.070 に答える
2

実験では、chmodCygwin でグループのアクセス許可を変更するために正しく機能することが示されています。

この実験では、NTFS パーティション上のファイルを使用しました。Cygwin は Windows の上に POSIX レイヤーを実装しますが、最終的には Windows 自体の機能と特定のファイルシステムの実装の機能を使用します。

最新バージョンの Windows では、ほとんどのハード ドライブが NTFS を使用するようにフォーマットされており、chmod. ただし、通常、外付け USB ドライブは FAT32 を使用するため、同じ権限を表す機能はありません。Cygwin 層は POSIX セマンティクスを可能な限り偽造しますが、できることは限られています。

試す

$ df -T .

FAT32 ファイルシステムを使用していることが示されている場合は、おそらくそれが問題です。解決策は、代わりに NTFS ファイルシステムにファイルを保存することです。という名前のファイルはおそらく SSH 秘密鍵であり、とにかくid_dsa保存する必要があります。$HOME/.ssh

ホーム ディレクトリは FAT32 パーティションにありますか? 私が思い出したように、Windows の最近のバージョン (「最近」とは、過去 10 年以上を意味します) は、FAT32 ファイルシステムを NTFS に変換できます。


この回答の残りの部分は、chmodコマンドにタイプミスがあった元のバージョンの質問への回答でした。


Cygwin は、GNU Coreutils バージョンの を使用しますchmod。これ、

chmod g=0 fileName

は正しい構文ではありません。私は得る:

$ chmod g=0 fileName
chmod: invalid mode: `g=0'
Try `chmod --help' for more information.

(これは Cygwin ではなく Linux 上にありますが、同じはずです。)

すべてのグループ権限をオフにするには、これでうまくいくはずです:

$ chmod g= fileName
$ ls -l fileName 
-rw----r-- 1 kst kst 0 Jun 13 10:31 fileName

chmodドキュメントを参照するには:

$ info coreutils chmod

シンボリック ファイル モードに関するドキュメントを参照するには:

$ info coreutils Symbolic

シンボリック モードの形式は次のとおりです。

 [ugoa...][+-=]PERMS...[,...]

ここで、PERMS は、セット 'rwxXst' からの 0 個以上の文字、またはセット 'ugo' からの 1 文字です。

于 2013-06-13T17:40:49.583 に答える
1

以前の回答と同様に、認識されていないグループがこのような問題を引き起こします。ほとんどの場合、Windows ドメインで発生します。

これを修正する最も簡単な方法は/etc/passwd/etc/groupファイルを再生成することです (-dドメイン ユーザーにはパラメーターが必要です)。

mkpasswd -l -d > /etc/passwd
mkgroup  -l -d > /etc/group

Cygwin を閉じて再起動します。

于 2016-06-27T07:32:04.157 に答える
0

これは私にとって非常に厄介な問題です。私の場合、user135348 のソリューションが最適でした。このアプローチの最大の問題はchown :Users -R、新しいファイルが作成されるたびに、未知の gid 1049120 が割り当てられることです。ファイルの gid を変更し続けるのは非常にイライラします。

私も試してみmkgroupましたが、私の場合はうまくいきませんでした: 私の gid は 1049120 です。

「 Windows SID を POSIX uid/gid 値にマッピングする」で説明されているルールに基づいて : : 0x100000 オフセットがマシンのプライマリ ドメインからのアカウントに使用されます。1049120 から同じオフセットを削除しようとすると、組み込みの Administrators グループの RID である 544 が得られます。

このアカウントは、ローカルの Administrators グループのメンバーではありません。SuRun を使用して、資格情報を提供せずに管理者権限を付与します。この場合、mkgroup は可能なすべての GID を生成できませんでした。

グループ ファイルを編集し、カスタマイズされたグループ名を追加すると、常に問題を簡単に解決できるようです。

于 2016-10-23T15:54:04.827 に答える