問題があります。シンボリックリンクのアクセス許可を777から755に変更する必要があります。どうすればよいのかわかりません。 chmod
コマンドを使用してみましたが、機能しません。が欲しいです
lrwxrwxrwx 1 frosu 2016_cluj 5 Jul 4 13:53 test6 -> test0
に
lrwxr-xr-x 1 frosu 2016_cluj 5 Jul 4 13:53 test6 -> test0
シンボリックリンクのアクセス許可の変更をサポートするシステムとサポートしないシステムがあります。
-h
_を使用)_
-h
_ファイルがシンボリックリンクの場合、リンクが指すファイルではなく、リンク自体のモードを変更します。
chmod
がシンボリックリンクのアクセス許可を変更することはありません。 chmodシステムコールは、権限を変更できません。シンボリックリンクの許可は決して使用されないため、これは問題ではありません。ただし、コマンド行にリストされているシンボリックリンクごとに、chmodはポイントされたファイルのアクセス許可を変更します。対照的に、chmodは再帰的なディレクトリ走査中に遭遇したシンボリックリンクを無視します。
機能が異なるため、 [〜#〜] posix [〜#〜] は可能性について言及していません。
コメントから、誰かがGNU coreutilsへの最近の変更が_-h
_オプションを提供することを示唆しています。現時点では、それは chmodのソースコード)には表示されません :
while((c = getopt_long(argc、argv、 ( "Rcfvr :: w :: x :: X :: s :: t :: u :: g :: o :: a ::、:: + :: = :: " " 0 :: 1 :: 2 :: 3 :: 4 :: 5 :: 6 :: 7 :: ")、 long_options、NULL))
そして _long_options
_ にはこれがあります:
_static struct option const long_options[] =
{
{"changes", no_argument, NULL, 'c'},
{"recursive", no_argument, NULL, 'R'},
{"no-preserve-root", no_argument, NULL, NO_PRESERVE_ROOT},
{"preserve-root", no_argument, NULL, PRESERVE_ROOT},
{"quiet", no_argument, NULL, 'f'},
{"reference", required_argument, NULL, REFERENCE_FILE_OPTION},
{"silent", no_argument, NULL, 'f'},
{"verbose", no_argument, NULL, 'v'},
{GETOPT_HELP_OPTION_DECL},
{GETOPT_VERSION_OPTION_DECL},
{NULL, 0, NULL, 0}
};
_
権限はchmod
で設定されます。所有権はchown
で設定されます。 GNU coreutils(BSDなど)は、シンボリックリンクの所有権を変更する機能をサポートします。シンボリックリンクの所有権は、リンクのコンテンツを変更できるかどうかに関係するため、これは別の機能です(そして、それを別のターゲットに向けます。)これも、BSD機能(OSX、 FreeBSD など)として始まりました。これは Linux (および- Solaris など) POSIXはthis機能について :
_
-h
_
タイプシンボリックリンクのファイルを指定する各ファイルオペランドについて、chownはシンボリックリンクのユーザーIDを設定しようとします。グループIDが指定されている場合、タイプシンボリックリンクのファイルを指定するファイルオペランドごとに、chownはシンボリックリンクのグループIDを設定しようとします。
コマンドラインツール(およびシェルスクリプト)についてはこれくらいです。ただし、chmod
ユーティリティの説明では言及されていない POSIXの機能 を使用して、独自のユーティリティをwriteできます。
int chmod(const char *path, mode_t mode);
int fchmodat(int fd, const char *path, mode_t mode, int flag);
後者の関数はflagパラメータを追加します。
flagの値は、_
<fcntl.h>
_で定義された次のリストからのフラグのビット単位の包含ORによって構築されます。_
AT_SYMLINK_NOFOLLOW
_
pathがシンボリックリンクを指定している場合、シンボリックリンクのモードが変更されます。
つまり、fchmodat
の目的は、あなたが尋ねた機能を提供することです。ただし、コマンドラインのchmod
ユーティリティは、(これまでのところ)chmod
の観点からのみドキュメント化されています(この機能はありません)。
ところで、fchmodat
は、10年前にRed HatおよびGNU開発者によって採用され、提案されたSolarisの不十分に文書化された機能として始まったようです標準化のため:
The Linux Programming Interface によると、2.6.16以降、Linuxはこれらの呼び出しで_AT_SYMLINK_NOFOLLOW
_をサポートしています: faccessat
、fchownat
、fstatat
、 utimensat
、およびlinkat
は2.6.18で実装されました(どちらも「古い」: 2006、OSNewsによると )。
この機能が役立つかどうかは、使用しているシステムによって異なります。
シンボリックリンクの許可は評価されません。
以前は、シンボリックリンクの許可ビットを変更する方法はありませんでした。
しばらくして、POSIXはfchmodat()
を導入しました。この呼び出しをサポートするすべてのプラットフォームは、シンボリックリンクの許可ビットを変更できます。
ただし、これがシンボリックリンクに影響を与えるとは思わないでください。