-
Notifications
You must be signed in to change notification settings - Fork 0
/
fchownat.html
693 lines (508 loc) · 18.5 KB
/
fchownat.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
<!-- Creator : groff version 1.22.4 -->
<!-- CreationDate: Wed Jan 29 11:26:51 2020 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta name="generator" content="groff -Thtml, see www.gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta name="Content-Style" content="text/css">
<style type="text/css">
p { margin-top: 0; margin-bottom: 0; vertical-align: top }
pre { margin-top: 0; margin-bottom: 0; vertical-align: top }
table { margin-top: 0; margin-bottom: 0; vertical-align: top }
h1 { text-align: center }
</style>
<title>CHOWN</title>
</head>
<body>
<h1 align="center">CHOWN</h1>
<a href="#NAME">NAME</a><br>
<a href="#SYNOPSIS">SYNOPSIS</a><br>
<a href="#DESCRIPTION">DESCRIPTION</a><br>
<a href="#RETURN VALUE">RETURN VALUE</a><br>
<a href="#ERRORS">ERRORS</a><br>
<a href="#VERSIONS">VERSIONS</a><br>
<a href="#CONFORMING TO">CONFORMING TO</a><br>
<a href="#NOTES">NOTES</a><br>
<a href="#EXAMPLE">EXAMPLE</a><br>
<a href="#SEE ALSO">SEE ALSO</a><br>
<a href="#COLOPHON">COLOPHON</a><br>
<hr>
<h2>NAME
<a name="NAME"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">chown, fchown,
lchown, fchownat - change ownership of a file</p>
<h2>SYNOPSIS
<a name="SYNOPSIS"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em"><b>#include
<unistd.h></b></p>
<p style="margin-left:11%; margin-top: 1em"><b>int
chown(const char *</b><i>pathname</i><b>, uid_t</b>
<i>owner</i><b>, gid_t</b> <i>group</i><b>); <br>
int fchown(int</b> <i>fd</i><b>, uid_t</b> <i>owner</i><b>,
gid_t</b> <i>group</i><b>); <br>
int lchown(const char *</b><i>pathname</i><b>, uid_t</b>
<i>owner</i><b>, gid_t</b> <i>group</i><b>);</b></p>
<p style="margin-left:11%; margin-top: 1em"><b>#include
<fcntl.h></b> /* Definition of AT_* constants */
<b><br>
#include <unistd.h></b></p>
<p style="margin-left:11%; margin-top: 1em"><b>int
fchownat(int</b> <i>dirfd</i><b>, const char
*</b><i>pathname</i><b>, <br>
uid_t</b> <i>owner</i><b>, gid_t</b> <i>group</i><b>,
int</b> <i>flags</i><b>);</b></p>
<p style="margin-left:5%; margin-top: 1em">Feature Test
Macro Requirements for glibc (see
<b>feature_test_macros</b>(7)):</p>
<p style="margin-left:11%; margin-top: 1em"><b>fchown</b>(),
<b>lchown</b>():</p>
<p style="margin-left:17%;">/* Since glibc 2.12: */
_POSIX_C_SOURCE >= 200809L <br>
|| _XOPEN_SOURCE >= 500 <br>
|| /* Glibc versions <= 2.19: */ _BSD_SOURCE</p>
<p style="margin-left:11%;"><b>fchownat</b>():</p>
<p style="margin-left:17%;">Since glibc 2.10:</p>
<p style="margin-left:23%;">_POSIX_C_SOURCE >= 200809L</p>
<p style="margin-left:17%;">Before glibc 2.10:</p>
<p style="margin-left:23%;">_ATFILE_SOURCE</p>
<h2>DESCRIPTION
<a name="DESCRIPTION"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">These system
calls change the owner and group of a file. The
<b>chown</b>(), <b>fchown</b>(), and <b>lchown</b>() system
calls differ only in how the file is specified:</p>
<table width="100%" border="0" rules="none" frame="void"
cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="11%"></td>
<td width="1%">
<p>*</p></td>
<td width="2%"></td>
<td width="86%">
<p><b>chown</b>() changes the ownership of the file
specified by <i>pathname</i>, which is dereferenced if it is
a symbolic link.</p></td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="1%">
<p>*</p></td>
<td width="2%"></td>
<td width="86%">
<p><b>fchown</b>() changes the ownership of the file
referred to by the open file descriptor <i>fd</i>.</p></td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="1%">
<p>*</p></td>
<td width="2%"></td>
<td width="86%">
<p><b>lchown</b>() is like <b>chown</b>(), but does not
dereference symbolic links.</p></td></tr>
</table>
<p style="margin-left:11%; margin-top: 1em">Only a
privileged process (Linux: one with the <b>CAP_CHOWN</b>
capability) may change the owner of a file. The owner of a
file may change the group of the file to any group of which
that owner is a member. A privileged process (Linux: with
<b>CAP_CHOWN</b>) may change the group arbitrarily.</p>
<p style="margin-left:11%; margin-top: 1em">If the
<i>owner</i> or <i>group</i> is specified as -1, then that
ID is not changed.</p>
<p style="margin-left:11%; margin-top: 1em">When the owner
or group of an executable file is changed by an unprivileged
user, the <b>S_ISUID</b> and <b>S_ISGID</b> mode bits are
cleared. POSIX does not specify whether this also should
happen when root does the <b>chown</b>(); the Linux behavior
depends on the kernel version, and since Linux 2.2.13, root
is treated like other users. In case of a
non-group-executable file (i.e., one for which the
<b>S_IXGRP</b> bit is not set) the <b>S_ISGID</b> bit
indicates mandatory locking, and is not cleared by a
<b>chown</b>().</p>
<p style="margin-left:11%; margin-top: 1em">When the owner
or group of an executable file is changed (by any user), all
capability sets for the file are cleared.</p>
<p style="margin-left:11%; margin-top: 1em"><b>fchownat()</b>
<br>
The <b>fchownat</b>() system call operates in exactly the
same way as <b>chown</b>(), except for the differences
described here.</p>
<p style="margin-left:11%; margin-top: 1em">If the pathname
given in <i>pathname</i> is relative, then it is interpreted
relative to the directory referred to by the file descriptor
<i>dirfd</i> (rather than relative to the current working
directory of the calling process, as is done by
<b>chown</b>() for a relative pathname).</p>
<p style="margin-left:11%; margin-top: 1em">If
<i>pathname</i> is relative and <i>dirfd</i> is the special
value <b>AT_FDCWD</b>, then <i>pathname</i> is interpreted
relative to the current working directory of the calling
process (like <b>chown</b>()).</p>
<p style="margin-left:11%; margin-top: 1em">If
<i>pathname</i> is absolute, then <i>dirfd</i> is
ignored.</p>
<p style="margin-left:11%; margin-top: 1em">The
<i>flags</i> argument is a bit mask created by ORing
together 0 or more of the following values; <b><br>
AT_EMPTY_PATH</b> (since Linux 2.6.39)</p>
<p style="margin-left:22%;">If <i>pathname</i> is an empty
string, operate on the file referred to by <i>dirfd</i>
(which may have been obtained using the <b>open</b>(2)
<b>O_PATH</b> flag). In this case, <i>dirfd</i> can refer to
any type of file, not just a directory. If <i>dirfd</i> is
<b>AT_FDCWD</b>, the call operates on the current working
directory. This flag is Linux-specific; define
<b>_GNU_SOURCE</b> to obtain its definition.</p>
<p style="margin-left:11%;"><b>AT_SYMLINK_NOFOLLOW</b></p>
<p style="margin-left:22%;">If <i>pathname</i> is a
symbolic link, do not dereference it: instead operate on the
link itself, like <b>lchown</b>(). (By default,
<b>fchownat</b>() dereferences symbolic links, like
<b>chown</b>().)</p>
<p style="margin-left:11%; margin-top: 1em">See
<b>openat</b>(2) for an explanation of the need for
<b>fchownat</b>().</p>
<h2>RETURN VALUE
<a name="RETURN VALUE"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">On success,
zero is returned. On error, -1 is returned, and <i>errno</i>
is set appropriately.</p>
<h2>ERRORS
<a name="ERRORS"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">Depending on
the filesystem, errors other than those listed below can be
returned.</p>
<p style="margin-left:11%; margin-top: 1em">The more
general errors for <b>chown</b>() are listed below.</p>
<table width="100%" border="0" rules="none" frame="void"
cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="11%"></td>
<td width="9%">
<p><b>EACCES</b></p></td>
<td width="2%"></td>
<td width="78%">
<p>Search permission is denied on a component of the path
prefix. (See also <b>path_resolution</b>(7).)</p></td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="9%">
<p><b>EFAULT</b></p></td>
<td width="2%"></td>
<td width="78%">
<p><i>pathname</i> points outside your accessible address
space.</p> </td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="9%">
<p><b>ELOOP</b></p></td>
<td width="2%"></td>
<td width="78%">
<p>Too many symbolic links were encountered in resolving
<i>pathname</i>.</p> </td></tr>
</table>
<p style="margin-left:11%;"><b>ENAMETOOLONG</b></p>
<p style="margin-left:22%;"><i>pathname</i> is too
long.</p>
<table width="100%" border="0" rules="none" frame="void"
cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="11%"></td>
<td width="9%">
<p><b>ENOENT</b></p></td>
<td width="2%"></td>
<td width="63%">
<p>The file does not exist.</p></td>
<td width="15%">
</td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="9%">
<p><b>ENOMEM</b></p></td>
<td width="2%"></td>
<td width="63%">
<p>Insufficient kernel memory was available.</p></td>
<td width="15%">
</td></tr>
</table>
<p style="margin-left:11%;"><b>ENOTDIR</b></p>
<p style="margin-left:22%;">A component of the path prefix
is not a directory.</p>
<table width="100%" border="0" rules="none" frame="void"
cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="11%"></td>
<td width="7%">
<p><b>EPERM</b></p></td>
<td width="4%"></td>
<td width="78%">
<p>The calling process did not have the required
permissions (see above) to change owner and/or group.</p></td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="7%">
<p><b>EPERM</b></p></td>
<td width="4%"></td>
<td width="78%">
<p>The file is marked immutable or append-only. (See
<b>ioctl_iflags</b>(2).)</p> </td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="7%">
<p><b>EROFS</b></p></td>
<td width="4%"></td>
<td width="78%">
<p>The named file resides on a read-only filesystem.</p></td></tr>
</table>
<p style="margin-left:11%; margin-top: 1em">The general
errors for <b>fchown</b>() are listed below:</p>
<table width="100%" border="0" rules="none" frame="void"
cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="11%"></td>
<td width="9%">
<p style="margin-top: 1em"><b>EBADF</b></p></td>
<td width="2%"></td>
<td width="78%">
<p style="margin-top: 1em"><i>fd</i> is not a valid open
file descriptor.</p></td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="9%">
<p><b>EIO</b></p></td>
<td width="2%"></td>
<td width="78%">
<p>A low-level I/O error occurred while modifying the
inode.</p> </td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="9%">
<p><b>ENOENT</b></p></td>
<td width="2%"></td>
<td width="78%">
<p>See above.</p></td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="9%">
<p><b>EPERM</b></p></td>
<td width="2%"></td>
<td width="78%">
<p>See above.</p></td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="9%">
<p><b>EROFS</b></p></td>
<td width="2%"></td>
<td width="78%">
<p>See above.</p></td></tr>
</table>
<p style="margin-left:11%; margin-top: 1em">The same errors
that occur for <b>chown</b>() can also occur for
<b>fchownat</b>(). The following additional errors can occur
for <b>fchownat</b>():</p>
<table width="100%" border="0" rules="none" frame="void"
cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="11%"></td>
<td width="9%">
<p style="margin-top: 1em"><b>EBADF</b></p></td>
<td width="2%"></td>
<td width="56%">
<p style="margin-top: 1em"><i>dirfd</i> is not a valid file
descriptor.</p> </td>
<td width="22%">
</td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="9%">
<p><b>EINVAL</b></p></td>
<td width="2%"></td>
<td width="56%">
<p>Invalid flag specified in <i>flags</i>.</p></td>
<td width="22%">
</td></tr>
</table>
<p style="margin-left:11%;"><b>ENOTDIR</b></p>
<p style="margin-left:22%;"><i>pathname</i> is relative and
<i>dirfd</i> is a file descriptor referring to a file other
than a directory.</p>
<h2>VERSIONS
<a name="VERSIONS"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em"><b>fchownat</b>()
was added to Linux in kernel 2.6.16; library support was
added to glibc in version 2.4.</p>
<h2>CONFORMING TO
<a name="CONFORMING TO"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em"><b>chown</b>(),
<b>fchown</b>(), <b>lchown</b>(): 4.4BSD, SVr4,
POSIX.1-2001, POSIX.1-2008.</p>
<p style="margin-left:11%; margin-top: 1em">The 4.4BSD
version can be used only by the superuser (that is, ordinary
users cannot give away files).</p>
<p style="margin-left:11%; margin-top: 1em"><b>fchownat</b>():
POSIX.1-2008.</p>
<h2>NOTES
<a name="NOTES"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em"><b>Ownership of
new files</b> <br>
When a new file is created (by, for example, <b>open</b>(2)
or <b>mkdir</b>(2)), its owner is made the same as the
filesystem user ID of the creating process. The group of the
file depends on a range of factors, including the type of
filesystem, the options used to mount the filesystem, and
whether or not the set-group-ID mode bit is enabled on the
parent directory. If the filesystem supports the
<b>-o grpid</b> (or, synonymously
<b>-o bsdgroups</b>) and <b>-o nogrpid</b> (or,
synonymously <b>-o sysvgroups</b>) <b>mount</b>(8)
options, then the rules are as follows:</p>
<table width="100%" border="0" rules="none" frame="void"
cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="11%"></td>
<td width="1%">
<p>*</p></td>
<td width="2%"></td>
<td width="86%">
<p>If the filesystem is mounted with <b>-o grpid</b>,
then the group of a new file is made the same as that of the
parent directory.</p></td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="1%">
<p>*</p></td>
<td width="2%"></td>
<td width="86%">
<p>If the filesystem is mounted with <b>-o nogrpid</b>
and the set-group-ID bit is disabled on the parent
directory, then the group of a new file is made the same as
the process’s filesystem GID.</p></td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="1%">
<p>*</p></td>
<td width="2%"></td>
<td width="86%">
<p>If the filesystem is mounted with <b>-o nogrpid</b>
and the set-group-ID bit is enabled on the parent directory,
then the group of a new file is made the same as that of the
parent directory.</p></td></tr>
</table>
<p style="margin-left:11%; margin-top: 1em">As at Linux
4.12, the <b>-o grpid</b> and <b>-o nogrpid</b>
mount options are supported by ext2, ext3, ext4, and XFS.
Filesystems that don’t support these mount options
follow the <b>-o nogrpid</b> rules.</p>
<p style="margin-left:11%; margin-top: 1em"><b>Glibc
notes</b> <br>
On older kernels where <b>fchownat</b>() is unavailable, the
glibc wrapper function falls back to the use of
<b>chown</b>() and <b>lchown</b>(). When <i>pathname</i> is
a relative pathname, glibc constructs a pathname based on
the symbolic link in <i>/proc/self/fd</i> that corresponds
to the <i>dirfd</i> argument.</p>
<p style="margin-left:11%; margin-top: 1em"><b>NFS</b> <br>
The <b>chown</b>() semantics are deliberately violated on
NFS filesystems which have UID mapping enabled.
Additionally, the semantics of all system calls which access
the file contents are violated, because <b>chown</b>() may
cause immediate access revocation on already open files.
Client side caching may lead to a delay between the time
where ownership have been changed to allow access for a user
and the time where the file can actually be accessed by the
user on other clients.</p>
<p style="margin-left:11%; margin-top: 1em"><b>Historical
details</b> <br>
The original Linux <b>chown</b>(), <b>fchown</b>(), and
<b>lchown</b>() system calls supported only 16-bit user and
group IDs. Subsequently, Linux 2.4 added <b>chown32</b>(),
<b>fchown32</b>(), and <b>lchown32</b>(), supporting 32-bit
IDs. The glibc <b>chown</b>(), <b>fchown</b>(), and
<b>lchown</b>() wrapper functions transparently deal with
the variations across kernel versions.</p>
<p style="margin-left:11%; margin-top: 1em">In versions of
Linux prior to 2.1.81 (and distinct from 2.1.46),
<b>chown</b>() did not follow symbolic links. Since Linux
2.1.81, <b>chown</b>() does follow symbolic links, and there
is a new system call <b>lchown</b>() that does not follow
symbolic links. Since Linux 2.1.86, this new call (that has
the same semantics as the old <b>chown</b>()) has got the
same syscall number, and <b>chown</b>() got the newly
introduced number.</p>
<h2>EXAMPLE
<a name="EXAMPLE"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">The following
program changes the ownership of the file named in its
second command-line argument to the value specified in its
first command-line argument. The new owner can be specified
either as a numeric user ID, or as a username (which is
converted to a user ID by using <b>getpwnam</b>(3) to
perform a lookup in the system password file).</p>
<p style="margin-left:11%; margin-top: 1em"><b>Program
source</b> <br>
#include <pwd.h> <br>
#include <stdio.h> <br>
#include <stdlib.h> <br>
#include <unistd.h></p>
<p style="margin-left:11%; margin-top: 1em">int <br>
main(int argc, char *argv[]) <br>
{ <br>
uid_t uid; <br>
struct passwd *pwd; <br>
char *endptr;</p>
<p style="margin-left:11%; margin-top: 1em">if (argc != 3
|| argv[1][0] == '\0') { <br>
fprintf(stderr, "%s <owner> <file>\n",
argv[0]); <br>
exit(EXIT_FAILURE); <br>
}</p>
<p style="margin-left:11%; margin-top: 1em">uid =
strtol(argv[1], &endptr, 10); /* Allow a numeric string
*/</p>
<p style="margin-left:11%; margin-top: 1em">if (*endptr !=
'\0') { /* Was not pure numeric string */ <br>
pwd = getpwnam(argv[1]); /* Try getting UID for username */
<br>
if (pwd == NULL) { <br>
perror("getpwnam"); <br>
exit(EXIT_FAILURE); <br>
}</p>
<p style="margin-left:11%; margin-top: 1em">uid =
pwd->pw_uid; <br>
}</p>
<p style="margin-left:11%; margin-top: 1em">if
(chown(argv[2], uid, -1) == -1) { <br>
perror("chown"); <br>
exit(EXIT_FAILURE); <br>
}</p>
<p style="margin-left:11%; margin-top: 1em">exit(EXIT_SUCCESS);
<br>
}</p>
<h2>SEE ALSO
<a name="SEE ALSO"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em"><b>chgrp</b>(1),
<b>chown</b>(1), <b>chmod</b>(2), <b>flock</b>(2),
<b>path_resolution</b>(7), <b>symlink</b>(7)</p>
<h2>COLOPHON
<a name="COLOPHON"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">This page is
part of release 5.02 of the Linux <i>man-pages</i> project.
A description of the project, information about reporting
bugs, and the latest version of this page, can be found at
https://www.kernel.org/doc/man-pages/.</p>
<hr>
</body>
</html>