fossilcons 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978
  1. .TH FOSSILCONS 8
  2. .SH NAME
  3. fossilcons \- fossil console commands
  4. .SH SYNOPSIS
  5. .B
  6. con /srv/fscons
  7. .PP
  8. .PD 0.1
  9. .B .
  10. .I file
  11. .PP
  12. .B 9p
  13. .I T-message
  14. ...
  15. .PP
  16. .B dflag
  17. .PP
  18. .B echo
  19. [
  20. .B -n
  21. ]
  22. [
  23. .I arg
  24. ...
  25. ]
  26. .PP
  27. .B listen
  28. [
  29. .B -d
  30. ]
  31. [
  32. .I address
  33. ]
  34. .PP
  35. .B msg
  36. [
  37. .B -m
  38. .I nmsg
  39. ]
  40. [
  41. .B -p
  42. .I nproc
  43. ]
  44. .PP
  45. .B srv
  46. [
  47. .B -APWdp
  48. ]
  49. .I name
  50. .PP
  51. .B uname
  52. .I name
  53. [
  54. .I id
  55. |
  56. .BI : id
  57. |
  58. .BI % newname
  59. |
  60. .BI = leader
  61. |
  62. .BI + member
  63. |
  64. .BI - member
  65. ]
  66. .PP
  67. .B users
  68. [
  69. .B -dw
  70. |
  71. .I file
  72. ]
  73. .PP
  74. .B who
  75. .sp
  76. .PP
  77. .B fsys
  78. .I name
  79. .PP
  80. .B fsys
  81. .I name
  82. .B config
  83. .I device
  84. .PP
  85. .B fsys
  86. .I name
  87. .B venti
  88. [
  89. .I host
  90. ]
  91. .PP
  92. .B fsys
  93. .I name
  94. .B open
  95. [
  96. .B -APVWr
  97. ]
  98. [
  99. .B -c
  100. .I ncache
  101. ]
  102. .PP
  103. [
  104. .B fsys
  105. .I name
  106. ]
  107. .B close
  108. .PP
  109. .B fsys
  110. .I name
  111. .B unconfig
  112. .sp
  113. .PP
  114. [
  115. .B fsys
  116. .I name
  117. ]
  118. .B bfree
  119. .I addr
  120. .PP
  121. [
  122. .B fsys
  123. .I name
  124. ]
  125. .B block
  126. .I addr
  127. .I offset
  128. [
  129. .I count
  130. [
  131. .I data
  132. ]]
  133. .PP
  134. [
  135. .B fsys
  136. .I name
  137. ]
  138. .B clre
  139. .I addr
  140. .I offsets
  141. \&...
  142. .PP
  143. [
  144. .B fsys
  145. .I name
  146. ]
  147. .B clri
  148. .I files
  149. \&...
  150. .PP
  151. [
  152. .B fsys
  153. .I name
  154. ]
  155. .B clrp
  156. .I addr
  157. .I offset
  158. \&...
  159. .PP
  160. [
  161. .B fsys
  162. .I name
  163. ]
  164. .B create
  165. .I path
  166. .I uid
  167. .I gid
  168. .I perm
  169. .PP
  170. [
  171. .B fsys
  172. .I name
  173. ]
  174. .B df
  175. .PP
  176. [
  177. .B fsys
  178. .I name
  179. ]
  180. .B epoch
  181. [
  182. .B -ry
  183. ]
  184. .I n
  185. .PP
  186. [
  187. .B fsys
  188. .I name
  189. ]
  190. .B halt
  191. .PP
  192. [
  193. .B fsys
  194. .I name
  195. ]
  196. .B label
  197. .I addr
  198. [
  199. .I type
  200. .I state
  201. .I epoch
  202. .I epochclose
  203. .I tag
  204. ]
  205. .PP
  206. [
  207. .B fsys
  208. .I name
  209. ]
  210. .B remove
  211. .I files
  212. \&...
  213. .PP
  214. [
  215. .B fsys
  216. .I name
  217. ]
  218. .B snap
  219. [
  220. .B -a
  221. ]
  222. .PP
  223. [
  224. .B fsys
  225. .I name
  226. ]
  227. .B snaptime
  228. [
  229. .B -a
  230. .I hhmm
  231. ]
  232. [
  233. .B -s
  234. .I interval
  235. ]
  236. [
  237. .B -t
  238. .I timeout
  239. ]
  240. .PP
  241. [
  242. .B fsys
  243. .I name
  244. ]
  245. .B stat
  246. .IR files ...
  247. .PP
  248. [
  249. .B fsys
  250. .I name
  251. ]
  252. .B sync
  253. .PP
  254. [
  255. .B fsys
  256. .I name
  257. ]
  258. .B unhalt
  259. .PP
  260. [
  261. .B fsys
  262. .I name
  263. ]
  264. .B vac
  265. .I dir
  266. .PP
  267. [
  268. .B fsys
  269. .I name
  270. ]
  271. .B wstat
  272. .I file
  273. .I elem
  274. .I uid
  275. .I gid
  276. .I perm
  277. .I length
  278. .SH DESCRIPTION
  279. These are configuration and maintenance commands
  280. executed at the console of a
  281. .IR fossil (4)
  282. file server.
  283. The commands are split into three groups above:
  284. file server configuration,
  285. file system configuration,
  286. and file system maintenance.
  287. This manual page is split in the same way.
  288. .SS File server configuration
  289. .PP
  290. The
  291. dot
  292. .RI ( . )
  293. command
  294. reads
  295. .IR file ,
  296. treating each line as a command to be executed.
  297. Blank lines and lines beginning with a
  298. .L #
  299. character are ignored.
  300. Errors during execution are printed but do not stop the script.
  301. Note that
  302. .I file
  303. is a file in the name space in which
  304. .I fossil
  305. was started,
  306. .I not
  307. a file in any file system served by
  308. .IR fossil .
  309. .PP
  310. .I 9p
  311. executes a 9P transaction; the arguments
  312. are in the same format used by
  313. .IR 9pcon (8).
  314. .PP
  315. .I Dflag
  316. toggles the debug flag and prints the new setting.
  317. When the debug flag is set, all protocol messages
  318. and information about authentication is printed to
  319. standard error.
  320. .PP
  321. .I Echo
  322. behaves identically to
  323. .IR echo (1),
  324. writing to the console.
  325. .PP
  326. .I Listen
  327. manages the network addresses at which
  328. fossil is listening.
  329. With no arguments,
  330. .I listen
  331. prints the current list of addresses and their network directories.
  332. With one argument, listen
  333. .I address
  334. starts a new listener at
  335. .IR address ;
  336. the
  337. .B -d
  338. flag causes
  339. .I listen
  340. to remove the listener
  341. at the given address.
  342. .PP
  343. .I Msg
  344. prints the maximum internal 9P message queue size
  345. and the maximum number of 9P processes to
  346. allocate for serving the queue.
  347. The
  348. .B -m
  349. and
  350. .B -p
  351. options set the two variables.
  352. .PP
  353. .I Srv
  354. behaves like listen but uses
  355. .BI /srv/ name
  356. rather than a network address.
  357. With the
  358. .B -p
  359. flag,
  360. .I srv
  361. edits a list of console services rather than 9P services.
  362. With no arguments,
  363. .I srv
  364. prints the current list of services.
  365. With one argument, srv
  366. .I name
  367. starts a new service at
  368. .IR /srv/name ;
  369. the
  370. .B -d
  371. flag causes
  372. .I srv
  373. to remove the named service.
  374. See the
  375. .I [fsys] open
  376. command below for a description of the
  377. .B -APW
  378. options.
  379. .PP
  380. .I Uname
  381. manipulates entries in the user table.
  382. There is no distinction between users and groups:
  383. a user is a group with one member.
  384. For each user, the user table records:
  385. .TP
  386. .I id
  387. the string used to represent this user in the on-disk structures
  388. .TP
  389. .I name
  390. the string used to represent this user in the 9P protocol
  391. .TP
  392. .I leader
  393. the group's leader (see
  394. .IR stat (5)
  395. for a description of the special privileges held by a group leader)
  396. .TP
  397. .I members
  398. a comma-separated list of members in this group
  399. .PP
  400. The
  401. .I id
  402. and
  403. .I name
  404. are usually the same string, but need not be.
  405. Once an
  406. .I id
  407. is used in file system structures archived to Venti,
  408. it is impossible to change those disk structures,
  409. and thus impossible to rename the
  410. .IR id .
  411. The translation from
  412. .I name
  413. to
  414. .I id
  415. allows the appearance of renaming the user even
  416. though the on-disk structures still record the old name.
  417. (In a conventional Unix file system, the
  418. .I id
  419. is stored as a small integer rather than a string.)
  420. .I Leader
  421. and
  422. .I members
  423. are names, not ids.
  424. .PP
  425. The first argument to
  426. .I uname
  427. is the
  428. .I name
  429. of a user.
  430. The second argument is a verb, one of:
  431. .TP
  432. .I id
  433. create a user with name
  434. .RI ` name '
  435. and id
  436. .RI ` id ;'
  437. also create a home directory
  438. .BI /active/usr/ uname \fR
  439. .TP
  440. .BI : id
  441. create a user with name
  442. .RI ` name '
  443. and id
  444. .RI ` id ,'
  445. but do not create a home directory
  446. .TP
  447. .BI % newname
  448. rename user
  449. .RI ` name '
  450. to
  451. .RI ` newname ,'
  452. throughout the user table
  453. .TP
  454. .BI = leader
  455. set
  456. .IR name 's
  457. group leader
  458. to
  459. .IR leader .
  460. .TP
  461. .BI =
  462. remove
  463. .IR name 's
  464. group leader; then all members will be
  465. considered leaders
  466. .TP
  467. .BI + member
  468. add
  469. .I member
  470. to
  471. .IR name 's
  472. list of members
  473. .TP
  474. .BI - member
  475. remove
  476. .I member
  477. from
  478. .IR name 's
  479. list of members
  480. .LP
  481. If the verb is omitted, the entire entry for
  482. .I name
  483. is printed, in the form
  484. `\fIid\fL:\fIname\fL:\fIleader\fL:\fImembers\fR.'
  485. .LP
  486. The end of this manual page gives examples.
  487. .PP
  488. .I Users
  489. manipulates the user table.
  490. The user table is a list of lines in the form printed
  491. by the
  492. .I uname
  493. command.
  494. The
  495. .B -d
  496. flag resets the user table with the default:
  497. .IP
  498. .EX
  499. adm:adm:adm:sys
  500. none:none::
  501. noworld:noworld::
  502. sys:sys::
  503. glenda:glenda:glenda:
  504. .EE
  505. .PP
  506. Except
  507. .BR glenda ,
  508. these users are mandatory: they must appear in all user
  509. files and cannot be renamed.
  510. .PP
  511. The
  512. .B -r
  513. flag reads a user table from the named
  514. .I file
  515. in file system
  516. .BR main .
  517. The
  518. .B -w
  519. flag writes the table to
  520. .B /active/adm/users
  521. on the file system
  522. .BR main .
  523. .B /active/adm
  524. and
  525. .B /active/adm/users
  526. will be created if they do not exist.
  527. .PP
  528. .I Users
  529. .B -r
  530. .B /active/adm/users
  531. is automatically executed when the file system
  532. .B main
  533. is opened.
  534. .PP
  535. .I Users
  536. .B -w
  537. is automatically executed after each change to the user
  538. table by the
  539. .I uname
  540. command.
  541. .I Who
  542. prints a list of users attached to each active connection.
  543. .SS File system configuration
  544. .I Fsys
  545. sets the current file system to
  546. .IR name ,
  547. which must be configured and open (q.v.).
  548. The current file system name is
  549. displayed as the file server prompt.
  550. The special name
  551. .B all
  552. stands for all file systems;
  553. commands applied to
  554. .B all
  555. are applied to each file system in turn.
  556. The commands
  557. .BR config ,
  558. .BR open ,
  559. .BR venti ,
  560. and
  561. .B close
  562. cannot be applied to
  563. .BR all .
  564. .PP
  565. .I Fsys
  566. takes as an optional argument
  567. (after
  568. .BR name )
  569. a command to execute on the named file system.
  570. Most commands require that the named file system
  571. be configured and open; these commands can be invoked
  572. without the
  573. .BI fsys " name
  574. prefix, in which case the current file system is used.
  575. A few commands
  576. .RB ( config ,
  577. .BR open ,
  578. and
  579. .BR unconfig )
  580. operate on unopened file systems; they require the prefix.
  581. .PP
  582. .I Config
  583. creates a new file system named
  584. .I name
  585. using disk file
  586. .I device .
  587. This just adds an entry to fossil's internal table.
  588. .PP
  589. .I Venti
  590. establishes a connection to the Venti server
  591. .I host
  592. (by default, the environment variable
  593. .B $venti
  594. or the network variable
  595. .BR $venti )
  596. for use by the named file system.
  597. If no
  598. .I venti
  599. command is issued before
  600. .IR open ,
  601. the default Venti server will be used.
  602. If the file system is open,
  603. and was not opened with the
  604. .B -V
  605. flag,
  606. the command redials the Venti server.
  607. This can be used to reestablish broken connections.
  608. It is not a good idea to use the command to switch
  609. between Venti servers, since Fossil does not keep track
  610. of which blocks are stored on which servers.
  611. .PP
  612. .I Open
  613. opens the file system, reading the
  614. root and super blocks and allocating an in-memory
  615. cache for disk and Venti blocks.
  616. The options are:
  617. .TP
  618. .B -A
  619. run with no authentication
  620. .TP
  621. .B -P
  622. run with no permission checking
  623. .TP
  624. .B -V
  625. do not attempt to connect to a Venti server
  626. .TP
  627. .B -W
  628. allow wstat to make arbitrary changes to the user and group fields
  629. .TP
  630. .B -r
  631. open the file system read-only
  632. .TP
  633. .BI -c " ncache
  634. allocate an in-memory cache of
  635. .I ncache
  636. (by default, 1000)
  637. blocks
  638. .PP
  639. The
  640. .I -APW
  641. settings can be overridden on a per-connection basis
  642. by the
  643. .I srv
  644. command above.
  645. .PP
  646. .I Close
  647. flushes all dirty file system blocks to disk
  648. and then closes the device file.
  649. .PP
  650. .I Unconfig
  651. removes the named file system (which must be closed)
  652. from fossil's internal table.
  653. .SS File system maintenance
  654. .I Bfree
  655. marks the block at disk address
  656. .I addr
  657. as available for allocation.
  658. Before doing so, it prints a
  659. .I label
  660. command (q.v.)
  661. that can be used to restore the block to its previous state.
  662. .PP
  663. .I Block
  664. displays (in hexadecimal)
  665. the contents of the block at disk address
  666. .IR addr ,
  667. starting at
  668. .I offset
  669. and continuing for
  670. .I count
  671. bytes or until the end of the block.
  672. If
  673. .I data
  674. (also hexadecimal)
  675. is given, the contents in that range are
  676. replaced with data.
  677. When writing to a block,
  678. .I block
  679. prints the old and new contents,
  680. so that the change is easily undone.
  681. Editing blocks is discouraged.
  682. .PP
  683. .I Clre
  684. zeros an entry from a disk block.
  685. Before doing so, it prints a
  686. .I block
  687. command that can be used
  688. to restore the entry.
  689. .PP
  690. .I Clri
  691. removes the internal directory entry
  692. and abandons storage associated with
  693. .IR files .
  694. It ignores the usual rules for sanity, such as checking against
  695. removing a non-empty directory.
  696. A subsequent
  697. .I flchk
  698. (see
  699. .IR fossil (4))
  700. will identify the abandoned storage so it can be reclaimed with
  701. .I bfree
  702. commands.
  703. The
  704. .I perm
  705. is formatted as described in the
  706. .I stat
  707. command ;
  708. creating files or directories with the
  709. snapshot
  710. .RB ( s )
  711. bit set is not allowed.
  712. .PP
  713. .I Clrp
  714. zeros a pointer in a disk block.
  715. Before doing so, it prints a
  716. .I block
  717. command that can be used to restore the entry.
  718. .PP
  719. .I Create
  720. creates a file on the current file system.
  721. .I Uid
  722. and
  723. .I gid
  724. are uids
  725. .RI ( not
  726. unames;
  727. see the discussion above, in the description
  728. of the
  729. .I uname
  730. command).
  731. .I Perm
  732. is the low 9 bits of the permission mode of the file,
  733. in octal.
  734. The
  735. .BR -a ,
  736. .BR -d ,
  737. and
  738. .B -l
  739. flags set the append-only, directory, and lock bits.
  740. .PP
  741. .I Df
  742. prints the amount of used disk space in the write buffer.
  743. .PP
  744. .I Epoch
  745. sets the low file system epoch.
  746. Snapshots in the file system are given increasing epoch numbers.
  747. The file system maintains a low and a high epoch number,
  748. and only allows access to snapshots in that range.
  749. The low epoch number can be moved forward to discard old snapshots
  750. and reclaim the disk space they occupy.
  751. (The high epoch number is always the epoch of the currently
  752. active file system.)
  753. .PP
  754. The command
  755. ``\fLepoch\fI n''\fR
  756. is used to propose changing the low epoch to
  757. .IR n .
  758. In response,
  759. .I fossil
  760. scans
  761. .B /archive
  762. and
  763. .B /snapshot
  764. for snapshots that would be discarded, printing their
  765. epoch numbers and the
  766. .I clri
  767. commands necessary to remove them.
  768. The epoch is changed only if no such paths are found.
  769. The usual sequence of commands is (1) run epoch to
  770. print the snapshots and their epochs, (2) clri some snapshots,
  771. (3) run epoch again.
  772. If the file system is completely full (there are no free blocks),
  773. .I clri
  774. may fail because it needs to allocate blocks.
  775. For this situation,
  776. the
  777. .B -y
  778. flag to epoch forces the epoch change even when
  779. it means discarding currently accessible snapshots.
  780. Note that when there are still snapshots in
  781. .BR /archive ,
  782. the archiver should take care
  783. of those snapshots (moving the blocks from disk to Venti)
  784. if you give it more time.
  785. .PP
  786. The
  787. .B -r
  788. flag to epoch causes it to remove any now-inaccessible
  789. snapshot directories once it has changed the epoch.
  790. This flag only makes sense in conjunction with the
  791. .B -y
  792. flag.
  793. .PP
  794. .I Epoch
  795. is a very low-level way to retire snapshots.
  796. The preferred way is by setting an automatic timer
  797. with
  798. .IR snaptime .
  799. .PP
  800. .I Halt
  801. suspends file system activity;
  802. .I unhalt
  803. resumes activity.
  804. .PP
  805. .I Label
  806. displays and edits the label associated with a block.
  807. When editing, a parameter of
  808. .B -
  809. means leave that field unchanged.
  810. Editing labels is discouraged.
  811. .PP
  812. .I Remove
  813. removes
  814. .IR files .
  815. .PP
  816. .I Snap
  817. takes a temporary snapshot of the current file system,
  818. recording it in
  819. .BI /snapshot/ yyyy / mmdd / hhmm \fR,
  820. as described in
  821. .IR fossil (4).
  822. The
  823. .B -a
  824. flag causes
  825. .I snap
  826. to take an archival snapshot, recording it in
  827. .BI /archive/ yyyy / mmdd \fR,
  828. also described in
  829. .IR fossil (4).
  830. .PP
  831. .I Snaptime
  832. displays and edits the times at which snapshots are automatically
  833. taken.
  834. An archival snapshot is taken once a day, at
  835. .IR hhmm ,
  836. while temporary snapshots are taken at multiples of
  837. .I interval
  838. minutes.
  839. Temporary snapshots are discarded once they are
  840. .I timeout
  841. minutes old.
  842. With no arguments,
  843. .I snaptime
  844. prints the current snapshot times.
  845. The
  846. .B -a
  847. and
  848. .B -s
  849. options set the archive and snapshot times.
  850. An
  851. .I hhmm
  852. or
  853. .I interval
  854. of
  855. .L none
  856. can be used to disable that kind of automatic snapshot.
  857. The
  858. .B -t
  859. option sets the snapshot timeout.
  860. If
  861. .I timeout
  862. is
  863. .LR none ,
  864. temporary snapshots are not automatically discarded.
  865. By default, all three times are set to
  866. .LR none .
  867. .PP
  868. .I Stat
  869. displays metadata for each of the named
  870. .IR files ,
  871. in the form:
  872. .IP
  873. .EX
  874. stat \fIfile elem uid gid perm length
  875. .EE
  876. .LP
  877. (Replacing
  878. .B stat
  879. with
  880. .B wstat
  881. yields a valid command.)
  882. The
  883. .I perm
  884. is an octal number less than or equal to 777,
  885. prefixed with any of the following letters
  886. to indicate additional bits.
  887. .IP
  888. .EX
  889. .ta +4n
  890. a \fRappend only
  891. d \fRdirectory
  892. l \fRexclusive use
  893. s \fRis the root of a snapshot
  894. t \fRtemporary bit
  895. A \fRMS-DOS archive bit
  896. G \fRsetgid
  897. H \fRMS-DOS hidden bit
  898. L \fRsymbolic link
  899. S \fRMS-DOS system bit
  900. U \fRsetuid
  901. Y \fRsticky
  902. .EE
  903. The bits denoted by capital letters are included
  904. to support non-Plan 9 systems.
  905. They are not made visible by the 9P protocol.
  906. .PP
  907. .I Sync
  908. writes dirty blocks in memory to the disk.
  909. .PP
  910. .I Vac
  911. prints the Venti score for a
  912. .IR vac (1)
  913. archive containing the tree rooted
  914. at
  915. .IR dir ,
  916. which must already be archived to Venti
  917. (typically
  918. .IR dir
  919. is a directory in the
  920. .B /archive
  921. tree).
  922. .PP
  923. .I Wstat
  924. changes the metadata of the named
  925. .IR file .
  926. Specifying
  927. .B -
  928. for any of the fields means ``don't change.''
  929. Attempts to change the
  930. .B d
  931. or
  932. .B s
  933. bits in the
  934. .I perm
  935. are silently ignored.
  936. .SH EXAMPLES
  937. .IR Sources ,
  938. the Plan 9 distribution file server,
  939. uses the following configuration file:
  940. .IP
  941. .EX
  942. srv -p fscons.sources
  943. srv -p fscons.sources.adduserd
  944. srv sources
  945. fsys main config /dev/sdC0/fossil.outside
  946. fsys main open -c 25600
  947. fsys main
  948. users /active/adm/users
  949. listen tcp!*!564
  950. msg -m 40 -p 10
  951. snaptime -a 0000 -s 15
  952. .EE
  953. .LP
  954. The second console is used by the daemon
  955. that creates new accounts.
  956. .PP
  957. To add a new user with
  958. .I name
  959. and
  960. .I id
  961. .B rob
  962. and create his home directory:
  963. .IP
  964. .EX
  965. uname rob rob
  966. .EE
  967. .PP
  968. To create a new group
  969. .B sys
  970. (with no home directory)
  971. and add
  972. .B rob
  973. to it:
  974. .IP
  975. .EX
  976. uname sys :sys
  977. uname sys +rob
  978. .EE