Giter Site home page Giter Site logo

unix_user_manager's Introduction

UnixUserManager gem

Management tool for unix users. Manually edits /etc/passwd, /etc/shadow and /etc/groups.

It will not read norwrite anything to your files, but use it on your own risk!

Installation

Add this line to your application's Gemfile:

gem 'unix_user_manager'

And then execute:

$ bundle

Or install it yourself as:

$ gem install unix_user_manager

Usage

  passwd = `sudo cat /etc/passwd` # File.read('/etc/passwd') # your process should have permission
  group  = `sudo cat /etc/group`  # File.read('/etc/group') # your process should have permission
  shadow = `sudo cat /etc/shadow` # File.read('/etc/shadow') # your process should have permission

  # initialize
  um = UnixUserManager.new passwd: passwd, group: group, shadow: shadow

  # get some uniq id for you new group and user
  new_id = um.available_id(min_id: 100, max_id: 500, preffered_ids: [200, 300, 333, 400, 500], recursive: false) # 42

  # add new user
  um.users.add(name: "risky_man", uid: new_id, gid: new_id, shell: '/bin/bash', home_directory: '/home/riskiy_man') # true
  # `shell` and `home_directory` params are optional with default values as shown above

  # add new group
  um.groups.add(name: "risky_group", uname: "risky_man", gid: new_id) # true

  # build new configs
  um.users.build_passwd # new contents for /etc/passwd
  um.users.build_shadow # new contents for /etc/shadow
  um.groups.build       # new contents for /etc/group

  # or
  um.users.build # { passwd: "...content...", shadow: "...content..." } new contents for /etc/passwd and /etc/shadow

  # or build only new lines
  um.users.build_passwd_new_records # new lines for /etc/passwd, eg "risky_man:x:42:42::/dev/null:/bin/bash"
  um.users.build_shadow_new_records # new lines for /etc/shadow, eg "risky_man:!!:::::::"
  um.groups.build_new_records       # new lines for /etc/group,  eg "risky_group:x:42:risky_man"

TODO

  1. Add support for edit users/groups
  2. Add support for destroy users/groups
  3. Add support for user with passwords
  4. Add support for gshadow

Development

After checking out the repo, run bin/setup to install dependencies. Then, run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release to create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

  1. Fork it ( https://github.com/mrThe/unix_user_manager/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

unix_user_manager's People

Contributors

mrthe 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.