]> git.proxmox.com Git - mirror_frr.git/blame - doc/user/vtysh.rst
Merge pull request #3516 from qlyoung/doc-ip-nht-resolve-via-default
[mirror_frr.git] / doc / user / vtysh.rst
CommitLineData
0efdf0fe 1.. _vty-shell:
42fc5d26
QY
2
3*********
4VTY shell
5*********
6
c1a54c05
QY
7.. program:: configure
8
9*vtysh* provides a combined frontend to all FRR daemons in a single combined
10session. It is enabled by default at build time, but can be disabled through
11the :option:`--disable-vtysh` option to the configure script.
12
13*vtysh* has a configuration file, :file:`vtysh.conf`. The location of that
14file cannot be changed from |INSTALL_PREFIX_ETC| since it contains options
15controlling authentication behavior. This file will also not be written by
16configuration-save commands, it is intended to be updated manually by an
17administrator with an external editor.
18
19.. warning::
20
21 This also means the ``hostname`` and ``banner motd`` commands (which both do
22 have effect for vtysh) need to be manually updated in :file:`vtysh.conf`.
23
42fc5d26
QY
24
25Permissions and setup requirements
26==================================
27
28*vtysh* connects to running daemons through Unix sockets located in
c1a54c05
QY
29|INSTALL_PREFIX_STATE|. Running vtysh thus requires access to that directory,
30plus membership in the |INSTALL_VTY_GROUP| group (which is the group that the
31daemons will change ownership of their sockets to).
42fc5d26 32
c1a54c05
QY
33To restrict access to FRR configuration, make sure no unauthorized users are
34members of the |INSTALL_VTY_GROUP| group.
42fc5d26 35
a3ff0311
QY
36.. warning::
37
38 VTYSH implements a CLI option ``-u, --user`` that disallows entering the
39 characters "en" on the command line, which ideally restricts access to
40 configuration commands. However, VTYSH was never designed to be a privilege
41 broker and is not built using secure coding practices. No guarantees of
42 security are provided for this option and under no circumstances should this
43 option be used to provide any semblance of security or read-only access to
44 FRR.
45
42fc5d26
QY
46PAM support (experimental)
47--------------------------
48
c1a54c05
QY
49vtysh has working (but rather useless) PAM support. It will perform an
50"authenticate" PAM call using |PACKAGE_NAME| as service name. No other
51(accounting, session, password change) calls will be performed by vtysh.
52
53Users using vtysh still need to have appropriate access to the daemons' VTY
54sockets, usually by being member of the |INSTALL_VTY_GROUP| group. If they
55have this membership, PAM support is useless since they can connect to daemons
56and issue commands using some other tool. Alternatively, the *vtysh* binary
57could be made SGID (set group ID) to the |INSTALL_VTY_GROUP| group.
58
59.. warning::
60
61 No security guarantees are made for this configuration.
42fc5d26 62
42fc5d26 63
c1a54c05
QY
64.. index:: username USERNAME nopassword
65.. clicmd:: username USERNAME nopassword
42fc5d26 66
42fc5d26 67 If PAM support is enabled at build-time, this command allows disabling the
c1a54c05 68 use of PAM on a per-user basis. If vtysh finds that an user is trying to
42fc5d26
QY
69 use vtysh and a "nopassword" entry is found, no calls to PAM will be made
70 at all.
71
72
0efdf0fe 73.. _integrated-configuration-mode:
42fc5d26
QY
74
75Integrated configuration mode
76=============================
77
78Integrated configuration mode uses a single configuration file,
c1a54c05 79:file:`frr.conf`, for all daemons. This replaces the individual files like
42fc5d26
QY
80:file:`zebra.conf` or :file:`bgpd.conf`.
81
c1a54c05
QY
82:file:`frr.conf` is located in |INSTALL_PREFIX_ETC|. All daemons check for the
83existence of this file at startup, and if it exists will not load their
84individual configuration files. Instead, ``vtysh -b`` must be invoked to
85process :file:`frr.conf` and apply its settings to the individual daemons.
86
87.. warning::
88
89 *vtysh -b* must also be executed after restarting any daemon.
42fc5d26 90
42fc5d26
QY
91
92Configuration saving, file ownership and permissions
93----------------------------------------------------
94
c1a54c05 95The :file:`frr.conf` file is not written by any of the daemons; instead *vtysh*
d1e7591e 96contains the necessary logic to collect configuration from all of the daemons,
c1a54c05 97combine it and write it out.
42fc5d26 98
c1a54c05 99.. warning::
42fc5d26 100
c1a54c05
QY
101 Daemons must be running for *vtysh* to be able to collect their
102 configuration. Any configuration from non-running daemons is permanently
103 lost after doing a configuration save.
42fc5d26 104
c1a54c05
QY
105Since the *vtysh* command may be running as ordinary user on the system,
106configuration writes will be tried through *watchfrr*, using the ``write
107integrated`` command internally. Since *watchfrr* is running as superuser,
108*vtysh* is able to ensure correct ownership and permissions on
109:file:`frr.conf`.
42fc5d26 110
c1a54c05
QY
111If *watchfrr* is not running or the configuration write fails, *vtysh* will
112attempt to directly write to the file. This is likely to fail if running as
113unprivileged user; alternatively it may leave the file with incorrect owner or
114permissions.
42fc5d26 115
c1a54c05
QY
116Writing the configuration can be triggered directly by invoking *vtysh -w*.
117This may be useful for scripting. Note this command should be run as either the
118superuser or the FRR user.
42fc5d26 119
c1a54c05
QY
120We recommend you do not mix the use of the two types of files. Further, it is
121better not to use the integrated :file:`frr.conf` file, as any syntax error in
122it can lead to /all/ of your daemons being unable to start up. Per daemon files
123are more robust as impact of errors in configuration are limited to the daemon
124in whose file the error is made.
42fc5d26 125
c1a54c05
QY
126.. index:: service integrated-vtysh-config
127.. clicmd:: service integrated-vtysh-config
42fc5d26 128
c1a54c05
QY
129.. index:: no service integrated-vtysh-config
130.. clicmd:: no service integrated-vtysh-config
42fc5d26 131
c1a54c05
QY
132 Control whether integrated :file:`frr.conf` file is written when
133 'write file' is issued.
42fc5d26 134
c1a54c05
QY
135 These commands need to be placed in :file:`vtysh.conf` to have any effect.
136 Note that since :file:`vtysh.conf` is not written by FRR itself, they
137 therefore need to be manually placed in that file.
42fc5d26 138
c1a54c05 139 This command has 3 states:
42fc5d26 140
42fc5d26 141
c1a54c05 142 service integrated-vtysh-config
42fc5d26
QY
143 *vtysh* will always write :file:`frr.conf`.
144
145
c1a54c05 146 no service integrated-vtysh-config
42fc5d26
QY
147 *vtysh* will never write :file:`frr.conf`; instead it will ask
148 daemons to write their individual configuration files.
149
c1a54c05
QY
150 Neither option present (default)
151 *vtysh* will check whether :file:`frr.conf` exists. If it does,
152 configuration writes will update that file. Otherwise, writes are performed
42fc5d26
QY
153 through the individual daemons.
154
c1a54c05
QY
155 This command is primarily intended for packaging/distribution purposes, to
156 preset one of the two operating modes and ensure consistent operation across
157 installations.
42fc5d26 158
c1a54c05
QY
159.. index:: write integrated
160.. clicmd:: write integrated
42fc5d26 161
c1a54c05
QY
162 Unconditionally (regardless of ``service integrated-vtysh-config`` setting)
163 write out integrated :file:`frr.conf` file through *watchfrr*. If *watchfrr*
164 is not running, this command is unavailable.
42fc5d26 165
c1a54c05 166.. warning::
42fc5d26 167
c1a54c05
QY
168 Configuration changes made while some daemon is not running will be
169 invisible to that daemon. The daemon will start up with its saved
170 configuration (either in its individual configuration file, or in
171 :file:`frr.conf`). This is particularly troublesome for route-maps and
172 prefix lists, which would otherwise be synchronized between daemons.
76bd1499 173