-
Notifications
You must be signed in to change notification settings - Fork 315
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
setuid bit is lost upon install #1175
Comments
The libarchive crate is very well documented and has some comments that may be helpful: https://github.com/chef/libarchive-rust/blob/master/src/archive.rs#L201-L212 |
@miketheman this should be resolved by the changes @fujin made in #1187. Can you verify before I close this ticket? |
@reset @fujin I can confirm that after (rather confusing) rebuild of
Thanks!!! At what point to we need to start thinking about dealing with packages as "this only really works if you are using hab 0.10.x and higher"? |
@miketheman thanks for verifying, appreciate it! I'm not sure what you mean about that last part. Could you elaborate? |
thanks @miketheman <3 |
@reset Certainly, sorry if I wasn't clearer. |
@miketheman it's our goal to ensure that Habitat is backwards compatible with any package created by the Habitat build tools regardless of which version used, especially once we hit 1.0. This was just a bug in our package extraction. We can release a new patch version of Habitat which includes just this fix if it's biting people hard. Our next planned release is Thursday, September 1st |
@reset I agree with the goal, wholeheartedly. Habitat itself is backwards compatible with this package, but the package is not usable. This bug has exposed a quality that makes an existing built package unusable by the current release. The RubyGems way is to specify the minimum required Ruby version in the gem's spec, like so:
I'm not suggesting we adopt this syntax, only pointing out how one packaging system has solved a requirement on the base-layer dependency. I'm not asking for a release to solve this bugfix - that's too narrow a scope. I'm lobbying for figuring out how the habitat project reacts to such a discovery of a released package not working with a released version of habitat. |
@miketheman this isn't necessary for backwards compatibility, but it is for forwards compatibility and potentially for plan syntax. We can sustain backwards compatibility because our artifact is structured, like a SQL database. And, like a SQL database, we can determine the version of it's structure and then perform a forwards migration on it. There isn't a way to guarantee forward compatibility with migrations, though, so we do have a bit of a problem on our hands there. That isn't to say we can't make improvements when we need them, though. If we were to bake the version of Habitat used to build the Plan syntax is a different story and might need something like the required version field. When we speak about the plan as the artifact it's potentially more difficult to provide a transform for since it's user generated, However, since we used the native language of the building OS itself, it's much easier to stay compatible. Something drastic would really need to happen since we can only define functions and not macros or keywords. I think it's definitely worth looking at the case of forwards compatibility and plan syntax when they are about to become a problem. For now, it's safe to say they are both at |
When creating a package that sets a file with a
setuid
on it, the locally-installed version works correctly.However, when installing from a package, the setuid bit is lost.
To be perfectly clear:
-rwsr-xr-x
turns into-rwxr-xr-x
Possibly related to other unexpected libarchive behaviors: #1100
The text was updated successfully, but these errors were encountered: