Giter Site home page Giter Site logo

szaydel / lshell Goto Github PK

View Code? Open in Web Editor NEW

This project forked from ghantoos/lshell

0.0 3.0 0.0 484 KB

lshell is a shell coded in Python, that lets you restrict a user's environment to limited sets of commands, choose to enable/disable any command over SSH (e.g. SCP, SFTP, rsync, etc.), log user's commands, implement timing restriction, and more.

Home Page: http://lshell.ghantoos.org

License: GNU General Public License v3.0

Makefile 1.11% Python 96.41% Shell 2.48%

lshell's Introduction

lshell - limited shell Build Status

lshell is a shell coded in Python, that lets you restrict a user's environment to limited sets of commands, choose to enable/disable any command over SSH (e.g. SCP, SFTP, rsync, etc.), log user's commands, implement timing restriction, and more.

Note: all the following information (and more) can be found in the manpage - man -l man/lshell.1 or man lshell)

Installation

1. Install from source
        # on Linux:
        python setup.py install --no-compile --install-scripts=/usr/bin/
        # on *BSD:
        python setup.py install --no-compile --install-data=/usr/{pkg,local}/
2. On Debian (or derivatives)
        apt-get install lshell
3.  On RHEL (or derivatives)
        yum install lshell
        dnf install lshell for Fedora and future versions of RHEL

Configuration

lshell.conf presents a template configuration file. See etc/lshell.conf or man file for more information.

A [default] profile is available for all users using lshell. Nevertheless, you can create a [username] section or a [grp:groupname] section to customize users' preferences.

Order of priority when loading preferences is the following:

  1. User configuration
  2. Group configuration
  3. Default configuration

The primary goal of lshell, is to be able to create shell accounts with ssh access and restrict their environment to a couple a needed commands and path.

For example User 'foo' and user 'bar' both belong to the 'users' UNIX group:

  • User 'foo': - must be able to access /usr and /var but not /usr/local - user all command in their PATH but 'su' - has a warning counter set to 5 - has their home path set to '/home/users'

  • User 'bar': - must be able to access /etc and /usr but not /usr/local - is allowed default commands plus 'ping' minus 'ls' - strictness is set to 1 (meaning he is not allowed to type an unknown command)

In this case, my configuration file will look something like this:

# CONFIGURATION START
[global]
logpath         : /var/log/lshell/
loglevel        : 2

[default]
allowed         : ['ls','pwd']
forbidden       : [';', '&', '|'] 
warning_counter : 2
timer           : 0
path            : ['/etc', '/usr']
env_path        : ':/sbin:/usr/foo'
scp             : 1 # or 0
sftp            : 1 # or 0
overssh         : ['rsync','ls']
aliases         : {'ls':'ls --color=auto','ll':'ls -l'}

[grp:users]
warning_counter : 5
overssh         : - ['ls']

[foo]
allowed         : 'all' - ['su']
path            : ['/var', '/usr'] - ['/usr/local']
home_path       : '/home/users'

[bar]
allowed         : + ['ping'] - ['ls'] 
path            : - ['/usr/local']
strict          : 1
scpforce        : '/home/bar/uploads/'
# CONFIGURATION END

Usage

To launch lshell, just execute lshell specifying the location of your configuration file:

lshell --config /path/to/configuration/file

In order to log a user, you will have to add them to the lshell group:

usermod -aG lshell username

In order to configure a user account to use lshell by default, you must:

chsh -s /usr/bin/lshell user_name

(You might need to insure that lshell is listed in /etc/shells)

After this, whichever method is used by the user to log into their account, they will end up using the limited shell you configured for them!

Contact

If you want to contribute to this project, please do not hesitate. Open an issue and, if possible, send a pull request.

Please use github for all requests: https://github.com/ghantoos/lshell/issues

Cheers

lshell's People

Contributors

anonymouscoward01 avatar axelsimon avatar debackel avatar dol avatar edwardbetts avatar fbarbeira avatar fredericlepied avatar georgpad avatar ghantoos avatar johndup avatar lberra avatar omega8cc avatar saulwold avatar trbs avatar tristancacqueray avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.