create_user
Create a user in ruby.
linux manual
Basic Usage
require 'kanrisuru'
host = Kanrisuru::Remote::Host.new(host: '127.0.1.1', username: 'ubuntu', keys: ['~/.ssh/id_rsa'])
result = host.create_user('kanrisuru',
shell: '/bin/bash',
uid: 1005,
groups: ['ubuntu', 'sudo', 'admin']
)
result.success?
true
result.user
'kanrisuru'
result.uid
1005
Parameters
Field |
Type |
Description |
user |
string
|
Required name of the user to create. |
uid |
integer
|
The numerical value of the user's ID. This value must be unique, unless the non_unique option is used. |
group |
string
|
The group name or number of the user's initial login group. The group name must exist. A group number must refer to an already existing group. |
groups |
array
|
A list of supplementary groups which the user is also a member of. |
shell |
string
|
The name of the user's login shell. The default is to leave this field blank, which causes the system to select the default login shell specified by the SHELL variable in /etc/default/useradd, or an empty string by default. |
non_unique |
boolean
|
Allow the creation of a user account with a duplicate (non-unique) UID. |
system |
boolean
|
Create a system account. |
home |
string
|
The new user will be created using HOME_DIR as the value for the user's login directory. The default is to append the LOGIN name to BASE_DIR and use that as the login directory name. |
createhome |
boolean
|
Create the user's home directory if it does not exist. |
skeleton |
string
|
The skeleton directory, which contains files and directories to be copied in the user's home directory, when the home directory is created. |
password |
string
|
The encrypted password, as returned by crypt(3). The default is to disable the password. |
expires |
string
|
The date on which the user account will be disabled. The date is specified in the format YYYY-MM-DD. |
Result
Returns a single User
struct.
User Fields
Field |
Type |
Description |
uid |
integer
|
The numerical value of the user's ID. |
name |
string
|
The name of the user |
shell |
Kanrisuru::Core::User::FilePath
|
The name of the user's login shell. |
home |
Kanrisuru::Core::User::FilePath
|
Location of the users home directory. |
groups |
array
|
Array of UserGroup structs, that define the all the groups a user belongs to. |
Return Example
result = host.create_user('kanrisuru002', shell: '/bin/zsh', uid: 9100, group: 'kanrisuru')
result.data
#<Struct:Kanrisuru::Core::User::User:0x000008c0
groups = [
[0] #<Struct:Kanrisuru::Core::User::UserGroup:0x00000910
gid = 1005,
name = "kanrisuru"
>
],
home = #<Struct:Kanrisuru::Core::User::FilePath:0x00000960
path = "/home/kanrisuru002"
>,
name = "kanrisuru002",
shell = #<Struct:Kanrisuru::Core::User::FilePath:0x000009d8
path = "/bin/zsh"
>,
uid = 9100
>
Exit Status
Code |
Description |
0 |
Success |
1 |
Can't update password file |
2 |
Invalid command syntax |
3 |
Invalid argument to option |
4 |
UID already in use (and no -o) |
6 |
Specified group doesn't exist |
9 |
Username already in use |
10 |
Can't update group file |
12 |
Can't create home directory |
14 |
Can't update SELinux user mapping |
Tested On
- Ubuntu, Debian, Centos, Fedora, Redhat, OpenSuse, SLES