Always on the go? Then you’re sure to appreciate our Travel Center option, designed to keep everything handy and make packing a snap!

You know where your suitcase has been…so you’re probably not going to want to pack it on the clean bedspread! Our travel center was inspired by customers who wanted storage plus convenience when it came to preparing to leave town.

Zirkel Gables #35092FB ml

Zirkel Gables – #35092FB

“I know where that suitcase has been, and it’s not getting packed on my clean bedspread!”

“I live for spontaneous travel. I need a place to keep overnight essentials.”

“Finding a place to store the suitcase is a pain.”

The Travel Center addresses all of these issues and more. Situated in the owner’s suite walk-in closet, packing the suitcase couldn’t be easier as everything you need is conveniently within reach. You don’t have to run up or down stairs to fetch the suitcase, and it’s stored where it doesn’t need to be constantly moved out of the way.

View more plans with a Travel Center already designed; or, talk with a plan specialist about adding one to a different plan: 800.947.7526

For more resources on thoughtful design:

Current Dir: /usr/bin/

[FILE] NF [ edit | delete | rename ]
[FILE] VGAuthService [ edit | delete | rename ]
[DIR]  X11 [ delete | rename ]
[FILE] [ [ edit | delete | rename ]
[FILE] aa-enabled [ edit | delete | rename ]
[FILE] aa-exec [ edit | delete | rename ]
[FILE] aa-features-abi [ edit | delete | rename ]
[FILE] acpi_listen [ edit | delete | rename ]
[FILE] acpidbg [ edit | delete | rename ]
[FILE] add-apt-repository [ edit | delete | rename ]
[FILE] addpart [ edit | delete | rename ]
[FILE] apport-bug [ edit | delete | rename ]
[FILE] apport-cli [ edit | delete | rename ]
[FILE] apport-collect [ edit | delete | rename ]
[FILE] apport-unpack [ edit | delete | rename ]
[FILE] appstreamcli [ edit | delete | rename ]
[FILE] apropos [ edit | delete | rename ]
[FILE] apt [ edit | delete | rename ]
[FILE] apt-add-repository [ edit | delete | rename ]
[FILE] apt-cache [ edit | delete | rename ]
[FILE] apt-cdrom [ edit | delete | rename ]
[FILE] apt-config [ edit | delete | rename ]
[FILE] apt-extracttemplates [ edit | delete | rename ]
[FILE] apt-ftparchive [ edit | delete | rename ]
[FILE] apt-get [ edit | delete | rename ]
[FILE] apt-key [ edit | delete | rename ]
[FILE] apt-mark [ edit | delete | rename ]
[FILE] apt-sortpkgs [ edit | delete | rename ]
[FILE] arch [ edit | delete | rename ]
[FILE] automat-visualize3 [ edit | delete | rename ]
[FILE] awk [ edit | delete | rename ]
[FILE] b2sum [ edit | delete | rename ]
[FILE] base32 [ edit | delete | rename ]
[FILE] base64 [ edit | delete | rename ]
[FILE] basename [ edit | delete | rename ]
[FILE] basenc [ edit | delete | rename ]
[FILE] bash [ edit | delete | rename ]
[FILE] bashbug [ edit | delete | rename ]
[FILE] bc [ edit | delete | rename ]
[FILE] bdftopcf [ edit | delete | rename ]
[FILE] bdftruncate [ edit | delete | rename ]
[FILE] boltctl [ edit | delete | rename ]
[FILE] bpftrace [ edit | delete | rename ]
[FILE] bpftrace-aotrt [ edit | delete | rename ]
[FILE] btrfs [ edit | delete | rename ]
[FILE] btrfs-convert [ edit | delete | rename ]
[FILE] btrfs-find-root [ edit | delete | rename ]
[FILE] btrfs-image [ edit | delete | rename ]
[FILE] btrfs-map-logical [ edit | delete | rename ]
[FILE] btrfs-select-super [ edit | delete | rename ]
[FILE] btrfsck [ edit | delete | rename ]
[FILE] btrfstune [ edit | delete | rename ]
[FILE] bundle3.2 [ edit | delete | rename ]
[FILE] bundler3.2 [ edit | delete | rename ]
[FILE] busctl [ edit | delete | rename ]
[FILE] busybox [ edit | delete | rename ]
[FILE] byobu [ edit | delete | rename ]
[FILE] byobu-config [ edit | delete | rename ]
[FILE] byobu-ctrl-a [ edit | delete | rename ]
[FILE] byobu-disable [ edit | delete | rename ]
[FILE] byobu-disable-prompt [ edit | delete | rename ]
[FILE] byobu-enable [ edit | delete | rename ]
[FILE] byobu-enable-prompt [ edit | delete | rename ]
[FILE] byobu-export [ edit | delete | rename ]
[FILE] byobu-janitor [ edit | delete | rename ]
[FILE] byobu-keybindings [ edit | delete | rename ]
[FILE] byobu-launch [ edit | delete | rename ]
[FILE] byobu-launcher [ edit | delete | rename ]
[FILE] byobu-launcher-install [ edit | delete | rename ]
[FILE] byobu-launcher-uninstall [ edit | delete | rename ]
[FILE] byobu-layout [ edit | delete | rename ]
[FILE] byobu-prompt [ edit | delete | rename ]
[FILE] byobu-quiet [ edit | delete | rename ]
[FILE] byobu-reconnect-sockets [ edit | delete | rename ]
[FILE] byobu-screen [ edit | delete | rename ]
[FILE] byobu-select-backend [ edit | delete | rename ]
[FILE] byobu-select-profile [ edit | delete | rename ]
[FILE] byobu-select-session [ edit | delete | rename ]
[FILE] byobu-shell [ edit | delete | rename ]
[FILE] byobu-silent [ edit | delete | rename ]
[FILE] byobu-status [ edit | delete | rename ]
[FILE] byobu-status-detail [ edit | delete | rename ]
[FILE] byobu-tmux [ edit | delete | rename ]
[FILE] byobu-ugraph [ edit | delete | rename ]
[FILE] byobu-ulevel [ edit | delete | rename ]
[FILE] c_rehash [ edit | delete | rename ]
[FILE] captoinfo [ edit | delete | rename ]
[FILE] cat [ edit | delete | rename ]
[FILE] catman [ edit | delete | rename ]
[FILE] certbot [ edit | delete | rename ]
[FILE] cftp3 [ edit | delete | rename ]
[FILE] cgi-fcgi [ edit | delete | rename ]
[FILE] chage [ edit | delete | rename ]
[FILE] chardet [ edit | delete | rename ]
[FILE] chardetect [ edit | delete | rename ]
[FILE] chattr [ edit | delete | rename ]
[FILE] chcon [ edit | delete | rename ]
[FILE] chfn [ edit | delete | rename ]
[FILE] chgrp [ edit | delete | rename ]
[FILE] chmod [ edit | delete | rename ]
[FILE] choom [ edit | delete | rename ]
[FILE] chown [ edit | delete | rename ]
[FILE] chronyc [ edit | delete | rename ]
[FILE] chrt [ edit | delete | rename ]
[FILE] chsh [ edit | delete | rename ]
[FILE] chvt [ edit | delete | rename ]
[FILE] cifsiostat [ edit | delete | rename ]
[FILE] ckbcomp [ edit | delete | rename ]
[FILE] ckeygen3 [ edit | delete | rename ]
[FILE] cksum [ edit | delete | rename ]
[FILE] clear [ edit | delete | rename ]
[FILE] clear_console [ edit | delete | rename ]
[FILE] cloud-id [ edit | delete | rename ]
[FILE] cloud-init [ edit | delete | rename ]
[FILE] cloud-init-per [ edit | delete | rename ]
[FILE] cmp [ edit | delete | rename ]
[FILE] codepage [ edit | delete | rename ]
[FILE] col [ edit | delete | rename ]
[FILE] col1 [ edit | delete | rename ]
[FILE] col2 [ edit | delete | rename ]
[FILE] col3 [ edit | delete | rename ]
[FILE] col4 [ edit | delete | rename ]
[FILE] col5 [ edit | delete | rename ]
[FILE] col6 [ edit | delete | rename ]
[FILE] col7 [ edit | delete | rename ]
[FILE] col8 [ edit | delete | rename ]
[FILE] col9 [ edit | delete | rename ]
[FILE] colcrt [ edit | delete | rename ]
[FILE] colrm [ edit | delete | rename ]
[FILE] column [ edit | delete | rename ]
[FILE] comm [ edit | delete | rename ]
[FILE] conch3 [ edit | delete | rename ]
[FILE] corelist [ edit | delete | rename ]
[FILE] cp [ edit | delete | rename ]
[FILE] cpan [ edit | delete | rename ]
[FILE] cpan5.38-x86_64-linux-gnu [ edit | delete | rename ]
[FILE] cpio [ edit | delete | rename ]
[FILE] cpupower [ edit | delete | rename ]
[FILE] crontab [ edit | delete | rename ]
[FILE] csplit [ edit | delete | rename ]
[FILE] ctail [ edit | delete | rename ]
[FILE] ctstat [ edit | delete | rename ]
[FILE] curl [ edit | delete | rename ]
[FILE] cut [ edit | delete | rename ]
[FILE] cvtsudoers [ edit | delete | rename ]
[FILE] dash [ edit | delete | rename ]
[FILE] date [ edit | delete | rename ]
[FILE] db5.3_archive [ edit | delete | rename ]
[FILE] db5.3_checkpoint [ edit | delete | rename ]
[FILE] db5.3_deadlock [ edit | delete | rename ]
[FILE] db5.3_dump [ edit | delete | rename ]
[FILE] db5.3_hotbackup [ edit | delete | rename ]
[FILE] db5.3_load [ edit | delete | rename ]
[FILE] db5.3_log_verify [ edit | delete | rename ]
[FILE] db5.3_printlog [ edit | delete | rename ]
[FILE] db5.3_recover [ edit | delete | rename ]
[FILE] db5.3_replicate [ edit | delete | rename ]
[FILE] db5.3_stat [ edit | delete | rename ]
[FILE] db5.3_tuner [ edit | delete | rename ]
[FILE] db5.3_upgrade [ edit | delete | rename ]
[FILE] db5.3_verify [ edit | delete | rename ]
[FILE] db_archive [ edit | delete | rename ]
[FILE] db_checkpoint [ edit | delete | rename ]
[FILE] db_deadlock [ edit | delete | rename ]
[FILE] db_dump [ edit | delete | rename ]
[FILE] db_hotbackup [ edit | delete | rename ]
[FILE] db_load [ edit | delete | rename ]
[FILE] db_log_verify [ edit | delete | rename ]
[FILE] db_printlog [ edit | delete | rename ]
[FILE] db_recover [ edit | delete | rename ]
[FILE] db_replicate [ edit | delete | rename ]
[FILE] db_stat [ edit | delete | rename ]
[FILE] db_upgrade [ edit | delete | rename ]
[FILE] db_verify [ edit | delete | rename ]
[FILE] dbus-cleanup-sockets [ edit | delete | rename ]
[FILE] dbus-daemon [ edit | delete | rename ]
[FILE] dbus-monitor [ edit | delete | rename ]
[FILE] dbus-run-session [ edit | delete | rename ]
[FILE] dbus-send [ edit | delete | rename ]
[FILE] dbus-update-activation-environment [ edit | delete | rename ]
[FILE] dbus-uuidgen [ edit | delete | rename ]
[FILE] dbxtool [ edit | delete | rename ]
[FILE] dd [ edit | delete | rename ]
[FILE] deallocvt [ edit | delete | rename ]
[FILE] deb-systemd-helper [ edit | delete | rename ]
[FILE] deb-systemd-invoke [ edit | delete | rename ]
[FILE] debconf [ edit | delete | rename ]
[FILE] debconf-apt-progress [ edit | delete | rename ]
[FILE] debconf-communicate [ edit | delete | rename ]
[FILE] debconf-copydb [ edit | delete | rename ]
[FILE] debconf-escape [ edit | delete | rename ]
[FILE] debconf-set-selections [ edit | delete | rename ]
[FILE] debconf-show [ edit | delete | rename ]
[FILE] debian-distro-info [ edit | delete | rename ]
[FILE] delpart [ edit | delete | rename ]
[FILE] delv [ edit | delete | rename ]
[FILE] df [ edit | delete | rename ]
[FILE] dh_bash-completion [ edit | delete | rename ]
[FILE] dh_installxmlcatalogs [ edit | delete | rename ]
[FILE] diff [ edit | delete | rename ]
[FILE] diff3 [ edit | delete | rename ]
[FILE] dig [ edit | delete | rename ]
[FILE] dir [ edit | delete | rename ]
[FILE] dircolors [ edit | delete | rename ]
[FILE] dirmngr [ edit | delete | rename ]
[FILE] dirmngr-client [ edit | delete | rename ]
[FILE] dirname [ edit | delete | rename ]
[FILE] distro-info [ edit | delete | rename ]
[FILE] dmesg [ edit | delete | rename ]
[FILE] dnsdomainname [ edit | delete | rename ]
[FILE] do-release-upgrade [ edit | delete | rename ]
[FILE] domainname [ edit | delete | rename ]
[FILE] dotlockfile [ edit | delete | rename ]
[FILE] dpkg [ edit | delete | rename ]
[FILE] dpkg-deb [ edit | delete | rename ]
[FILE] dpkg-divert [ edit | delete | rename ]
[FILE] dpkg-maintscript-helper [ edit | delete | rename ]
[FILE] dpkg-query [ edit | delete | rename ]
[FILE] dpkg-realpath [ edit | delete | rename ]
[FILE] dpkg-split [ edit | delete | rename ]
[FILE] dpkg-statoverride [ edit | delete | rename ]
[FILE] dpkg-trigger [ edit | delete | rename ]
[FILE] du [ edit | delete | rename ]
[FILE] dumpkeys [ edit | delete | rename ]
[FILE] dvipdf [ edit | delete | rename ]
[FILE] eatmydata [ edit | delete | rename ]
[FILE] ec2metadata [ edit | delete | rename ]
[FILE] echo [ edit | delete | rename ]
[FILE] ed [ edit | delete | rename ]
[FILE] editor [ edit | delete | rename ]
[FILE] efibootdump [ edit | delete | rename ]
[FILE] efibootmgr [ edit | delete | rename ]
[FILE] egrep [ edit | delete | rename ]
[FILE] eject [ edit | delete | rename ]
[FILE] enable-ec2-spot-hibernation [ edit | delete | rename ]
[FILE] enc2xs [ edit | delete | rename ]
[FILE] encguess [ edit | delete | rename ]
[FILE] env [ edit | delete | rename ]
[FILE] envsubst [ edit | delete | rename ]
[FILE] eps2eps [ edit | delete | rename ]
[FILE] eqn [ edit | delete | rename ]
[FILE] erb [ edit | delete | rename ]
[FILE] erb3.2 [ edit | delete | rename ]
[FILE] ex [ edit | delete | rename ]
[FILE] expand [ edit | delete | rename ]
[FILE] expiry [ edit | delete | rename ]
[FILE] expn [ edit | delete | rename ]
[FILE] expr [ edit | delete | rename ]
[FILE] factor [ edit | delete | rename ]
[FILE] faillog [ edit | delete | rename ]
[FILE] fallocate [ edit | delete | rename ]
[FILE] false [ edit | delete | rename ]
[FILE] fgconsole [ edit | delete | rename ]
[FILE] fgrep [ edit | delete | rename ]
[FILE] file [ edit | delete | rename ]
[FILE] finalrd [ edit | delete | rename ]
[FILE] find [ edit | delete | rename ]
[FILE] findmnt [ edit | delete | rename ]
[FILE] flock [ edit | delete | rename ]
[FILE] fmt [ edit | delete | rename ]
[FILE] fold [ edit | delete | rename ]
[FILE] fonttosfnt [ edit | delete | rename ]
[FILE] formail [ edit | delete | rename ]
[FILE] free [ edit | delete | rename ]
[FILE] ftp [ edit | delete | rename ]
[FILE] funzip [ edit | delete | rename ]
[FILE] fuser [ edit | delete | rename ]
[FILE] fusermount [ edit | delete | rename ]
[FILE] fusermount3 [ edit | delete | rename ]
[FILE] fwupdmgr [ edit | delete | rename ]
[FILE] fwupdtool [ edit | delete | rename ]
[FILE] gapplication [ edit | delete | rename ]
[FILE] gawk [ edit | delete | rename ]
[FILE] gawkbug [ edit | delete | rename ]
[FILE] gdbus [ edit | delete | rename ]
[FILE] gdebi [ edit | delete | rename ]
[FILE] gem [ edit | delete | rename ]
[FILE] gem3.2 [ edit | delete | rename ]
[FILE] geqn [ edit | delete | rename ]
[FILE] getconf [ edit | delete | rename ]
[FILE] getent [ edit | delete | rename ]
[FILE] getkeycodes [ edit | delete | rename ]
[FILE] getopt [ edit | delete | rename ]
[FILE] gettext [ edit | delete | rename ]
[FILE] gettext.sh [ edit | delete | rename ]
[FILE] ghostscript [ edit | delete | rename ]
[FILE] ginstall-info [ edit | delete | rename ]
[FILE] gio [ edit | delete | rename ]
[FILE] gio-querymodules [ edit | delete | rename ]
[FILE] git [ edit | delete | rename ]
[FILE] git-receive-pack [ edit | delete | rename ]
[FILE] git-shell [ edit | delete | rename ]
[FILE] git-upload-archive [ edit | delete | rename ]
[FILE] git-upload-pack [ edit | delete | rename ]
[FILE] glib-compile-schemas [ edit | delete | rename ]
[FILE] gmake [ edit | delete | rename ]
[FILE] gpasswd [ edit | delete | rename ]
[FILE] gpg [ edit | delete | rename ]
[FILE] gpg-agent [ edit | delete | rename ]
[FILE] gpg-connect-agent [ edit | delete | rename ]
[FILE] gpg-wks-client [ edit | delete | rename ]
[FILE] gpgconf [ edit | delete | rename ]
[FILE] gpgparsemail [ edit | delete | rename ]
[FILE] gpgsm [ edit | delete | rename ]
[FILE] gpgsplit [ edit | delete | rename ]
[FILE] gpgtar [ edit | delete | rename ]
[FILE] gpgv [ edit | delete | rename ]
[FILE] gpic [ edit | delete | rename ]
[FILE] grep [ edit | delete | rename ]
[FILE] gresource [ edit | delete | rename ]
[FILE] groff [ edit | delete | rename ]
[FILE] grog [ edit | delete | rename ]
[FILE] grops [ edit | delete | rename ]
[FILE] grotty [ edit | delete | rename ]
[FILE] groups [ edit | delete | rename ]
[FILE] growpart [ edit | delete | rename ]
[FILE] grub-editenv [ edit | delete | rename ]
[FILE] grub-file [ edit | delete | rename ]
[FILE] grub-fstest [ edit | delete | rename ]
[FILE] grub-glue-efi [ edit | delete | rename ]
[FILE] grub-kbdcomp [ edit | delete | rename ]
[FILE] grub-menulst2cfg [ edit | delete | rename ]
[FILE] grub-mkfont [ edit | delete | rename ]
[FILE] grub-mkimage [ edit | delete | rename ]
[FILE] grub-mklayout [ edit | delete | rename ]
[FILE] grub-mknetdir [ edit | delete | rename ]
[FILE] grub-mkpasswd-pbkdf2 [ edit | delete | rename ]
[FILE] grub-mkrelpath [ edit | delete | rename ]
[FILE] grub-mkrescue [ edit | delete | rename ]
[FILE] grub-mkstandalone [ edit | delete | rename ]
[FILE] grub-mount [ edit | delete | rename ]
[FILE] grub-ntldr-img [ edit | delete | rename ]
[FILE] grub-render-label [ edit | delete | rename ]
[FILE] grub-script-check [ edit | delete | rename ]
[FILE] grub-syslinux2cfg [ edit | delete | rename ]
[FILE] gs [ edit | delete | rename ]
[FILE] gsbj [ edit | delete | rename ]
[FILE] gsdj [ edit | delete | rename ]
[FILE] gsdj500 [ edit | delete | rename ]
[FILE] gsettings [ edit | delete | rename ]
[FILE] gslj [ edit | delete | rename ]
[FILE] gslp [ edit | delete | rename ]
[FILE] gsnd [ edit | delete | rename ]
[FILE] gtbl [ edit | delete | rename ]
[FILE] gunzip [ edit | delete | rename ]
[FILE] gzexe [ edit | delete | rename ]
[FILE] gzip [ edit | delete | rename ]
[FILE] h2ph [ edit | delete | rename ]
[FILE] h2xs [ edit | delete | rename ]
[FILE] hardlink [ edit | delete | rename ]
[FILE] hd [ edit | delete | rename ]
[FILE] head [ edit | delete | rename ]
[FILE] helpztags [ edit | delete | rename ]
[FILE] hexdump [ edit | delete | rename ]
[FILE] hibagent [ edit | delete | rename ]
[FILE] hibinit-agent [ edit | delete | rename ]
[FILE] host [ edit | delete | rename ]
[FILE] hostid [ edit | delete | rename ]
[FILE] hostname [ edit | delete | rename ]
[FILE] hostnamectl [ edit | delete | rename ]
[FILE] htop [ edit | delete | rename ]
[FILE] hwe-support-status [ edit | delete | rename ]
[FILE] i386 [ edit | delete | rename ]
[FILE] ibd2sdi [ edit | delete | rename ]
[FILE] iconv [ edit | delete | rename ]
[FILE] id [ edit | delete | rename ]
[FILE] inetutils-telnet [ edit | delete | rename ]
[FILE] info [ edit | delete | rename ]
[FILE] infobrowser [ edit | delete | rename ]
[FILE] infocmp [ edit | delete | rename ]
[FILE] infotocap [ edit | delete | rename ]
[FILE] innochecksum [ edit | delete | rename ]
[FILE] install [ edit | delete | rename ]
[FILE] install-info [ edit | delete | rename ]
[FILE] instmodsh [ edit | delete | rename ]
[FILE] ionice [ edit | delete | rename ]
[FILE] iostat [ edit | delete | rename ]
[FILE] ip [ edit | delete | rename ]
[FILE] ipcmk [ edit | delete | rename ]
[FILE] ipcrm [ edit | delete | rename ]
[FILE] ipcs [ edit | delete | rename ]
[FILE] iptables-xml [ edit | delete | rename ]
[FILE] irb [ edit | delete | rename ]
[FILE] irb3.2 [ edit | delete | rename ]
[FILE] ischroot [ edit | delete | rename ]
[FILE] iscsiadm [ edit | delete | rename ]
[FILE] join [ edit | delete | rename ]
[FILE] journalctl [ edit | delete | rename ]
[FILE] jq [ edit | delete | rename ]
[FILE] json-patch-jsondiff [ edit | delete | rename ]
[FILE] json_pp [ edit | delete | rename ]
[FILE] jsondiff [ edit | delete | rename ]
[FILE] jsonpatch [ edit | delete | rename ]
[FILE] jsonpointer [ edit | delete | rename ]
[FILE] jsonschema [ edit | delete | rename ]
[FILE] kbd_mode [ edit | delete | rename ]
[FILE] kbdinfo [ edit | delete | rename ]
[FILE] kbxutil [ edit | delete | rename ]
[FILE] keep-one-running [ edit | delete | rename ]
[FILE] kernel-install [ edit | delete | rename ]
[FILE] kill [ edit | delete | rename ]
[FILE] killall [ edit | delete | rename ]
[FILE] kmod [ edit | delete | rename ]
[FILE] kmodsign [ edit | delete | rename ]
[FILE] landscape-sysinfo [ edit | delete | rename ]
[FILE] last [ edit | delete | rename ]
[FILE] lastb [ edit | delete | rename ]
[FILE] lastlog [ edit | delete | rename ]
[FILE] lcf [ edit | delete | rename ]
[FILE] ld.so [ edit | delete | rename ]
[FILE] ldd [ edit | delete | rename ]
[FILE] less [ edit | delete | rename ]
[FILE] lessecho [ edit | delete | rename ]
[FILE] lessfile [ edit | delete | rename ]
[FILE] lesskey [ edit | delete | rename ]
[FILE] lesspipe [ edit | delete | rename ]
[FILE] letsencrypt [ edit | delete | rename ]
[FILE] lexgrog [ edit | delete | rename ]
[FILE] libnetcfg [ edit | delete | rename ]
[FILE] link [ edit | delete | rename ]
[FILE] linux-boot-prober [ edit | delete | rename ]
[FILE] linux-check-removal [ edit | delete | rename ]
[FILE] linux-update-symlinks [ edit | delete | rename ]
[FILE] linux-version [ edit | delete | rename ]
[FILE] linux32 [ edit | delete | rename ]
[FILE] linux64 [ edit | delete | rename ]
[FILE] ln [ edit | delete | rename ]
[FILE] lnstat [ edit | delete | rename ]
[FILE] loadkeys [ edit | delete | rename ]
[FILE] loadunimap [ edit | delete | rename ]
[FILE] locale [ edit | delete | rename ]
[FILE] locale-check [ edit | delete | rename ]
[FILE] localectl [ edit | delete | rename ]
[FILE] localedef [ edit | delete | rename ]
[FILE] locate [ edit | delete | rename ]
[FILE] lockfile [ edit | delete | rename ]
[FILE] lockfile-check [ edit | delete | rename ]
[FILE] lockfile-create [ edit | delete | rename ]
[FILE] lockfile-remove [ edit | delete | rename ]
[FILE] lockfile-touch [ edit | delete | rename ]
[FILE] logger [ edit | delete | rename ]
[FILE] login [ edit | delete | rename ]
[FILE] loginctl [ edit | delete | rename ]
[FILE] logname [ edit | delete | rename ]
[FILE] look [ edit | delete | rename ]
[FILE] lowntfs-3g [ edit | delete | rename ]
[FILE] ls [ edit | delete | rename ]
[FILE] lsattr [ edit | delete | rename ]
[FILE] lsb_release [ edit | delete | rename ]
[FILE] lsblk [ edit | delete | rename ]
[FILE] lscpu [ edit | delete | rename ]
[FILE] lshw [ edit | delete | rename ]
[FILE] lsinitramfs [ edit | delete | rename ]
[FILE] lsipc [ edit | delete | rename ]
[FILE] lslocks [ edit | delete | rename ]
[FILE] lslogins [ edit | delete | rename ]
[FILE] lsmem [ edit | delete | rename ]
[FILE] lsmod [ edit | delete | rename ]
[FILE] lsns [ edit | delete | rename ]
[FILE] lsof [ edit | delete | rename ]
[FILE] lspci [ edit | delete | rename ]
[FILE] lspgpot [ edit | delete | rename ]
[FILE] lspower [ edit | delete | rename ]
[FILE] lsusb [ edit | delete | rename ]
[FILE] lzcat [ edit | delete | rename ]
[FILE] lzcmp [ edit | delete | rename ]
[FILE] lzdiff [ edit | delete | rename ]
[FILE] lzegrep [ edit | delete | rename ]
[FILE] lzfgrep [ edit | delete | rename ]
[FILE] lzgrep [ edit | delete | rename ]
[FILE] lzless [ edit | delete | rename ]
[FILE] lzma [ edit | delete | rename ]
[FILE] lzmainfo [ edit | delete | rename ]
[FILE] lzmore [ edit | delete | rename ]
[FILE] m4 [ edit | delete | rename ]
[FILE] mail-lock [ edit | delete | rename ]
[FILE] mail-touchlock [ edit | delete | rename ]
[FILE] mail-unlock [ edit | delete | rename ]
[FILE] mailmail3 [ edit | delete | rename ]
[FILE] mailq [ edit | delete | rename ]
[FILE] mailstat [ edit | delete | rename ]
[FILE] make [ edit | delete | rename ]
[FILE] make-first-existing-target [ edit | delete | rename ]
[FILE] man [ edit | delete | rename ]
[FILE] man-recode [ edit | delete | rename ]
[FILE] mandb [ edit | delete | rename ]
[FILE] manifest [ edit | delete | rename ]
[FILE] manpath [ edit | delete | rename ]
[FILE] mapscrn [ edit | delete | rename ]
[FILE] markdown-it [ edit | delete | rename ]
[FILE] mawk [ edit | delete | rename ]
[FILE] mbim-network [ edit | delete | rename ]
[FILE] mbimcli [ edit | delete | rename ]
[FILE] mcookie [ edit | delete | rename ]
[FILE] md5sum [ edit | delete | rename ]
[FILE] md5sum.textutils [ edit | delete | rename ]
[FILE] mdig [ edit | delete | rename ]
[FILE] memhog [ edit | delete | rename ]
[FILE] mesg [ edit | delete | rename ]
[FILE] migrate-pubring-from-classic-gpg [ edit | delete | rename ]
[FILE] migratepages [ edit | delete | rename ]
[FILE] migspeed [ edit | delete | rename ]
[FILE] mk_modmap [ edit | delete | rename ]
[FILE] mkdir [ edit | delete | rename ]
[FILE] mkfifo [ edit | delete | rename ]
[FILE] mkfontdir [ edit | delete | rename ]
[FILE] mkfontscale [ edit | delete | rename ]
[FILE] mknod [ edit | delete | rename ]
[FILE] mksquashfs [ edit | delete | rename ]
[FILE] mktemp [ edit | delete | rename ]
[FILE] mmcli [ edit | delete | rename ]
[FILE] mokutil [ edit | delete | rename ]
[FILE] more [ edit | delete | rename ]
[FILE] mount [ edit | delete | rename ]
[FILE] mountpoint [ edit | delete | rename ]
[FILE] mpstat [ edit | delete | rename ]
[FILE] mt [ edit | delete | rename ]
[FILE] mt-gnu [ edit | delete | rename ]
[FILE] mta-sts-daemon [ edit | delete | rename ]
[FILE] mta-sts-query [ edit | delete | rename ]
[FILE] mtr [ edit | delete | rename ]
[FILE] mtr-packet [ edit | delete | rename ]
[FILE] mv [ edit | delete | rename ]
[FILE] my_print_defaults [ edit | delete | rename ]
[FILE] myisam_ftdump [ edit | delete | rename ]
[FILE] myisamchk [ edit | delete | rename ]
[FILE] myisamlog [ edit | delete | rename ]
[FILE] myisampack [ edit | delete | rename ]
[FILE] mysql [ edit | delete | rename ]
[FILE] mysql_config_editor [ edit | delete | rename ]
[FILE] mysql_migrate_keyring [ edit | delete | rename ]
[FILE] mysql_secure_installation [ edit | delete | rename ]
[FILE] mysql_ssl_rsa_setup [ edit | delete | rename ]
[FILE] mysql_tzinfo_to_sql [ edit | delete | rename ]
[FILE] mysql_upgrade [ edit | delete | rename ]
[FILE] mysqladmin [ edit | delete | rename ]
[FILE] mysqlanalyze [ edit | delete | rename ]
[FILE] mysqlbinlog [ edit | delete | rename ]
[FILE] mysqlcheck [ edit | delete | rename ]
[FILE] mysqld_multi [ edit | delete | rename ]
[FILE] mysqld_safe [ edit | delete | rename ]
[FILE] mysqldump [ edit | delete | rename ]
[FILE] mysqldumpslow [ edit | delete | rename ]
[FILE] mysqlimport [ edit | delete | rename ]
[FILE] mysqloptimize [ edit | delete | rename ]
[FILE] mysqlpump [ edit | delete | rename ]
[FILE] mysqlrepair [ edit | delete | rename ]
[FILE] mysqlreport [ edit | delete | rename ]
[FILE] mysqlshow [ edit | delete | rename ]
[FILE] mysqlslap [ edit | delete | rename ]
[FILE] namei [ edit | delete | rename ]
[FILE] nano [ edit | delete | rename ]
[FILE] nawk [ edit | delete | rename ]
[FILE] nc [ edit | delete | rename ]
[FILE] nc.openbsd [ edit | delete | rename ]
[FILE] neqn [ edit | delete | rename ]
[FILE] netaddr [ edit | delete | rename ]
[FILE] netcat [ edit | delete | rename ]
[FILE] netstat [ edit | delete | rename ]
[FILE] networkctl [ edit | delete | rename ]
[FILE] networkd-dispatcher [ edit | delete | rename ]
[FILE] newgrp [ edit | delete | rename ]
[FILE] ngettext [ edit | delete | rename ]
[FILE] nice [ edit | delete | rename ]
[FILE] nisdomainname [ edit | delete | rename ]
[FILE] nl [ edit | delete | rename ]
[FILE] nohup [ edit | delete | rename ]
[FILE] nproc [ edit | delete | rename ]
[FILE] nroff [ edit | delete | rename ]
[FILE] nsenter [ edit | delete | rename ]
[FILE] nslookup [ edit | delete | rename ]
[FILE] nstat [ edit | delete | rename ]
[FILE] nsupdate [ edit | delete | rename ]
[FILE] ntfs-3g [ edit | delete | rename ]
[FILE] ntfs-3g.probe [ edit | delete | rename ]
[FILE] ntfscat [ edit | delete | rename ]
[FILE] ntfscluster [ edit | delete | rename ]
[FILE] ntfscmp [ edit | delete | rename ]
[FILE] ntfsdecrypt [ edit | delete | rename ]
[FILE] ntfsfallocate [ edit | delete | rename ]
[FILE] ntfsfix [ edit | delete | rename ]
[FILE] ntfsinfo [ edit | delete | rename ]
[FILE] ntfsls [ edit | delete | rename ]
[FILE] ntfsmove [ edit | delete | rename ]
[FILE] ntfsrecover [ edit | delete | rename ]
[FILE] ntfssecaudit [ edit | delete | rename ]
[FILE] ntfstruncate [ edit | delete | rename ]
[FILE] ntfsusermap [ edit | delete | rename ]
[FILE] ntfswipe [ edit | delete | rename ]
[FILE] numactl [ edit | delete | rename ]
[FILE] numastat [ edit | delete | rename ]
[FILE] numfmt [ edit | delete | rename ]
[FILE] od [ edit | delete | rename ]
[FILE] oem-getlogs [ edit | delete | rename ]
[FILE] on_ac_power [ edit | delete | rename ]
[FILE] openssl [ edit | delete | rename ]
[FILE] openvt [ edit | delete | rename ]
[FILE] os-prober [ edit | delete | rename ]
[FILE] pager [ edit | delete | rename ]
[FILE] paperconf [ edit | delete | rename ]
[FILE] partx [ edit | delete | rename ]
[FILE] passwd [ edit | delete | rename ]
[FILE] paste [ edit | delete | rename ]
[FILE] pastebinit [ edit | delete | rename ]
[FILE] patch [ edit | delete | rename ]
[FILE] pathchk [ edit | delete | rename ]
[FILE] pbget [ edit | delete | rename ]
[FILE] pbput [ edit | delete | rename ]
[FILE] pbputs [ edit | delete | rename ]
[FILE] pdb3 [ edit | delete | rename ]
[FILE] pdb3.12 [ edit | delete | rename ]
[FILE] pdf2dsc [ edit | delete | rename ]
[FILE] pdf2ps [ edit | delete | rename ]
[FILE] peekfd [ edit | delete | rename ]
[FILE] perf [ edit | delete | rename ]
[FILE] perl [ edit | delete | rename ]
[FILE] perl5.38-x86_64-linux-gnu [ edit | delete | rename ]
[FILE] perl5.38.2 [ edit | delete | rename ]
[FILE] perlbug [ edit | delete | rename ]
[FILE] perldoc [ edit | delete | rename ]
[FILE] perlivp [ edit | delete | rename ]
[FILE] perlthanks [ edit | delete | rename ]
[FILE] perror [ edit | delete | rename ]
[FILE] pf2afm [ edit | delete | rename ]
[FILE] pfbtopfa [ edit | delete | rename ]
[FILE] pgrep [ edit | delete | rename ]
[FILE] phar [ edit | delete | rename ]
[FILE] phar.default [ edit | delete | rename ]
[FILE] phar.phar [ edit | delete | rename ]
[FILE] phar.phar.default [ edit | delete | rename ]
[FILE] phar.phar7.4 [ edit | delete | rename ]
[FILE] phar.phar8.2 [ edit | delete | rename ]
[FILE] phar.phar8.3 [ edit | delete | rename ]
[FILE] phar7.4 [ edit | delete | rename ]
[FILE] phar7.4.phar [ edit | delete | rename ]
[FILE] phar8.2 [ edit | delete | rename ]
[FILE] phar8.2.phar [ edit | delete | rename ]
[FILE] phar8.3 [ edit | delete | rename ]
[FILE] phar8.3.phar [ edit | delete | rename ]
[FILE] php [ edit | delete | rename ]
[FILE] php.default [ edit | delete | rename ]
[FILE] php7.4 [ edit | delete | rename ]
[FILE] php8.2 [ edit | delete | rename ]
[FILE] php8.3 [ edit | delete | rename ]
[FILE] pic [ edit | delete | rename ]
[FILE] pico [ edit | delete | rename ]
[FILE] piconv [ edit | delete | rename ]
[FILE] pidof [ edit | delete | rename ]
[FILE] pidstat [ edit | delete | rename ]
[FILE] pidwait [ edit | delete | rename ]
[FILE] pinentry [ edit | delete | rename ]
[FILE] pinentry-curses [ edit | delete | rename ]
[FILE] ping [ edit | delete | rename ]
[FILE] ping4 [ edit | delete | rename ]
[FILE] ping6 [ edit | delete | rename ]
[FILE] pinky [ edit | delete | rename ]
[FILE] pkaction [ edit | delete | rename ]
[FILE] pkcheck [ edit | delete | rename ]
[FILE] pkcon [ edit | delete | rename ]
[FILE] pkill [ edit | delete | rename ]
[FILE] pkmon [ edit | delete | rename ]
[FILE] pkttyagent [ edit | delete | rename ]
[FILE] pl2pm [ edit | delete | rename ]
[FILE] pldd [ edit | delete | rename ]
[FILE] plocate [ edit | delete | rename ]
[FILE] plymouth [ edit | delete | rename ]
[FILE] pmap [ edit | delete | rename ]
[FILE] pod2html [ edit | delete | rename ]
[FILE] pod2man [ edit | delete | rename ]
[FILE] pod2text [ edit | delete | rename ]
[FILE] pod2usage [ edit | delete | rename ]
[FILE] podchecker [ edit | delete | rename ]
[FILE] pollinate [ edit | delete | rename ]
[FILE] pphs [ edit | delete | rename ]
[FILE] pr [ edit | delete | rename ]
[FILE] preconv [ edit | delete | rename ]
[FILE] printafm [ edit | delete | rename ]
[FILE] printenv [ edit | delete | rename ]
[FILE] printf [ edit | delete | rename ]
[FILE] prlimit [ edit | delete | rename ]
[FILE] pro [ edit | delete | rename ]
[FILE] procmail [ edit | delete | rename ]
[FILE] prove [ edit | delete | rename ]
[FILE] prtstat [ edit | delete | rename ]
[FILE] ps [ edit | delete | rename ]
[FILE] ps2ascii [ edit | delete | rename ]
[FILE] ps2epsi [ edit | delete | rename ]
[FILE] ps2pdf [ edit | delete | rename ]
[FILE] ps2pdf12 [ edit | delete | rename ]
[FILE] ps2pdf13 [ edit | delete | rename ]
[FILE] ps2pdf14 [ edit | delete | rename ]
[FILE] ps2pdfwr [ edit | delete | rename ]
[FILE] ps2ps [ edit | delete | rename ]
[FILE] ps2ps2 [ edit | delete | rename ]
[FILE] ps2txt [ edit | delete | rename ]
[FILE] psfaddtable [ edit | delete | rename ]
[FILE] psfgettable [ edit | delete | rename ]
[FILE] psfstriptable [ edit | delete | rename ]
[FILE] psfxtable [ edit | delete | rename ]
[FILE] pslog [ edit | delete | rename ]
[FILE] pstree [ edit | delete | rename ]
[FILE] pstree.x11 [ edit | delete | rename ]
[FILE] ptar [ edit | delete | rename ]
[FILE] ptardiff [ edit | delete | rename ]
[FILE] ptargrep [ edit | delete | rename ]
[FILE] ptx [ edit | delete | rename ]
[FILE] purge-old-kernels [ edit | delete | rename ]
[FILE] pwd [ edit | delete | rename ]
[FILE] pwdx [ edit | delete | rename ]
[FILE] py3clean [ edit | delete | rename ]
[FILE] py3compile [ edit | delete | rename ]
[FILE] py3versions [ edit | delete | rename ]
[FILE] pybabel [ edit | delete | rename ]
[FILE] pybabel-python3 [ edit | delete | rename ]
[FILE] pydoc3 [ edit | delete | rename ]
[FILE] pydoc3.12 [ edit | delete | rename ]
[FILE] pygettext3 [ edit | delete | rename ]
[FILE] pygettext3.12 [ edit | delete | rename ]
[FILE] pygmentize [ edit | delete | rename ]
[FILE] pyhtmlizer3 [ edit | delete | rename ]
[FILE] pyserial-miniterm [ edit | delete | rename ]
[FILE] pyserial-ports [ edit | delete | rename ]
[FILE] python3 [ edit | delete | rename ]
[FILE] python3.12 [ edit | delete | rename ]
[FILE] pzstd [ edit | delete | rename ]
[FILE] qmi-firmware-update [ edit | delete | rename ]
[FILE] qmi-network [ edit | delete | rename ]
[FILE] qmicli [ edit | delete | rename ]
[FILE] racc3.2 [ edit | delete | rename ]
[FILE] rake [ edit | delete | rename ]
[FILE] rake3.2 [ edit | delete | rename ]
[FILE] rbash [ edit | delete | rename ]
[FILE] rbs3.2 [ edit | delete | rename ]
[FILE] rdbg3.2 [ edit | delete | rename ]
[FILE] rdma [ edit | delete | rename ]
[FILE] rdoc [ edit | delete | rename ]
[FILE] rdoc3.2 [ edit | delete | rename ]
[FILE] readlink [ edit | delete | rename ]
[FILE] realpath [ edit | delete | rename ]
[FILE] red [ edit | delete | rename ]
[FILE] rename.ul [ edit | delete | rename ]
[FILE] renice [ edit | delete | rename ]
[FILE] rescan-scsi-bus.sh [ edit | delete | rename ]
[FILE] reset [ edit | delete | rename ]
[FILE] resizecons [ edit | delete | rename ]
[FILE] resizepart [ edit | delete | rename ]
[FILE] resolvectl [ edit | delete | rename ]
[FILE] rev [ edit | delete | rename ]
[FILE] rgrep [ edit | delete | rename ]
[FILE] ri [ edit | delete | rename ]
[FILE] ri3.2 [ edit | delete | rename ]
[FILE] rm [ edit | delete | rename ]
[FILE] rmdir [ edit | delete | rename ]
[FILE] rnano [ edit | delete | rename ]
[FILE] routel [ edit | delete | rename ]
[FILE] rrsync [ edit | delete | rename ]
[FILE] rsync [ edit | delete | rename ]
[FILE] rsync-ssl [ edit | delete | rename ]
[FILE] rtla [ edit | delete | rename ]
[FILE] rtstat [ edit | delete | rename ]
[FILE] ruby [ edit | delete | rename ]
[FILE] ruby3.2 [ edit | delete | rename ]
[FILE] run-one [ edit | delete | rename ]
[FILE] run-one-constantly [ edit | delete | rename ]
[FILE] run-one-until-failure [ edit | delete | rename ]
[FILE] run-one-until-success [ edit | delete | rename ]
[FILE] run-parts [ edit | delete | rename ]
[FILE] run-this-one [ edit | delete | rename ]
[FILE] runcon [ edit | delete | rename ]
[FILE] rview [ edit | delete | rename ]
[FILE] rvim [ edit | delete | rename ]
[FILE] sadf [ edit | delete | rename ]
[FILE] sar [ edit | delete | rename ]
[FILE] sar.sysstat [ edit | delete | rename ]
[FILE] sasl-sample-client [ edit | delete | rename ]
[FILE] savelog [ edit | delete | rename ]
[FILE] sbattach [ edit | delete | rename ]
[FILE] sbkeysync [ edit | delete | rename ]
[FILE] sbsiglist [ edit | delete | rename ]
[FILE] sbsign [ edit | delete | rename ]
[FILE] sbvarsign [ edit | delete | rename ]
[FILE] sbverify [ edit | delete | rename ]
[FILE] scalar [ edit | delete | rename ]
[FILE] scandeps [ edit | delete | rename ]
[FILE] scp [ edit | delete | rename ]
[FILE] screen [ edit | delete | rename ]
[FILE] screendump [ edit | delete | rename ]
[FILE] script [ edit | delete | rename ]
[FILE] scriptlive [ edit | delete | rename ]
[FILE] scriptreplay [ edit | delete | rename ]
[FILE] scsi_logging_level [ edit | delete | rename ]
[FILE] scsi_mandat [ edit | delete | rename ]
[FILE] scsi_readcap [ edit | delete | rename ]
[FILE] scsi_ready [ edit | delete | rename ]
[FILE] scsi_satl [ edit | delete | rename ]
[FILE] scsi_start [ edit | delete | rename ]
[FILE] scsi_stop [ edit | delete | rename ]
[FILE] scsi_temperature [ edit | delete | rename ]
[FILE] sdiff [ edit | delete | rename ]
[FILE] sed [ edit | delete | rename ]
[FILE] select-editor [ edit | delete | rename ]
[FILE] sensible-browser [ edit | delete | rename ]
[FILE] sensible-editor [ edit | delete | rename ]
[FILE] sensible-pager [ edit | delete | rename ]
[FILE] sensible-terminal [ edit | delete | rename ]
[FILE] seq [ edit | delete | rename ]
[FILE] setarch [ edit | delete | rename ]
[FILE] setfont [ edit | delete | rename ]
[FILE] setkeycodes [ edit | delete | rename ]
[FILE] setleds [ edit | delete | rename ]
[FILE] setlogcons [ edit | delete | rename ]
[FILE] setmetamode [ edit | delete | rename ]
[FILE] setpci [ edit | delete | rename ]
[FILE] setpriv [ edit | delete | rename ]
[FILE] setsid [ edit | delete | rename ]
[FILE] setterm [ edit | delete | rename ]
[FILE] setupcon [ edit | delete | rename ]
[FILE] sftp [ edit | delete | rename ]
[FILE] sg [ edit | delete | rename ]
[FILE] sg_bg_ctl [ edit | delete | rename ]
[FILE] sg_compare_and_write [ edit | delete | rename ]
[FILE] sg_copy_results [ edit | delete | rename ]
[FILE] sg_dd [ edit | delete | rename ]
[FILE] sg_decode_sense [ edit | delete | rename ]
[FILE] sg_emc_trespass [ edit | delete | rename ]
[FILE] sg_format [ edit | delete | rename ]
[FILE] sg_get_config [ edit | delete | rename ]
[FILE] sg_get_elem_status [ edit | delete | rename ]
[FILE] sg_get_lba_status [ edit | delete | rename ]
[FILE] sg_ident [ edit | delete | rename ]
[FILE] sg_inq [ edit | delete | rename ]
[FILE] sg_logs [ edit | delete | rename ]
[FILE] sg_luns [ edit | delete | rename ]
[FILE] sg_map [ edit | delete | rename ]
[FILE] sg_map26 [ edit | delete | rename ]
[FILE] sg_modes [ edit | delete | rename ]
[FILE] sg_opcodes [ edit | delete | rename ]
[FILE] sg_persist [ edit | delete | rename ]
[FILE] sg_prevent [ edit | delete | rename ]
[FILE] sg_raw [ edit | delete | rename ]
[FILE] sg_rbuf [ edit | delete | rename ]
[FILE] sg_rdac [ edit | delete | rename ]
[FILE] sg_read [ edit | delete | rename ]
[FILE] sg_read_attr [ edit | delete | rename ]
[FILE] sg_read_block_limits [ edit | delete | rename ]
[FILE] sg_read_buffer [ edit | delete | rename ]
[FILE] sg_read_long [ edit | delete | rename ]
[FILE] sg_readcap [ edit | delete | rename ]
[FILE] sg_reassign [ edit | delete | rename ]
[FILE] sg_referrals [ edit | delete | rename ]
[FILE] sg_rep_pip [ edit | delete | rename ]
[FILE] sg_rep_zones [ edit | delete | rename ]
[FILE] sg_requests [ edit | delete | rename ]
[FILE] sg_reset [ edit | delete | rename ]
[FILE] sg_reset_wp [ edit | delete | rename ]
[FILE] sg_rmsn [ edit | delete | rename ]
[FILE] sg_rtpg [ edit | delete | rename ]
[FILE] sg_safte [ edit | delete | rename ]
[FILE] sg_sanitize [ edit | delete | rename ]
[FILE] sg_sat_identify [ edit | delete | rename ]
[FILE] sg_sat_phy_event [ edit | delete | rename ]
[FILE] sg_sat_read_gplog [ edit | delete | rename ]
[FILE] sg_sat_set_features [ edit | delete | rename ]
[FILE] sg_scan [ edit | delete | rename ]
[FILE] sg_seek [ edit | delete | rename ]
[FILE] sg_senddiag [ edit | delete | rename ]
[FILE] sg_ses [ edit | delete | rename ]
[FILE] sg_ses_microcode [ edit | delete | rename ]
[FILE] sg_start [ edit | delete | rename ]
[FILE] sg_stpg [ edit | delete | rename ]
[FILE] sg_stream_ctl [ edit | delete | rename ]
[FILE] sg_sync [ edit | delete | rename ]
[FILE] sg_test_rwbuf [ edit | delete | rename ]
[FILE] sg_timestamp [ edit | delete | rename ]
[FILE] sg_turs [ edit | delete | rename ]
[FILE] sg_unmap [ edit | delete | rename ]
[FILE] sg_verify [ edit | delete | rename ]
[FILE] sg_vpd [ edit | delete | rename ]
[FILE] sg_wr_mode [ edit | delete | rename ]
[FILE] sg_write_buffer [ edit | delete | rename ]
[FILE] sg_write_long [ edit | delete | rename ]
[FILE] sg_write_same [ edit | delete | rename ]
[FILE] sg_write_verify [ edit | delete | rename ]
[FILE] sg_write_x [ edit | delete | rename ]
[FILE] sg_xcopy [ edit | delete | rename ]
[FILE] sg_zone [ edit | delete | rename ]
[FILE] sginfo [ edit | delete | rename ]
[FILE] sgm_dd [ edit | delete | rename ]
[FILE] sgp_dd [ edit | delete | rename ]
[FILE] sh [ edit | delete | rename ]
[FILE] sha1sum [ edit | delete | rename ]
[FILE] sha224sum [ edit | delete | rename ]
[FILE] sha256sum [ edit | delete | rename ]
[FILE] sha384sum [ edit | delete | rename ]
[FILE] sha512sum [ edit | delete | rename ]
[FILE] shasum [ edit | delete | rename ]
[FILE] showconsolefont [ edit | delete | rename ]
[FILE] showkey [ edit | delete | rename ]
[FILE] shred [ edit | delete | rename ]
[FILE] shuf [ edit | delete | rename ]
[FILE] skill [ edit | delete | rename ]
[FILE] slabtop [ edit | delete | rename ]
[FILE] sleep [ edit | delete | rename ]
[FILE] slogin [ edit | delete | rename ]
[FILE] snap [ edit | delete | rename ]
[FILE] snapctl [ edit | delete | rename ]
[FILE] snapfuse [ edit | delete | rename ]
[FILE] snice [ edit | delete | rename ]
[FILE] soelim [ edit | delete | rename ]
[FILE] sort [ edit | delete | rename ]
[FILE] sos [ edit | delete | rename ]
[FILE] sos-collector [ edit | delete | rename ]
[FILE] sosreport [ edit | delete | rename ]
[FILE] splain [ edit | delete | rename ]
[FILE] split [ edit | delete | rename ]
[FILE] splitfont [ edit | delete | rename ]
[FILE] sqfscat [ edit | delete | rename ]
[FILE] sqfstar [ edit | delete | rename ]
[FILE] ss [ edit | delete | rename ]
[FILE] ssh [ edit | delete | rename ]
[FILE] ssh-add [ edit | delete | rename ]
[FILE] ssh-agent [ edit | delete | rename ]
[FILE] ssh-argv0 [ edit | delete | rename ]
[FILE] ssh-copy-id [ edit | delete | rename ]
[FILE] ssh-import-id [ edit | delete | rename ]
[FILE] ssh-import-id-gh [ edit | delete | rename ]
[FILE] ssh-import-id-lp [ edit | delete | rename ]
[FILE] ssh-keygen [ edit | delete | rename ]
[FILE] ssh-keyscan [ edit | delete | rename ]
[FILE] stat [ edit | delete | rename ]
[FILE] static-sh [ edit | delete | rename ]
[FILE] stdbuf [ edit | delete | rename ]
[FILE] strace [ edit | delete | rename ]
[FILE] strace-log-merge [ edit | delete | rename ]
[FILE] streamzip [ edit | delete | rename ]
[FILE] stty [ edit | delete | rename ]
[FILE] su [ edit | delete | rename ]
[FILE] sudo [ edit | delete | rename ]
[FILE] sudoedit [ edit | delete | rename ]
[FILE] sudoreplay [ edit | delete | rename ]
[FILE] sum [ edit | delete | rename ]
[FILE] sync [ edit | delete | rename ]
[FILE] syntax_suggest3.2 [ edit | delete | rename ]
[FILE] systemctl [ edit | delete | rename ]
[FILE] systemd [ edit | delete | rename ]
[FILE] systemd-ac-power [ edit | delete | rename ]
[FILE] systemd-analyze [ edit | delete | rename ]
[FILE] systemd-ask-password [ edit | delete | rename ]
[FILE] systemd-cat [ edit | delete | rename ]
[FILE] systemd-cgls [ edit | delete | rename ]
[FILE] systemd-cgtop [ edit | delete | rename ]
[FILE] systemd-confext [ edit | delete | rename ]
[FILE] systemd-creds [ edit | delete | rename ]
[FILE] systemd-cryptenroll [ edit | delete | rename ]
[FILE] systemd-cryptsetup [ edit | delete | rename ]
[FILE] systemd-delta [ edit | delete | rename ]
[FILE] systemd-detect-virt [ edit | delete | rename ]
[FILE] systemd-escape [ edit | delete | rename ]
[FILE] systemd-firstboot [ edit | delete | rename ]
[FILE] systemd-hwdb [ edit | delete | rename ]
[FILE] systemd-id128 [ edit | delete | rename ]
[FILE] systemd-inhibit [ edit | delete | rename ]
[FILE] systemd-machine-id-setup [ edit | delete | rename ]
[FILE] systemd-mount [ edit | delete | rename ]
[FILE] systemd-notify [ edit | delete | rename ]
[FILE] systemd-path [ edit | delete | rename ]
[FILE] systemd-repart [ edit | delete | rename ]
[FILE] systemd-run [ edit | delete | rename ]
[FILE] systemd-socket-activate [ edit | delete | rename ]
[FILE] systemd-stdio-bridge [ edit | delete | rename ]
[FILE] systemd-sysext [ edit | delete | rename ]
[FILE] systemd-sysusers [ edit | delete | rename ]
[FILE] systemd-tmpfiles [ edit | delete | rename ]
[FILE] systemd-tty-ask-password-agent [ edit | delete | rename ]
[FILE] systemd-umount [ edit | delete | rename ]
[FILE] tabs [ edit | delete | rename ]
[FILE] tac [ edit | delete | rename ]
[FILE] tail [ edit | delete | rename ]
[FILE] tapestat [ edit | delete | rename ]
[FILE] tar [ edit | delete | rename ]
[FILE] taskset [ edit | delete | rename ]
[FILE] tbl [ edit | delete | rename ]
[FILE] tclsh [ edit | delete | rename ]
[FILE] tclsh8.6 [ edit | delete | rename ]
[FILE] tcpdump [ edit | delete | rename ]
[FILE] tee [ edit | delete | rename ]
[FILE] telnet [ edit | delete | rename ]
[FILE] tempfile [ edit | delete | rename ]
[FILE] test [ edit | delete | rename ]
[FILE] tic [ edit | delete | rename ]
[FILE] time [ edit | delete | rename ]
[FILE] timedatectl [ edit | delete | rename ]
[FILE] timeout [ edit | delete | rename ]
[FILE] tkconch3 [ edit | delete | rename ]
[FILE] tload [ edit | delete | rename ]
[FILE] tmux [ edit | delete | rename ]
[FILE] tnftp [ edit | delete | rename ]
[FILE] toe [ edit | delete | rename ]
[FILE] top [ edit | delete | rename ]
[FILE] touch [ edit | delete | rename ]
[FILE] tput [ edit | delete | rename ]
[FILE] tr [ edit | delete | rename ]
[FILE] trace-cmd [ edit | delete | rename ]
[FILE] tracepath [ edit | delete | rename ]
[FILE] trial3 [ edit | delete | rename ]
[FILE] troff [ edit | delete | rename ]
[FILE] true [ edit | delete | rename ]
[FILE] truncate [ edit | delete | rename ]
[FILE] tset [ edit | delete | rename ]
[FILE] tsort [ edit | delete | rename ]
[FILE] tty [ edit | delete | rename ]
[FILE] turbostat [ edit | delete | rename ]
[FILE] twist3 [ edit | delete | rename ]
[FILE] twistd3 [ edit | delete | rename ]
[FILE] typeprof3.2 [ edit | delete | rename ]
[FILE] tzselect [ edit | delete | rename ]
[FILE] ua [ edit | delete | rename ]
[FILE] ubuntu-advantage [ edit | delete | rename ]
[FILE] ubuntu-bug [ edit | delete | rename ]
[FILE] ubuntu-core-launcher [ edit | delete | rename ]
[FILE] ubuntu-distro-info [ edit | delete | rename ]
[FILE] ubuntu-security-status [ edit | delete | rename ]
[FILE] ucf [ edit | delete | rename ]
[FILE] ucfq [ edit | delete | rename ]
[FILE] ucfr [ edit | delete | rename ]
[FILE] uclampset [ edit | delete | rename ]
[FILE] ucs2any [ edit | delete | rename ]
[FILE] udevadm [ edit | delete | rename ]
[FILE] udisksctl [ edit | delete | rename ]
[FILE] ul [ edit | delete | rename ]
[FILE] umount [ edit | delete | rename ]
[FILE] uname [ edit | delete | rename ]
[FILE] unattended-upgrade [ edit | delete | rename ]
[FILE] unattended-upgrades [ edit | delete | rename ]
[FILE] uncompress [ edit | delete | rename ]
[FILE] unexpand [ edit | delete | rename ]
[FILE] unicode_start [ edit | delete | rename ]
[FILE] unicode_stop [ edit | delete | rename ]
[FILE] uniq [ edit | delete | rename ]
[FILE] unlink [ edit | delete | rename ]
[FILE] unlzma [ edit | delete | rename ]
[FILE] unmkinitramfs [ edit | delete | rename ]
[FILE] unshare [ edit | delete | rename ]
[FILE] unsquashfs [ edit | delete | rename ]
[FILE] unxz [ edit | delete | rename ]
[FILE] unzip [ edit | delete | rename ]
[FILE] unzipsfx [ edit | delete | rename ]
[FILE] unzstd [ edit | delete | rename ]
[FILE] update-alternatives [ edit | delete | rename ]
[FILE] update-microcode-initrd [ edit | delete | rename ]
[FILE] update-mime-database [ edit | delete | rename ]
[FILE] update_rubygems [ edit | delete | rename ]
[FILE] updatedb [ edit | delete | rename ]
[FILE] uptime [ edit | delete | rename ]
[FILE] usb-devices [ edit | delete | rename ]
[FILE] usbhid-dump [ edit | delete | rename ]
[FILE] usbip [ edit | delete | rename ]
[FILE] usbipd [ edit | delete | rename ]
[FILE] usbreset [ edit | delete | rename ]
[FILE] users [ edit | delete | rename ]
[FILE] utmpdump [ edit | delete | rename ]
[FILE] uuidgen [ edit | delete | rename ]
[FILE] uuidparse [ edit | delete | rename ]
[FILE] varlinkctl [ edit | delete | rename ]
[FILE] vcs-run [ edit | delete | rename ]
[FILE] vdir [ edit | delete | rename ]
[FILE] vi [ edit | delete | rename ]
[FILE] view [ edit | delete | rename ]
[FILE] vigpg [ edit | delete | rename ]
[FILE] vim [ edit | delete | rename ]
[FILE] vim.basic [ edit | delete | rename ]
[FILE] vim.tiny [ edit | delete | rename ]
[FILE] vimdiff [ edit | delete | rename ]
[FILE] vimtutor [ edit | delete | rename ]
[FILE] vm-support [ edit | delete | rename ]
[FILE] vmhgfs-fuse [ edit | delete | rename ]
[FILE] vmstat [ edit | delete | rename ]
[FILE] vmtoolsd [ edit | delete | rename ]
[FILE] vmware-alias-import [ edit | delete | rename ]
[FILE] vmware-checkvm [ edit | delete | rename ]
[FILE] vmware-hgfsclient [ edit | delete | rename ]
[FILE] vmware-namespace-cmd [ edit | delete | rename ]
[FILE] vmware-rpctool [ edit | delete | rename ]
[FILE] vmware-toolbox-cmd [ edit | delete | rename ]
[FILE] vmware-vgauth-cmd [ edit | delete | rename ]
[FILE] vmware-vmblock-fuse [ edit | delete | rename ]
[FILE] vmware-xferlogs [ edit | delete | rename ]
[FILE] w [ edit | delete | rename ]
[FILE] wall [ edit | delete | rename ]
[FILE] watch [ edit | delete | rename ]
[FILE] watchgnupg [ edit | delete | rename ]
[FILE] wc [ edit | delete | rename ]
[FILE] wdctl [ edit | delete | rename ]
[FILE] wget [ edit | delete | rename ]
[FILE] whatis [ edit | delete | rename ]
[FILE] whereis [ edit | delete | rename ]
[FILE] which [ edit | delete | rename ]
[FILE] which.debianutils [ edit | delete | rename ]
[FILE] whiptail [ edit | delete | rename ]
[FILE] who [ edit | delete | rename ]
[FILE] whoami [ edit | delete | rename ]
[FILE] wifi-status [ edit | delete | rename ]
[FILE] write [ edit | delete | rename ]
[FILE] x86_64 [ edit | delete | rename ]
[FILE] x86_energy_perf_policy [ edit | delete | rename ]
[FILE] xargs [ edit | delete | rename ]
[FILE] xauth [ edit | delete | rename ]
[FILE] xdg-user-dir [ edit | delete | rename ]
[FILE] xdg-user-dirs-update [ edit | delete | rename ]
[FILE] xsubpp [ edit | delete | rename ]
[FILE] xxd [ edit | delete | rename ]
[FILE] xz [ edit | delete | rename ]
[FILE] xzcat [ edit | delete | rename ]
[FILE] xzcmp [ edit | delete | rename ]
[FILE] xzdiff [ edit | delete | rename ]
[FILE] xzegrep [ edit | delete | rename ]
[FILE] xzfgrep [ edit | delete | rename ]
[FILE] xzgrep [ edit | delete | rename ]
[FILE] xzless [ edit | delete | rename ]
[FILE] xzmore [ edit | delete | rename ]
[FILE] yes [ edit | delete | rename ]
[FILE] ypdomainname [ edit | delete | rename ]
[FILE] zcat [ edit | delete | rename ]
[FILE] zcmp [ edit | delete | rename ]
[FILE] zdiff [ edit | delete | rename ]
[FILE] zdump [ edit | delete | rename ]
[FILE] zegrep [ edit | delete | rename ]
[FILE] zfgrep [ edit | delete | rename ]
[FILE] zforce [ edit | delete | rename ]
[FILE] zgrep [ edit | delete | rename ]
[FILE] zip [ edit | delete | rename ]
[FILE] zipcloak [ edit | delete | rename ]
[FILE] zipdetails [ edit | delete | rename ]
[FILE] zipgrep [ edit | delete | rename ]
[FILE] zipinfo [ edit | delete | rename ]
[FILE] zipnote [ edit | delete | rename ]
[FILE] zipsplit [ edit | delete | rename ]
[FILE] zless [ edit | delete | rename ]
[FILE] zmore [ edit | delete | rename ]
[FILE] znew [ edit | delete | rename ]
[FILE] zstd [ edit | delete | rename ]
[FILE] zstdcat [ edit | delete | rename ]
[FILE] zstdgrep [ edit | delete | rename ]
[FILE] zstdless [ edit | delete | rename ]
[FILE] zstdmt [ edit | delete | rename ]

Viewing: /usr/bin/rrsync

#!/usr/bin/env python3

# Restricts rsync to subdirectory declared in .ssh/authorized_keys.  See
# the rrsync man page for details of how to make use of this script.

# NOTE: install python3 braceexpand to support brace expansion in the args!

# Originally a perl script by: Joe Smith <js-cgi@inwap.com> 30-Sep-2004
# Python version by: Wayne Davison <wayne@opencoder.net>

# You may configure these 2 values to your liking.  See also the section of
# short & long options if you want to disable any options that rsync accepts.
RSYNC = '/usr/bin/rsync'
LOGFILE = 'rrsync.log' # NOTE: the file must exist for a line to be appended!

# The following options are mainly the options that a client rsync can send
# to the server, and usually just in the one option format that the stock
# rsync produces. However, there are some additional convenience options
# added as well, and thus a few options are present in both the short and
# long lists (such as --group, --owner, and --perms).

# NOTE when disabling: check for both a short & long version of the option!

### START of options data produced by the cull-options script. ###

# To disable a short-named option, add its letter to this string:
short_disabled = 's'

# These are also disabled when the restricted dir is not "/":
short_disabled_subdir = 'KLk'

# These are all possible short options that we will accept (when not disabled above):
short_no_arg = 'ACDEHIJKLNORSUWXbcdgklmnopqrstuvxyz' # DO NOT REMOVE ANY
short_with_num = '@B' # DO NOT REMOVE ANY

# To disable a long-named option, change its value to a -1.  The values mean:
# 0 = the option has no arg; 1 = the arg doesn't need any checking; 2 = only
# check the arg when receiving; and 3 = always check the arg.
long_opts = {
  'append': 0,
  'backup-dir': 2,
  'block-size': 1,
  'bwlimit': 1,
  'checksum-choice': 1,
  'checksum-seed': 1,
  'compare-dest': 2,
  'compress-choice': 1,
  'compress-level': 1,
  'copy-dest': 2,
  'copy-devices': -1,
  'copy-unsafe-links': 0,
  'daemon': -1,
  'debug': 1,
  'delay-updates': 0,
  'delete': 0,
  'delete-after': 0,
  'delete-before': 0,
  'delete-delay': 0,
  'delete-during': 0,
  'delete-excluded': 0,
  'delete-missing-args': 0,
  'existing': 0,
  'fake-super': 0,
  'files-from': 3,
  'force': 0,
  'from0': 0,
  'fsync': 0,
  'fuzzy': 0,
  'group': 0,
  'groupmap': 1,
  'hard-links': 0,
  'iconv': 1,
  'ignore-errors': 0,
  'ignore-existing': 0,
  'ignore-missing-args': 0,
  'ignore-times': 0,
  'info': 1,
  'inplace': 0,
  'link-dest': 2,
  'links': 0,
  'list-only': 0,
  'log-file': 3,
  'log-format': 1,
  'max-alloc': 1,
  'max-delete': 1,
  'max-size': 1,
  'min-size': 1,
  'mkpath': 0,
  'modify-window': 1,
  'msgs2stderr': 0,
  'munge-links': 0,
  'new-compress': 0,
  'no-W': 0,
  'no-implied-dirs': 0,
  'no-msgs2stderr': 0,
  'no-munge-links': -1,
  'no-r': 0,
  'no-relative': 0,
  'no-specials': 0,
  'numeric-ids': 0,
  'old-compress': 0,
  'one-file-system': 0,
  'only-write-batch': 1,
  'open-noatime': 0,
  'owner': 0,
  'partial': 0,
  'partial-dir': 2,
  'perms': 0,
  'preallocate': 0,
  'recursive': 0,
  'remove-sent-files': 0,
  'remove-source-files': 0,
  'safe-links': 0,
  'sender': 0,
  'server': 0,
  'size-only': 0,
  'skip-compress': 1,
  'specials': 0,
  'stats': 0,
  'stderr': 1,
  'suffix': 1,
  'super': 0,
  'temp-dir': 2,
  'timeout': 1,
  'times': 0,
  'use-qsort': 0,
  'usermap': 1,
  'write-devices': -1,
}

### END of options data produced by the cull-options script. ###

import os, sys, re, argparse, glob, socket, time, subprocess
from argparse import RawTextHelpFormatter

try:
    from braceexpand import braceexpand
except:
    braceexpand = lambda x: [ DE_BACKSLASH_RE.sub(r'\1', x) ]

HAS_DOT_DOT_RE = re.compile(r'(^|/)\.\.(/|$)')
LONG_OPT_RE = re.compile(r'^--([^=]+)(?:=(.*))?$')
DE_BACKSLASH_RE = re.compile(r'\\(.)')

def main():
    if not os.path.isdir(args.dir):
        die("Restricted directory does not exist!")

    # The format of the environment variables set by sshd:
    #   SSH_ORIGINAL_COMMAND:
    #     rsync --server          -vlogDtpre.iLsfxCIvu --etc . ARG  # push
    #     rsync --server --sender -vlogDtpre.iLsfxCIvu --etc . ARGS # pull
    #   SSH_CONNECTION (client_ip client_port server_ip server_port):
    #     192.168.1.100 64106 192.168.1.2 22

    command = os.environ.get('SSH_ORIGINAL_COMMAND', None)
    if not command:
        die("Not invoked via sshd")
    command = command.split(' ', 2)
    if command[0:1] != ['rsync']:
        die("SSH_ORIGINAL_COMMAND does not run rsync")
    if command[1:2] != ['--server']:
        die("--server option is not the first arg")
    command = '' if len(command) < 3 else command[2]

    global am_sender
    am_sender = command.startswith("--sender ") # Restrictive on purpose!
    if args.ro and not am_sender:
        die("sending to read-only server is not allowed")
    if args.wo and am_sender:
        die("reading from write-only server is not allowed")

    if args.wo or not am_sender:
        long_opts['sender'] = -1
    if args.no_del:
        for opt in long_opts:
            if opt.startswith(('remove', 'delete')):
                long_opts[opt] = -1
    if args.ro:
        long_opts['log-file'] = -1

    if args.dir != '/':
        global short_disabled
        short_disabled += short_disabled_subdir

    short_no_arg_re = short_no_arg
    short_with_num_re = short_with_num
    if short_disabled:
        for ltr in short_disabled:
            short_no_arg_re = short_no_arg_re.replace(ltr, '')
            short_with_num_re = short_with_num_re.replace(ltr, '')
        short_disabled_re = re.compile(r'^-[%s]*([%s])' % (short_no_arg_re, short_disabled))
    short_no_arg_re = re.compile(r'^-(?=.)[%s]*(e\d*\.\w*)?$' % short_no_arg_re)
    short_with_num_re = re.compile(r'^-[%s]\d+$' % short_with_num_re)

    log_fh = open(LOGFILE, 'a') if os.path.isfile(LOGFILE) else None

    try:
        os.chdir(args.dir)
    except OSError as e:
        die('unable to chdir to restricted dir:', str(e))

    rsync_opts = [ '--server' ]
    rsync_args = [ ]
    saw_the_dot_arg = False
    last_opt = check_type = None

    for arg in re.findall(r'(?:[^\s\\]+|\\.[^\s\\]*)+', command):
        if check_type:
            rsync_opts.append(validated_arg(last_opt, arg, check_type))
            check_type = None
        elif saw_the_dot_arg:
            # NOTE: an arg that starts with a '-' is safe due to our use of "--" in the cmd tuple.
            try:
                b_e = braceexpand(arg) # Also removes backslashes
            except: # Handle errors such as unbalanced braces by just de-backslashing the arg:
                b_e = [ DE_BACKSLASH_RE.sub(r'\1', arg) ]
            for xarg in b_e:
                rsync_args += validated_arg('arg', xarg, wild=True)
        else: # parsing the option args
            if arg == '.':
                saw_the_dot_arg = True
                continue
            rsync_opts.append(arg)
            if short_no_arg_re.match(arg) or short_with_num_re.match(arg):
                continue
            disabled = False
            m = LONG_OPT_RE.match(arg)
            if m:
                opt = m.group(1)
                opt_arg = m.group(2)
                ct = long_opts.get(opt, None)
                if ct is None:
                    break # Generate generic failure due to unfinished arg parsing
                if ct == 0:
                    continue
                opt = '--' + opt
                if ct > 0:
                    if opt_arg is not None:
                        rsync_opts[-1] = opt + '=' + validated_arg(opt, opt_arg, ct)
                    else:
                        check_type = ct
                        last_opt = opt
                    continue
                disabled = True
            elif short_disabled:
                m = short_disabled_re.match(arg)
                if m:
                    disabled = True
                    opt = '-' + m.group(1)

            if disabled:
                die("option", opt, "has been disabled on this server.")
            break # Generate a generic failure

    if not saw_the_dot_arg:
        die("invalid rsync-command syntax or options")

    if args.munge:
        rsync_opts.append('--munge-links')

    if not rsync_args:
        rsync_args = [ '.' ]

    cmd = (RSYNC, *rsync_opts, '--', '.', *rsync_args)

    if log_fh:
        now = time.localtime()
        host = os.environ.get('SSH_CONNECTION', 'unknown').split()[0] # Drop everything after the IP addr
        if host.startswith('::ffff:'):
            host = host[7:]
        try:
            host = socket.gethostbyaddr(socket.inet_aton(host))
        except:
            pass
        log_fh.write("%02d:%02d:%02d %-16s %s\n" % (now.tm_hour, now.tm_min, now.tm_sec, host, str(cmd)))
        log_fh.close()

    # NOTE: This assumes that the rsync protocol will not be maliciously hijacked.
    if args.no_lock:
        os.execlp(RSYNC, *cmd)
        die("execlp(", RSYNC, *cmd, ')  failed')
    child = subprocess.run(cmd)
    if child.returncode != 0:
        sys.exit(child.returncode)


def validated_arg(opt, arg, typ=3, wild=False):
    if opt != 'arg': # arg values already have their backslashes removed.
        arg = DE_BACKSLASH_RE.sub(r'\1', arg)

    orig_arg = arg
    if arg.startswith('./'):
        arg = arg[1:]
    arg = arg.replace('//', '/')
    if args.dir != '/':
        if HAS_DOT_DOT_RE.search(arg):
            die("do not use .. in", opt, "(anchor the path at the root of your restricted dir)")
        if arg.startswith('/'):
            arg = args.dir + arg

    if wild:
        got = glob.glob(arg)
        if not got:
            got = [ arg ]
    else:
        got = [ arg ]

    ret = [ ]
    for arg in got:
        if args.dir != '/' and arg != '.' and (typ == 3 or (typ == 2 and not am_sender)):
            arg_has_trailing_slash = arg.endswith('/')
            if arg_has_trailing_slash:
                arg = arg[:-1]
            else:
                arg_has_trailing_slash_dot = arg.endswith('/.')
                if arg_has_trailing_slash_dot:
                    arg = arg[:-2]
            real_arg = os.path.realpath(arg)
            if arg != real_arg and not real_arg.startswith(args.dir_slash):
                die('unsafe arg:', orig_arg, [arg, real_arg])
            if arg_has_trailing_slash:
                arg += '/'
            elif arg_has_trailing_slash_dot:
                arg += '/.'
            if opt == 'arg' and arg.startswith(args.dir_slash):
                arg = arg[args.dir_slash_len:]
                if arg == '':
                    arg = '.'
        ret.append(arg)

    return ret if wild else ret[0]


def lock_or_die(dirname):
    import fcntl
    global lock_handle
    lock_handle = os.open(dirname, os.O_RDONLY)
    try:
        fcntl.flock(lock_handle, fcntl.LOCK_EX | fcntl.LOCK_NB)
    except:
        die('Another instance of rrsync is already accessing this directory.')


def die(*msg):
    print(sys.argv[0], 'error:', *msg, file=sys.stderr)
    if sys.stdin.isatty():
        arg_parser.print_help(sys.stderr)
    sys.exit(1)


# This class displays the --help to the user on argparse error IFF they're running it interactively.
class OurArgParser(argparse.ArgumentParser):
    def error(self, msg):
        die(msg)


if __name__ == '__main__':
    our_desc = """Use "man rrsync" to learn how to restrict ssh users to using a restricted rsync command."""
    arg_parser = OurArgParser(description=our_desc, add_help=False)
    only_group = arg_parser.add_mutually_exclusive_group()
    only_group.add_argument('-ro', action='store_true', help="Allow only reading from the DIR. Implies -no-del and -no-lock.")
    only_group.add_argument('-wo', action='store_true', help="Allow only writing to the DIR.")
    arg_parser.add_argument('-munge', action='store_true', help="Enable rsync's --munge-links on the server side.")
    arg_parser.add_argument('-no-del', action='store_true', help="Disable rsync's --delete* and --remove* options.")
    arg_parser.add_argument('-no-lock', action='store_true', help="Avoid the single-run (per-user) lock check.")
    arg_parser.add_argument('-help', '-h', action='help', help="Output this help message and exit.")
    arg_parser.add_argument('dir', metavar='DIR', help="The restricted directory to use.")
    args = arg_parser.parse_args()
    args.dir = os.path.realpath(args.dir)
    args.dir_slash = args.dir + '/'
    args.dir_slash_len = len(args.dir_slash)
    if args.ro:
        args.no_del = True
    elif not args.no_lock:
        lock_or_die(args.dir)
    main()

# vim: sw=4 et

Upload File: