* [patch] chmod.2, lchmod.3: Document lchmod() @ 2021-01-10 4:37 Bruno Haible 2021-01-10 7:41 ` Dmitry V. Levin 0 siblings, 1 reply; 6+ messages in thread From: Bruno Haible @ 2021-01-10 4:37 UTC (permalink / raw) To: mtk.manpages, linux-man [-- Attachment #1: Type: text/plain, Size: 310 bytes --] Hi, lchmod (= the effect of fchmod with flag AT_SYMLINK_NOFOLLOW) is implemented since glibc 2.32, see https://sourceware.org/bugzilla/show_bug.cgi?id=14578 https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=752dd17443e55a4535cb9e6baa4e550ede383540 Here is a patch to update the man pages accordingly. [-- Attachment #2: 0001-chmod.2-lchmod.3-Document-lchmod.patch --] [-- Type: text/x-patch, Size: 2341 bytes --] From 22cbd89a89bc26a518537739d677a5736727738f Mon Sep 17 00:00:00 2001 From: Bruno Haible <bruno@clisp.org> Date: Sun, 10 Jan 2021 05:20:30 +0100 Subject: [PATCH] chmod.2, lchmod.3: Document lchmod(). --- man2/chmod.2 | 25 +++++++++++++++++++++---- man3/lchmod.3 | 1 + 2 files changed, 22 insertions(+), 4 deletions(-) create mode 100644 man3/lchmod.3 diff --git a/man2/chmod.2 b/man2/chmod.2 index a54aec7..897dd87 100644 --- a/man2/chmod.2 +++ b/man2/chmod.2 @@ -29,15 +29,16 @@ .\" <michael@cantor.informatik.rwth-aachen.de>: NFS details .\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com> .\" -.TH CHMOD 2 2017-09-15 "Linux" "Linux Programmer's Manual" +.TH CHMOD 2 2021-01-10 "Linux" "Linux Programmer's Manual" .SH NAME -chmod, fchmod, fchmodat \- change permissions of a file +chmod, fchmod, lchmod, fchmodat \- change permissions of a file .SH SYNOPSIS .nf .B #include <sys/stat.h> .PP .BI "int chmod(const char *" pathname ", mode_t " mode ); .BI "int fchmod(int " fd ", mode_t " mode ); +.BI "int lchmod(const char *" pathname ", mode_t " mode ); .PP .BR "#include <fcntl.h>" " /* Definition of AT_* constants */" .B #include <sys/stat.h> @@ -68,6 +69,12 @@ Feature Test Macro Requirements for glibc (see .\" || (_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) .fi .PP +.BR lchmod (): +.nf + Since glibc 2.32: + _DEFAULT_SOURCE +.fi +.PP .BR fchmodat (): .nf Since glibc 2.10: @@ -93,6 +100,11 @@ which is dereferenced if it is a symbolic link. .BR fchmod () changes the mode of the file referred to by the open file descriptor .IR fd . +.IP * +.BR lchmod () +is like +.BR chmod (), +but does not dereference symbolic links. .PP The new file mode is specified in .IR mode , @@ -220,8 +232,13 @@ can either be 0, or include the following flag: If .I pathname is a symbolic link, do not dereference it: -instead operate on the link itself. -This flag is not currently implemented. +instead operate on the link itself, like +.BR lchmod (). +(By default, +.BR fchmodat () +dereferences symbolic links, like +.BR chmod ().) +This flag is implemented since glibc 2.32. .PP See .BR openat (2) diff --git a/man3/lchmod.3 b/man3/lchmod.3 new file mode 100644 index 0000000..92647d2 --- /dev/null +++ b/man3/lchmod.3 @@ -0,0 +1 @@ +.so man2/chmod.2 -- 2.7.4 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [patch] chmod.2, lchmod.3: Document lchmod() 2021-01-10 4:37 [patch] chmod.2, lchmod.3: Document lchmod() Bruno Haible @ 2021-01-10 7:41 ` Dmitry V. Levin 2021-01-10 10:05 ` Bruno Haible 0 siblings, 1 reply; 6+ messages in thread From: Dmitry V. Levin @ 2021-01-10 7:41 UTC (permalink / raw) To: Bruno Haible; +Cc: mtk.manpages, linux-man Hi, On Sun, Jan 10, 2021 at 05:37:13AM +0100, Bruno Haible wrote: > Hi, > > lchmod (= the effect of fchmod with flag AT_SYMLINK_NOFOLLOW) > is implemented since glibc 2.32, see > https://sourceware.org/bugzilla/show_bug.cgi?id=14578 > https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=752dd17443e55a4535cb9e6baa4e550ede383540 > > Here is a patch to update the man pages accordingly. Please note the important limitation of that implementation: it doesn't work when /proc is not mounted, see https://sourceware.org/bugzilla/show_bug.cgi?id=26401 -- ldv ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [patch] chmod.2, lchmod.3: Document lchmod() 2021-01-10 7:41 ` Dmitry V. Levin @ 2021-01-10 10:05 ` Bruno Haible 2021-01-10 17:50 ` Dmitry V. Levin 2021-01-11 8:02 ` Michael Kerrisk (man-pages) 0 siblings, 2 replies; 6+ messages in thread From: Bruno Haible @ 2021-01-10 10:05 UTC (permalink / raw) To: Dmitry V. Levin; +Cc: mtk.manpages, linux-man [-- Attachment #1: Type: text/plain, Size: 301 bytes --] Dmitry V. Levin wrote: > > Here is a patch to update the man pages accordingly. > > Please note the important limitation of that implementation: > it doesn't work when /proc is not mounted, see > https://sourceware.org/bugzilla/show_bug.cgi?id=26401 Thanks for the pointer. Revised patch attached. [-- Attachment #2: 0001-chmod.2-lchmod.3-Document-lchmod.patch --] [-- Type: text/x-patch, Size: 4208 bytes --] From 56ce64325fa9a9184b820eac908ecc5d53a5154b Mon Sep 17 00:00:00 2001 From: Bruno Haible <bruno@clisp.org> Date: Sun, 10 Jan 2021 05:20:30 +0100 Subject: [PATCH] chmod.2, lchmod.3: Document lchmod(). --- man2/chmod.2 | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++----- man3/lchmod.3 | 1 + 2 files changed, 65 insertions(+), 6 deletions(-) create mode 100644 man3/lchmod.3 diff --git a/man2/chmod.2 b/man2/chmod.2 index a54aec7..f1709ef 100644 --- a/man2/chmod.2 +++ b/man2/chmod.2 @@ -29,15 +29,16 @@ .\" <michael@cantor.informatik.rwth-aachen.de>: NFS details .\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com> .\" -.TH CHMOD 2 2017-09-15 "Linux" "Linux Programmer's Manual" +.TH CHMOD 2 2021-01-10 "Linux" "Linux Programmer's Manual" .SH NAME -chmod, fchmod, fchmodat \- change permissions of a file +chmod, fchmod, lchmod, fchmodat \- change permissions of a file .SH SYNOPSIS .nf .B #include <sys/stat.h> .PP .BI "int chmod(const char *" pathname ", mode_t " mode ); .BI "int fchmod(int " fd ", mode_t " mode ); +.BI "int lchmod(const char *" pathname ", mode_t " mode ); .PP .BR "#include <fcntl.h>" " /* Definition of AT_* constants */" .B #include <sys/stat.h> @@ -68,6 +69,12 @@ Feature Test Macro Requirements for glibc (see .\" || (_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) .fi .PP +.BR lchmod (): +.nf + Since glibc 2.32: + _DEFAULT_SOURCE +.fi +.PP .BR fchmodat (): .nf Since glibc 2.10: @@ -80,10 +87,12 @@ The .BR chmod () and .BR fchmod () -system calls change a files mode bits. +system calls and the +.BR lchmod () +function change a file's mode bits. (The file mode consists of the file permission bits plus the set-user-ID, set-group-ID, and sticky bits.) -These system calls differ only in how the file is specified: +These functions differ only in how the file is specified: .IP * 2 .BR chmod () changes the mode of the file specified whose pathname is given in @@ -93,6 +102,11 @@ which is dereferenced if it is a symbolic link. .BR fchmod () changes the mode of the file referred to by the open file descriptor .IR fd . +.IP * +.BR lchmod () +is like +.BR chmod (), +but does not dereference symbolic links. .PP The new file mode is specified in .IR mode , @@ -220,8 +234,13 @@ can either be 0, or include the following flag: If .I pathname is a symbolic link, do not dereference it: -instead operate on the link itself. -This flag is not currently implemented. +instead operate on the link itself, like +.BR lchmod (). +(By default, +.BR fchmodat () +dereferences symbolic links, like +.BR chmod ().) +This flag is implemented since glibc 2.32. .PP See .BR openat (2) @@ -304,6 +323,17 @@ See above. The same errors that occur for .BR chmod () can also occur for +.BR lchmod (). +The following additional errors can occur for +.BR lchmod (): +.TP +.B EOPNOTSUPP +.B /proc +is not mounted. +.PP +The same errors that occur for +.BR chmod () +can also occur for .BR fchmodat (). The following additional errors can occur for .BR fchmodat (): @@ -323,14 +353,31 @@ is relative and is a file descriptor referring to a file other than a directory. .TP .B ENOTSUP +(Before glibc 2.32.) .I flags specified .BR AT_SYMLINK_NOFOLLOW , which is not supported. +.TP +.B EOPNOTSUPP +(Since glibc 2.32.) +.I flags +specified +.BR AT_SYMLINK_NOFOLLOW , +and +.B /proc +is not mounted. .SH VERSIONS .BR fchmodat () was added to Linux in kernel 2.6.16; library support was added to glibc in version 2.4. +.PP +.BR lchmod () +and the handling of +.B AT_SYMLINK_NOFOLLOW +in +.BR fchmodat () +were added in glibc version 2.32. .SH CONFORMING TO .BR chmod (), .BR fchmod (): @@ -362,6 +409,17 @@ glibc constructs a pathname based on the symbolic link in that corresponds to the .IR dirfd argument. +.SH BUGS +.BR lchmod () +and +.BR fchmodat () +with +.B AT_SYMLINK_NOFOLLOW +flag fail with error +.B EOPNOTSUPP +when the +.B /proc +file system is not mounted. .SH SEE ALSO .BR chmod (1), .BR chown (2), diff --git a/man3/lchmod.3 b/man3/lchmod.3 new file mode 100644 index 0000000..92647d2 --- /dev/null +++ b/man3/lchmod.3 @@ -0,0 +1 @@ +.so man2/chmod.2 -- 2.7.4 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [patch] chmod.2, lchmod.3: Document lchmod() 2021-01-10 10:05 ` Bruno Haible @ 2021-01-10 17:50 ` Dmitry V. Levin 2021-01-11 8:02 ` Michael Kerrisk (man-pages) 1 sibling, 0 replies; 6+ messages in thread From: Dmitry V. Levin @ 2021-01-10 17:50 UTC (permalink / raw) To: Bruno Haible; +Cc: mtk.manpages, linux-man On Sun, Jan 10, 2021 at 11:05:16AM +0100, Bruno Haible wrote: > Dmitry V. Levin wrote: > > > Here is a patch to update the man pages accordingly. > > > > Please note the important limitation of that implementation: > > it doesn't work when /proc is not mounted, see > > https://sourceware.org/bugzilla/show_bug.cgi?id=26401 > > Thanks for the pointer. Revised patch attached. LGTM, thanks. -- ldv ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [patch] chmod.2, lchmod.3: Document lchmod() 2021-01-10 10:05 ` Bruno Haible 2021-01-10 17:50 ` Dmitry V. Levin @ 2021-01-11 8:02 ` Michael Kerrisk (man-pages) 2021-01-18 16:00 ` Michael Kerrisk (man-pages) 1 sibling, 1 reply; 6+ messages in thread From: Michael Kerrisk (man-pages) @ 2021-01-11 8:02 UTC (permalink / raw) To: Bruno Haible; +Cc: mtk.manpages, linux-man, Dmitry V. Levin On 1/10/21 11:05 AM, Bruno Haible wrote: > Dmitry V. Levin wrote: >>> Here is a patch to update the man pages accordingly. >> >> Please note the important limitation of that implementation: >> it doesn't work when /proc is not mounted, see >> https://sourceware.org/bugzilla/show_bug.cgi?id=26401 > > Thanks for the pointer. Revised patch attached. Hi Bruno, Thank you for the patch. But, I have a question: is lchown() actually usable? That is, are there any kinds of links whose mode can be changed? I can't seem to use it with normal symlinks, or for that matter, magic links: [[ $ cat t_lchmod.c /*#* t_lchmod.c Copyright Michael Kerrisk, Jan 2021 */ #define _DEFAULT_SOURCE #include <sys/stat.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> typedef enum { FALSE, TRUE } Boolean; int main(int argc, char *argv[]) { if (argc < 2) { fprintf(stderr, "Usage: %s <file> <mode>\n", argv[0]); exit(EXIT_FAILURE); } int mode = strtoul(argv[2], NULL, 0); if (lchmod(argv[1], mode) == -1) { perror("lchmod"); exit(EXIT_FAILURE); } exit(EXIT_SUCCESS); } $ touch a $ ln -s a b $ ./t_lchmod b 700 lchmod: Operation not supported $ ./t_lchmod /proc/self/fd/0 700 lchmod: Operation not supported ]] Thanks, Michael ===== >From 56ce64325fa9a9184b820eac908ecc5d53a5154b Mon Sep 17 00:00:00 2001 From: Bruno Haible <bruno@clisp.org> Date: Sun, 10 Jan 2021 05:20:30 +0100 Subject: [PATCH] chmod.2, lchmod.3: Document lchmod(). --- man2/chmod.2 | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++----- man3/lchmod.3 | 1 + 2 files changed, 65 insertions(+), 6 deletions(-) create mode 100644 man3/lchmod.3 diff --git a/man2/chmod.2 b/man2/chmod.2 index a54aec7..f1709ef 100644 --- a/man2/chmod.2 +++ b/man2/chmod.2 @@ -29,15 +29,16 @@ .\" <michael@cantor.informatik.rwth-aachen.de>: NFS details .\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com> .\" -.TH CHMOD 2 2017-09-15 "Linux" "Linux Programmer's Manual" +.TH CHMOD 2 2021-01-10 "Linux" "Linux Programmer's Manual" .SH NAME -chmod, fchmod, fchmodat \- change permissions of a file +chmod, fchmod, lchmod, fchmodat \- change permissions of a file .SH SYNOPSIS .nf .B #include <sys/stat.h> .PP .BI "int chmod(const char *" pathname ", mode_t " mode ); .BI "int fchmod(int " fd ", mode_t " mode ); +.BI "int lchmod(const char *" pathname ", mode_t " mode ); .PP .BR "#include <fcntl.h>" " /* Definition of AT_* constants */" .B #include <sys/stat.h> @@ -68,6 +69,12 @@ Feature Test Macro Requirements for glibc (see .\" || (_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) .fi .PP +.BR lchmod (): +.nf + Since glibc 2.32: + _DEFAULT_SOURCE +.fi +.PP .BR fchmodat (): .nf Since glibc 2.10: @@ -80,10 +87,12 @@ The .BR chmod () and .BR fchmod () -system calls change a files mode bits. +system calls and the +.BR lchmod () +function change a file's mode bits. (The file mode consists of the file permission bits plus the set-user-ID, set-group-ID, and sticky bits.) -These system calls differ only in how the file is specified: +These functions differ only in how the file is specified: .IP * 2 .BR chmod () changes the mode of the file specified whose pathname is given in @@ -93,6 +102,11 @@ which is dereferenced if it is a symbolic link. .BR fchmod () changes the mode of the file referred to by the open file descriptor .IR fd . +.IP * +.BR lchmod () +is like +.BR chmod (), +but does not dereference symbolic links. .PP The new file mode is specified in .IR mode , @@ -220,8 +234,13 @@ can either be 0, or include the following flag: If .I pathname is a symbolic link, do not dereference it: -instead operate on the link itself. -This flag is not currently implemented. +instead operate on the link itself, like +.BR lchmod (). +(By default, +.BR fchmodat () +dereferences symbolic links, like +.BR chmod ().) +This flag is implemented since glibc 2.32. .PP See .BR openat (2) @@ -304,6 +323,17 @@ See above. The same errors that occur for .BR chmod () can also occur for +.BR lchmod (). +The following additional errors can occur for +.BR lchmod (): +.TP +.B EOPNOTSUPP +.B /proc +is not mounted. +.PP +The same errors that occur for +.BR chmod () +can also occur for .BR fchmodat (). The following additional errors can occur for .BR fchmodat (): @@ -323,14 +353,31 @@ is relative and is a file descriptor referring to a file other than a directory. .TP .B ENOTSUP +(Before glibc 2.32.) .I flags specified .BR AT_SYMLINK_NOFOLLOW , which is not supported. +.TP +.B EOPNOTSUPP +(Since glibc 2.32.) +.I flags +specified +.BR AT_SYMLINK_NOFOLLOW , +and +.B /proc +is not mounted. .SH VERSIONS .BR fchmodat () was added to Linux in kernel 2.6.16; library support was added to glibc in version 2.4. +.PP +.BR lchmod () +and the handling of +.B AT_SYMLINK_NOFOLLOW +in +.BR fchmodat () +were added in glibc version 2.32. .SH CONFORMING TO .BR chmod (), .BR fchmod (): @@ -362,6 +409,17 @@ glibc constructs a pathname based on the symbolic link in that corresponds to the .IR dirfd argument. +.SH BUGS +.BR lchmod () +and +.BR fchmodat () +with +.B AT_SYMLINK_NOFOLLOW +flag fail with error +.B EOPNOTSUPP +when the +.B /proc +file system is not mounted. .SH SEE ALSO .BR chmod (1), .BR chown (2), diff --git a/man3/lchmod.3 b/man3/lchmod.3 new file mode 100644 index 0000000..92647d2 --- /dev/null +++ b/man3/lchmod.3 @@ -0,0 +1 @@ +.so man2/chmod.2 -- 2.7.4 -- Michael Kerrisk Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/ Linux/UNIX System Programming Training: http://man7.org/training/ yo ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [patch] chmod.2, lchmod.3: Document lchmod() 2021-01-11 8:02 ` Michael Kerrisk (man-pages) @ 2021-01-18 16:00 ` Michael Kerrisk (man-pages) 0 siblings, 0 replies; 6+ messages in thread From: Michael Kerrisk (man-pages) @ 2021-01-18 16:00 UTC (permalink / raw) To: Bruno Haible; +Cc: mtk.manpages, linux-man, Dmitry V. Levin Hi Bruno, Ping! Thanks, Michael On 1/11/21 9:02 AM, Michael Kerrisk (man-pages) wrote: > On 1/10/21 11:05 AM, Bruno Haible wrote: >> Dmitry V. Levin wrote: >>>> Here is a patch to update the man pages accordingly. >>> >>> Please note the important limitation of that implementation: >>> it doesn't work when /proc is not mounted, see >>> https://sourceware.org/bugzilla/show_bug.cgi?id=26401 >> >> Thanks for the pointer. Revised patch attached. > > Hi Bruno, > > Thank you for the patch. > > But, I have a question: is lchown() actually usable? That is, > are there any kinds of links whose mode can be changed? I > can't seem to use it with normal symlinks, or for that matter, > magic links: > > [[ > $ cat t_lchmod.c > /*#* t_lchmod.c > > Copyright Michael Kerrisk, Jan 2021 > */ > #define _DEFAULT_SOURCE > #include <sys/stat.h> > #include <stdio.h> > #include <stdlib.h> > #include <unistd.h> > #include <string.h> > > typedef enum { FALSE, TRUE } Boolean; > int > main(int argc, char *argv[]) > { > if (argc < 2) { > fprintf(stderr, "Usage: %s <file> <mode>\n", argv[0]); > exit(EXIT_FAILURE); > } > > int mode = strtoul(argv[2], NULL, 0); > if (lchmod(argv[1], mode) == -1) { > perror("lchmod"); > exit(EXIT_FAILURE); > } > > exit(EXIT_SUCCESS); > } > > $ touch a > $ ln -s a b > $ ./t_lchmod b 700 > lchmod: Operation not supported > $ ./t_lchmod /proc/self/fd/0 700 > lchmod: Operation not supported > ]] > > > Thanks, > > Michael > > ===== > > >>From 56ce64325fa9a9184b820eac908ecc5d53a5154b Mon Sep 17 00:00:00 2001 > From: Bruno Haible <bruno@clisp.org> > Date: Sun, 10 Jan 2021 05:20:30 +0100 > Subject: [PATCH] chmod.2, lchmod.3: Document lchmod(). > > --- > man2/chmod.2 | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++----- > man3/lchmod.3 | 1 + > 2 files changed, 65 insertions(+), 6 deletions(-) > create mode 100644 man3/lchmod.3 > > diff --git a/man2/chmod.2 b/man2/chmod.2 > index a54aec7..f1709ef 100644 > --- a/man2/chmod.2 > +++ b/man2/chmod.2 > @@ -29,15 +29,16 @@ > .\" <michael@cantor.informatik.rwth-aachen.de>: NFS details > .\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com> > .\" > -.TH CHMOD 2 2017-09-15 "Linux" "Linux Programmer's Manual" > +.TH CHMOD 2 2021-01-10 "Linux" "Linux Programmer's Manual" > .SH NAME > -chmod, fchmod, fchmodat \- change permissions of a file > +chmod, fchmod, lchmod, fchmodat \- change permissions of a file > .SH SYNOPSIS > .nf > .B #include <sys/stat.h> > .PP > .BI "int chmod(const char *" pathname ", mode_t " mode ); > .BI "int fchmod(int " fd ", mode_t " mode ); > +.BI "int lchmod(const char *" pathname ", mode_t " mode ); > .PP > .BR "#include <fcntl.h>" " /* Definition of AT_* constants */" > .B #include <sys/stat.h> > @@ -68,6 +69,12 @@ Feature Test Macro Requirements for glibc (see > .\" || (_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) > .fi > .PP > +.BR lchmod (): > +.nf > + Since glibc 2.32: > + _DEFAULT_SOURCE > +.fi > +.PP > .BR fchmodat (): > .nf > Since glibc 2.10: > @@ -80,10 +87,12 @@ The > .BR chmod () > and > .BR fchmod () > -system calls change a files mode bits. > +system calls and the > +.BR lchmod () > +function change a file's mode bits. > (The file mode consists of the file permission bits plus the set-user-ID, > set-group-ID, and sticky bits.) > -These system calls differ only in how the file is specified: > +These functions differ only in how the file is specified: > .IP * 2 > .BR chmod () > changes the mode of the file specified whose pathname is given in > @@ -93,6 +102,11 @@ which is dereferenced if it is a symbolic link. > .BR fchmod () > changes the mode of the file referred to by the open file descriptor > .IR fd . > +.IP * > +.BR lchmod () > +is like > +.BR chmod (), > +but does not dereference symbolic links. > .PP > The new file mode is specified in > .IR mode , > @@ -220,8 +234,13 @@ can either be 0, or include the following flag: > If > .I pathname > is a symbolic link, do not dereference it: > -instead operate on the link itself. > -This flag is not currently implemented. > +instead operate on the link itself, like > +.BR lchmod (). > +(By default, > +.BR fchmodat () > +dereferences symbolic links, like > +.BR chmod ().) > +This flag is implemented since glibc 2.32. > .PP > See > .BR openat (2) > @@ -304,6 +323,17 @@ See above. > The same errors that occur for > .BR chmod () > can also occur for > +.BR lchmod (). > +The following additional errors can occur for > +.BR lchmod (): > +.TP > +.B EOPNOTSUPP > +.B /proc > +is not mounted. > +.PP > +The same errors that occur for > +.BR chmod () > +can also occur for > .BR fchmodat (). > The following additional errors can occur for > .BR fchmodat (): > @@ -323,14 +353,31 @@ is relative and > is a file descriptor referring to a file other than a directory. > .TP > .B ENOTSUP > +(Before glibc 2.32.) > .I flags > specified > .BR AT_SYMLINK_NOFOLLOW , > which is not supported. > +.TP > +.B EOPNOTSUPP > +(Since glibc 2.32.) > +.I flags > +specified > +.BR AT_SYMLINK_NOFOLLOW , > +and > +.B /proc > +is not mounted. > .SH VERSIONS > .BR fchmodat () > was added to Linux in kernel 2.6.16; > library support was added to glibc in version 2.4. > +.PP > +.BR lchmod () > +and the handling of > +.B AT_SYMLINK_NOFOLLOW > +in > +.BR fchmodat () > +were added in glibc version 2.32. > .SH CONFORMING TO > .BR chmod (), > .BR fchmod (): > @@ -362,6 +409,17 @@ glibc constructs a pathname based on the symbolic link in > that corresponds to the > .IR dirfd > argument. > +.SH BUGS > +.BR lchmod () > +and > +.BR fchmodat () > +with > +.B AT_SYMLINK_NOFOLLOW > +flag fail with error > +.B EOPNOTSUPP > +when the > +.B /proc > +file system is not mounted. > .SH SEE ALSO > .BR chmod (1), > .BR chown (2), > diff --git a/man3/lchmod.3 b/man3/lchmod.3 > new file mode 100644 > index 0000000..92647d2 > --- /dev/null > +++ b/man3/lchmod.3 > @@ -0,0 +1 @@ > +.so man2/chmod.2 > -- Michael Kerrisk Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/ Linux/UNIX System Programming Training: http://man7.org/training/ ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2021-01-18 16:12 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2021-01-10 4:37 [patch] chmod.2, lchmod.3: Document lchmod() Bruno Haible 2021-01-10 7:41 ` Dmitry V. Levin 2021-01-10 10:05 ` Bruno Haible 2021-01-10 17:50 ` Dmitry V. Levin 2021-01-11 8:02 ` Michael Kerrisk (man-pages) 2021-01-18 16:00 ` Michael Kerrisk (man-pages)
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox