New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow to create new users #3

Open
piranna opened this Issue Oct 6, 2015 · 18 comments

Comments

Projects
None yet
3 participants
@piranna
Owner

piranna commented Oct 6, 2015

Add option to allow to create a new user if one don't exists. Default environment skeleton would be as simple as only having npm, and from there start a REPL and users install their own packages. According to https://www.npmjs.com/install.sh, seems it would be just enough to download and extract it.

@zodern

This comment has been minimized.

Show comment
Hide comment
@zodern

zodern Nov 20, 2015

I have been thinking about this, and this is my latest idea: Sorry for the uneven black rows. I tried to make it with http://draw.sixteencolors.net/try/#.

data:image/png;base64,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

zodern commented Nov 20, 2015

I have been thinking about this, and this is my latest idea: Sorry for the uneven black rows. I tried to make it with http://draw.sixteencolors.net/try/#.

data:image/png;base64,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
@piranna

This comment has been minimized.

Show comment
Hide comment
@piranna

piranna Nov 20, 2015

Owner

Hum? Delete user?

Owner

piranna commented Nov 20, 2015

Hum? Delete user?

@zodern

This comment has been minimized.

Show comment
Hide comment
@zodern

zodern Nov 20, 2015

To switch between the tabs there could be a keyboard shortcut. Maybe control + arrow key. All of the tabs would require the user to log in before continuing, but if the user is creating or deleting an account it would not actually log the user in but just verify the password/username and allow the user to create a new account or delete the account the user is logged in as.

Delete user?

We don't need it, but since users can be created it might be useful to be also able to delete them. We might want to make it more difficult than an option in the login prompt. The user who owns the account would have to do it.

zodern commented Nov 20, 2015

To switch between the tabs there could be a keyboard shortcut. Maybe control + arrow key. All of the tabs would require the user to log in before continuing, but if the user is creating or deleting an account it would not actually log the user in but just verify the password/username and allow the user to create a new account or delete the account the user is logged in as.

Delete user?

We don't need it, but since users can be created it might be useful to be also able to delete them. We might want to make it more difficult than an option in the login prompt. The user who owns the account would have to do it.

@piranna

This comment has been minimized.

Show comment
Hide comment
@piranna

piranna Nov 21, 2015

Owner

KISS principle: if the user don't exists, give the option to create a new account. What you propose requires administrator priviledges, so no way. If we implement the administrator mode it would make sense, but the same would be achieved by removing the user folder or its password md5 on etc/logon.json...

Other thing is about giving the user an option to remove an account, that would be interesting, but don't know if this would be a security issue...

Owner

piranna commented Nov 21, 2015

KISS principle: if the user don't exists, give the option to create a new account. What you propose requires administrator priviledges, so no way. If we implement the administrator mode it would make sense, but the same would be achieved by removing the user folder or its password md5 on etc/logon.json...

Other thing is about giving the user an option to remove an account, that would be interesting, but don't know if this would be a security issue...

@zodern

This comment has been minimized.

Show comment
Hide comment
@zodern

zodern Nov 22, 2015

KISS principle: if the user don't exists, give the option to create a new account.

That is much better than what I suggested.

zodern commented Nov 22, 2015

KISS principle: if the user don't exists, give the option to create a new account.

That is much better than what I suggested.

@piranna

This comment has been minimized.

Show comment
Hide comment
@piranna

piranna Nov 22, 2015

Owner

:-)

Owner

piranna commented Nov 22, 2015

:-)

@piranna piranna referenced this issue Jan 6, 2016

Closed

Need a Desktop? #160

@lite20

This comment has been minimized.

Show comment
Hide comment
@lite20

lite20 Feb 23, 2016

I'll see what I can do :D

lite20 commented Feb 23, 2016

I'll see what I can do :D

@piranna

This comment has been minimized.

Show comment
Hide comment
@piranna

piranna Feb 23, 2016

Owner

I'll happily wait for your patches! :-)

Owner

piranna commented Feb 23, 2016

I'll happily wait for your patches! :-)

@piranna

This comment has been minimized.

Show comment
Hide comment
@piranna

piranna Mar 6, 2016

Owner

Hi @lite20, what's the status of this? Seems you have done some work, would you be able to create a pull-request so we can be able to discuss it there? The code seems nice, by the way :-)

Owner

piranna commented Mar 6, 2016

Hi @lite20, what's the status of this? Seems you have done some work, would you be able to create a pull-request so we can be able to discuss it there? The code seems nice, by the way :-)

@lite20

This comment has been minimized.

Show comment
Hide comment
@lite20

lite20 Mar 7, 2016

@piranna Hi sorry I've been caught up as of late with school which is why the QEMU update has also been delayed. I've got the prompt along and all the remains is to actually create the new directory with needed files. I sure can make a PR!

lite20 commented Mar 7, 2016

@piranna Hi sorry I've been caught up as of late with school which is why the QEMU update has also been delayed. I've got the prompt along and all the remains is to actually create the new directory with needed files. I sure can make a PR!

@piranna

This comment has been minimized.

Show comment
Hide comment
@piranna

piranna Mar 7, 2016

Owner

Ok, I just wanted to be updated about your progress because seems the
problems I'm having with nsh are a bug on Node.js.

I want to discuss about how to create the new user folder. Could you be
able to move that code to a function? Also, why do you think it's better to
have a tarball with a basic one? My idea is to just download npm in zip
format (no need of external dependencies :-) ) and instead a tarball have a
text file with default basic modules (like current packages.txt files) that
can be override by the user when creating the account. This way the only
file needs to be created is logon.json, what do you think?
El 7/3/2016 5:59, "Lite McFish" notifications@github.com escribió:

@piranna https://github.com/piranna Hi sorry I've been caught up as of
late with school which is why the QEMU update has also been delayed. I've
got the prompt along and all the remains is to actually create the new
directory with needed files. I sure can make a PR!


Reply to this email directly or view it on GitHub
#3 (comment).

Owner

piranna commented Mar 7, 2016

Ok, I just wanted to be updated about your progress because seems the
problems I'm having with nsh are a bug on Node.js.

I want to discuss about how to create the new user folder. Could you be
able to move that code to a function? Also, why do you think it's better to
have a tarball with a basic one? My idea is to just download npm in zip
format (no need of external dependencies :-) ) and instead a tarball have a
text file with default basic modules (like current packages.txt files) that
can be override by the user when creating the account. This way the only
file needs to be created is logon.json, what do you think?
El 7/3/2016 5:59, "Lite McFish" notifications@github.com escribió:

@piranna https://github.com/piranna Hi sorry I've been caught up as of
late with school which is why the QEMU update has also been delayed. I've
got the prompt along and all the remains is to actually create the new
directory with needed files. I sure can make a PR!


Reply to this email directly or view it on GitHub
#3 (comment).

@lite20

This comment has been minimized.

Show comment
Hide comment
@lite20

lite20 Mar 7, 2016

Also, why do you think it's better to
have a tarball with a basic one?

Ah, because any directories that would need to be created with any files they may need to contain would already be there. Users with poor connections (unfortunately me at the moment) would additionally not have to wait to have needed modules downloaded every single time a user is created.

A tar file is additionally, in this way, more efficient on massive systems.

lite20 commented Mar 7, 2016

Also, why do you think it's better to
have a tarball with a basic one?

Ah, because any directories that would need to be created with any files they may need to contain would already be there. Users with poor connections (unfortunately me at the moment) would additionally not have to wait to have needed modules downloaded every single time a user is created.

A tar file is additionally, in this way, more efficient on massive systems.

@lite20

This comment has been minimized.

Show comment
Hide comment
@lite20

lite20 Mar 7, 2016

and instead a tarball have a
text file with default basic modules (like current packages.txt files) that
can be override by the user when creating the account. This way the only
file needs to be created is logon.json, what do you think?

This is still a potential solution. We wouldn't gain the advantage of dodging un-neccessary repetitive downloads but would save on storage. It's really a decision on which we'd prefer. Tarball would allow accounts to be built faster at the cost of space (questionably not too much). Downloading would provide more space but with the cost of a longer creation time.

lite20 commented Mar 7, 2016

and instead a tarball have a
text file with default basic modules (like current packages.txt files) that
can be override by the user when creating the account. This way the only
file needs to be created is logon.json, what do you think?

This is still a potential solution. We wouldn't gain the advantage of dodging un-neccessary repetitive downloads but would save on storage. It's really a decision on which we'd prefer. Tarball would allow accounts to be built faster at the cost of space (questionably not too much). Downloading would provide more space but with the cost of a longer creation time.

@lite20

This comment has been minimized.

Show comment
Hide comment
@lite20

lite20 Mar 7, 2016

I do have in mind, by the way, of gzipping the tarball. I didn't intend to leave it uncompressed but that's an idea too to consider if the tarball doesn't turn out to be that large. We additionally save time if we do that.

lite20 commented Mar 7, 2016

I do have in mind, by the way, of gzipping the tarball. I didn't intend to leave it uncompressed but that's an idea too to consider if the tarball doesn't turn out to be that large. We additionally save time if we do that.

@piranna

This comment has been minimized.

Show comment
Hide comment
@piranna

piranna Mar 7, 2016

Owner

because any directories that would need to be created with any files they may need to contain would already be there.

Problem is, it would be stored with the UID & GID of the original user, don't know if it could extract the files with the ones we are creating...

We wouldn't gain the advantage of dodging un-neccessary repetitive downloads but would save on storage. It's really a decision on which we'd prefer. Tarball would allow accounts to be built faster at the cost of space (questionably not too much). Downloading would provide more space but with the cost of a longer creation time.

Definitelly we need to decide what focus to follow. Tar file with basic system would lead it to be outdated if we don't modify logon. It could download it and be updated separately, but then there's almost no benefict on having just a packages.txt file with the name of the basic component. I think probably only nsh is needed by default, since npm will need to be downloaded in any case just to do the install of the packages, and if the user has not selected a custom packages list npm could be removed afterwards (except if it's included in the custom packages list, obviously). This way we could prevent it gets installed useless packages and make the system more secure.

By the way, what Internet connection do you have?

I do have in mind, by the way, of gzipping the tarball. I didn't intend to leave it uncompressed but that's an idea too to consider if the tarball doesn't turn out to be that large. We additionally save time if we do that.

Node.js has native support for gzip, so it's ok for me. I'm more worried about tar since it would add a new dependency, that's why I planned on using zip file, but I'm not sure if the built-in zlib module would support multi-file zips... :-/

Owner

piranna commented Mar 7, 2016

because any directories that would need to be created with any files they may need to contain would already be there.

Problem is, it would be stored with the UID & GID of the original user, don't know if it could extract the files with the ones we are creating...

We wouldn't gain the advantage of dodging un-neccessary repetitive downloads but would save on storage. It's really a decision on which we'd prefer. Tarball would allow accounts to be built faster at the cost of space (questionably not too much). Downloading would provide more space but with the cost of a longer creation time.

Definitelly we need to decide what focus to follow. Tar file with basic system would lead it to be outdated if we don't modify logon. It could download it and be updated separately, but then there's almost no benefict on having just a packages.txt file with the name of the basic component. I think probably only nsh is needed by default, since npm will need to be downloaded in any case just to do the install of the packages, and if the user has not selected a custom packages list npm could be removed afterwards (except if it's included in the custom packages list, obviously). This way we could prevent it gets installed useless packages and make the system more secure.

By the way, what Internet connection do you have?

I do have in mind, by the way, of gzipping the tarball. I didn't intend to leave it uncompressed but that's an idea too to consider if the tarball doesn't turn out to be that large. We additionally save time if we do that.

Node.js has native support for gzip, so it's ok for me. I'm more worried about tar since it would add a new dependency, that's why I planned on using zip file, but I'm not sure if the built-in zlib module would support multi-file zips... :-/

@piranna

This comment has been minimized.

Show comment
Hide comment
@piranna

piranna Mar 7, 2016

Owner

We wouldn't gain the advantage of dodging un-neccessary repetitive downloads but would save on storage. It's really a decision on which we'd prefer. Tarball would allow accounts to be built faster at the cost of space (questionably not too much). Downloading would provide more space but with the cost of a longer creation time.

Maybe we would add an option about what behaviour to have? Maybe in a config file? Also I was thinking about creation of users being an option too, but what should be the default one?

Owner

piranna commented Mar 7, 2016

We wouldn't gain the advantage of dodging un-neccessary repetitive downloads but would save on storage. It's really a decision on which we'd prefer. Tarball would allow accounts to be built faster at the cost of space (questionably not too much). Downloading would provide more space but with the cost of a longer creation time.

Maybe we would add an option about what behaviour to have? Maybe in a config file? Also I was thinking about creation of users being an option too, but what should be the default one?

@lite20

This comment has been minimized.

Show comment
Hide comment
@lite20

lite20 Mar 7, 2016

Node.js has native support for gzip, so it's ok for me. I'm more worried about tar since it would add a new dependency, that's why I planned on using zip file, but I'm not sure if the built-in zlib module would support multi-file zips... :-/

Ah okay. The reason I suggest tar is that it offers higher compression than a simple zip and knowing NodeOS goal to remain as light weight as possible, it'd be ideal.

By the way, what Internet connection do you have?

I use the local which used to be pretty decent but as of late the connection has been garbage toward afternoons. (low kbps even though we pay for 5 mbps)

Problem is, it would be stored with the UID & GID of the original user, don't know if it could extract the files with the ones we are creating...

These are files I assumed we would regenerate per account. The tar would only contain the base. Are there really no other packages that come with an installation? Like PalmTree, ps, slap, nsh and all those? The tar would contain just what's needed for basic servers so handling services (Palmtree, it's config, etc), a code editor (cat if that gets added to nsh, or slap could work), and the actual terminal, nsh.

By downloading the latest versions we risk causing user accounts to break without notice. If one day a user creates an account and we haven't yet got the chance to test the compatibility of an updated module with the other modules which may also have been updated by their respective maintainers, that user may now be stuck with a broken account.

lite20 commented Mar 7, 2016

Node.js has native support for gzip, so it's ok for me. I'm more worried about tar since it would add a new dependency, that's why I planned on using zip file, but I'm not sure if the built-in zlib module would support multi-file zips... :-/

Ah okay. The reason I suggest tar is that it offers higher compression than a simple zip and knowing NodeOS goal to remain as light weight as possible, it'd be ideal.

By the way, what Internet connection do you have?

I use the local which used to be pretty decent but as of late the connection has been garbage toward afternoons. (low kbps even though we pay for 5 mbps)

Problem is, it would be stored with the UID & GID of the original user, don't know if it could extract the files with the ones we are creating...

These are files I assumed we would regenerate per account. The tar would only contain the base. Are there really no other packages that come with an installation? Like PalmTree, ps, slap, nsh and all those? The tar would contain just what's needed for basic servers so handling services (Palmtree, it's config, etc), a code editor (cat if that gets added to nsh, or slap could work), and the actual terminal, nsh.

By downloading the latest versions we risk causing user accounts to break without notice. If one day a user creates an account and we haven't yet got the chance to test the compatibility of an updated module with the other modules which may also have been updated by their respective maintainers, that user may now be stuck with a broken account.

@piranna

This comment has been minimized.

Show comment
Hide comment
@piranna

piranna Mar 7, 2016

Owner

The reason I suggest tar is that it offers higher compression than a simple zip and knowing NodeOS goal to remain as light weight as possible, it'd be ideal.

Tar has no compression at all, it's just a container. Compression is done when combined with a compression tool like GunZip, that generate a .tgz/.tar.gz file ;-) Other alternatives are xz or zip itself (although It's very rare to find a .tar.zip file since zip already support multi-files...).

low kbps even though we pay for 5 mbps

What a sh*t :-( Where do you live?

The tar would contain just what's needed for basic servers

Beyond the REPL you really don't need anything more... :-D The default packages are more oriented for a simple interactive session, so I think it only needs nsh, if someone wants to create an account for a server app it only need to download it's module and configure it as the user init, no more, and this could be done with the list of packages that's given by the user. I don't want that it gets installed by default anything that could increase attack surface. Other option is to show a list of install alternatives, but this will complicate the process and probably should be put in an independent (optional?) module. KISS principle, remember ;-)

By downloading the latest versions we risk causing user accounts to break without notice. If one day a user creates an account and we haven't yet got the chance to test the compatibility of an updated module with the other modules which may also have been updated by their respective maintainers, that user may now be stuck with a broken account.

NodeOS is a Linux system so devs should have already test it, and if not it's their fault. I would not think too much about this point, if not we would need to get the responsability of test compatibility of all the npm registry...

Owner

piranna commented Mar 7, 2016

The reason I suggest tar is that it offers higher compression than a simple zip and knowing NodeOS goal to remain as light weight as possible, it'd be ideal.

Tar has no compression at all, it's just a container. Compression is done when combined with a compression tool like GunZip, that generate a .tgz/.tar.gz file ;-) Other alternatives are xz or zip itself (although It's very rare to find a .tar.zip file since zip already support multi-files...).

low kbps even though we pay for 5 mbps

What a sh*t :-( Where do you live?

The tar would contain just what's needed for basic servers

Beyond the REPL you really don't need anything more... :-D The default packages are more oriented for a simple interactive session, so I think it only needs nsh, if someone wants to create an account for a server app it only need to download it's module and configure it as the user init, no more, and this could be done with the list of packages that's given by the user. I don't want that it gets installed by default anything that could increase attack surface. Other option is to show a list of install alternatives, but this will complicate the process and probably should be put in an independent (optional?) module. KISS principle, remember ;-)

By downloading the latest versions we risk causing user accounts to break without notice. If one day a user creates an account and we haven't yet got the chance to test the compatibility of an updated module with the other modules which may also have been updated by their respective maintainers, that user may now be stuck with a broken account.

NodeOS is a Linux system so devs should have already test it, and if not it's their fault. I would not think too much about this point, if not we would need to get the responsability of test compatibility of all the npm registry...

@piranna piranna referenced this issue Apr 8, 2016

Closed

Prebuilds, again #224

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment