diff --git a/Cargo.lock b/Cargo.lock index 9626ac3043..b7327fb304 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -48,9 +48,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.4" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394" +checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" [[package]] name = "blake2b_simd" @@ -71,9 +71,9 @@ checksum = "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e" [[package]] name = "cfg-if" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "clap" @@ -98,15 +98,15 @@ checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" [[package]] name = "crossbeam-utils" -version = "0.8.21" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" +checksum = "61803da095bee82a81bb1a452ecc25d3b2f1416d1897eb86430c6159ef717c17" [[package]] name = "either" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" [[package]] name = "equivalent" @@ -122,13 +122,12 @@ source = "git+https://gitlab.redox-os.org/redox-os/libextra.git#cf213969493db866 [[package]] name = "generic-rt" version = "0.1.0" -source = "git+https://gitlab.redox-os.org/redox-os/relibc.git#e8d4ce4822d721d4dafaafa8c04dcbfe626622e7" [[package]] name = "getrandom" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" dependencies = [ "cfg-if", "libc", @@ -148,9 +147,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.16.0" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" [[package]] name = "hermit-abi" @@ -163,9 +162,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.11.4" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", "hashbrown", @@ -198,17 +197,15 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.176" +version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58f929b4d672ea937a23a1ab494143d968337a5f47e56d0815df1e0890ddf174" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "libredox" -version = "0.1.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c943259e342f1e06ff2da7a83eabdfe7f92ce10262688dbf1895ff0b3e6e4652" +version = "0.1.18+rb0.3.0" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.13.0", "ioslice", "libc", "plain", @@ -217,15 +214,15 @@ dependencies = [ [[package]] name = "log" -version = "0.4.28" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" [[package]] name = "memchr" -version = "2.7.6" +version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" +checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4" [[package]] name = "numtoa" @@ -235,9 +232,9 @@ checksum = "6aa2c4e539b869820a2b82e1aef6ff40aa85e65decdd5185e83fb4b1249cd00f" [[package]] name = "orbclient" -version = "0.4.2" +version = "0.3.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccbf30fea937f00c68caf77cd6fdf2c6c0616ea88e629c42b56670c0978f8cee" +checksum = "5df339f526ea9a60e371768d50efc2f2508c7203290731565d1f7a6f71d21747" dependencies = [ "libc", "libredox", @@ -252,18 +249,18 @@ checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" [[package]] name = "proc-macro2" -version = "1.0.101" +version = "1.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.41" +version = "1.0.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" +checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" dependencies = [ "proc-macro2", ] @@ -277,9 +274,8 @@ checksum = "436d45c2b6a5b159d43da708e62b25be3a4a3d5550d654b72216ade4c4bfd717" [[package]] name = "redox-rt" version = "0.1.0" -source = "git+https://gitlab.redox-os.org/redox-os/relibc.git#e8d4ce4822d721d4dafaafa8c04dcbfe626622e7" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.13.0", "generic-rt", "goblin", "ioslice", @@ -291,9 +287,7 @@ dependencies = [ [[package]] name = "redox-scheme" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5928b2f572e06a74e9c210fcacf15b70b8ffa6fdb3d8650f4601b83c12fe194b" +version = "0.11.2+rb0.3.0" dependencies = [ "libredox", "redox_syscall", @@ -305,7 +299,7 @@ version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c5018d583d6d2f5499352aea8d177e9067d1eb03ab17c78169d5ba7a30001b15" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.13.0", "libredox", ] @@ -324,11 +318,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5102a6aaa05aa011a238e178e6bca86d2cb56fc9f586d37cb80f5bca6e07759" +version = "0.9.0+rb0.3.0" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.13.0", ] [[package]] @@ -461,9 +453,9 @@ checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" [[package]] name = "syn" -version = "2.0.106" +version = "2.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" +checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" dependencies = [ "proc-macro2", "quote", @@ -472,14 +464,12 @@ dependencies = [ [[package]] name = "termion" -version = "4.0.5" +version = "4.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3669a69de26799d6321a5aa713f55f7e2cd37bd47be044b50f2acafc42c122bb" +checksum = "f44138a9ae08f0f502f24104d82517ef4da7330c35acd638f1f29d3cd5475ecb" dependencies = [ "libc", - "libredox", "numtoa", - "redox_termios", ] [[package]] @@ -554,9 +544,9 @@ checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" [[package]] name = "unicode-ident" -version = "1.0.19" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-width" @@ -566,7 +556,7 @@ checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" [[package]] name = "userutils" -version = "0.1.0" +version = "0.1.0+rb0.3.0" dependencies = [ "clap", "extra", @@ -638,27 +628,27 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "winnow" -version = "0.7.13" +version = "0.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" +checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" dependencies = [ "memchr", ] [[package]] name = "zeroize" -version = "1.8.2" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" dependencies = [ "zeroize_derive", ] [[package]] name = "zeroize_derive" -version = "1.4.2" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +checksum = "3c50655cbb0fe3fc43170059e702f1ce5e19b84cec58dc87b037a09935c2f328" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index e90f474437..4e083b55b9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,7 @@ [package] name = "userutils" -version = "0.1.0" +version = "0.1.0+rb0.3.1" +authors = ["Jeremy Soller ", "vasilito "] edition = "2024" [[bin]] @@ -54,14 +55,14 @@ path = "src/bin/usermod.rs" [dependencies] clap = "2.33.0" extra = { git = "https://gitlab.redox-os.org/redox-os/libextra.git" } -orbclient = "0.4.1" +orbclient = "0.3.47" plain = "0.2.3" redox_liner = "0.5.2" -libredox = { version = "0.1.18", features = ["mkns"] } +libredox = { path = "../libredox", features = ["mkns"] } redox_termios = "0.1.3" -redox_event = "0.4.8" -redox-scheme = "0.11.2" -redox_syscall = "0.9.0" +redox_event = "0.4.3" +redox-scheme = { path = "../redox-scheme" } +redox_syscall = { path = "../syscall" } redox_users = "0.4.6" termion = "4" libc = "0.2" @@ -70,7 +71,12 @@ toml = "0.8.11" ioslice = "0.6" [target.'cfg(target_os = "redox")'.dependencies] -redox-rt = { git = "https://gitlab.redox-os.org/redox-os/relibc.git", default-features = false } +redox-rt = { path = "../relibc/redox-rt", default-features = false } + +[patch.crates-io] +redox_syscall = { path = "../syscall" } +libredox = { path = "../libredox" } +redox-scheme = { path = "../redox-scheme" } [profile.release] lto = true diff --git a/res/issue b/res/issue index 6a963d8a70..59ffbd42fa 100644 --- a/res/issue +++ b/res/issue @@ -1,6 +1,6 @@ -########## Redox OS ########## -# Login with the following: # -# `user` # -# `root`:`password` # -############################## +########## Red Bear OS ######### +# Login with the following: # +# `user` # +# `root`:`password` # +################################ diff --git a/res/issue.orig b/res/issue.orig new file mode 100644 index 0000000000..6a963d8a70 --- /dev/null +++ b/res/issue.orig @@ -0,0 +1,6 @@ +########## Redox OS ########## +# Login with the following: # +# `user` # +# `root`:`password` # +############################## + diff --git a/res/motd b/res/motd index 5cd097a277..dc28b04cc2 100644 --- a/res/motd +++ b/res/motd @@ -1,2 +1,2 @@ -Welcome to Redox OS! +Welcome to Red Bear OS! diff --git a/src/bin/login.rs b/src/bin/login.rs index 83ad72d14f..f7f337a5ed 100644 --- a/src/bin/login.rs +++ b/src/bin/login.rs @@ -135,7 +135,7 @@ pub fn main() { loop { let user = liner::Context::new() .read_line( - liner::Prompt::from("\x1B[1mredox login:\x1B[0m "), + liner::Prompt::from("\x1B[1mRed Bear login:\x1B[0m "), None, &mut liner::BasicCompleter::new(Vec::::new()), ) @@ -163,13 +163,13 @@ pub fn main() { let before_ns_fd = apply_login_schemes(user, &DEFAULT_SCHEMES).unwrap_or_exit(1); - let _ = libredox::call::fcntl( + let _ = syscall::fcntl( before_ns_fd.raw(), syscall::F_SETFD, - libredox::protocol::O_CLOEXEC, + syscall::O_CLOEXEC, ); spawn_shell(user).unwrap_or_exit(1); - let _ = libredox::call::fcntl(before_ns_fd.raw(), syscall::F_SETFD, 0); + let _ = syscall::fcntl(before_ns_fd.raw(), syscall::F_SETFD, 0); let _ = libredox::call::close( libredox::call::setns(before_ns_fd.into_raw()).unwrap_or_exit(1), ); diff --git a/src/bin/sudo.rs b/src/bin/sudo.rs index 647be25de4..a77761cded 100644 --- a/src/bin/sudo.rs +++ b/src/bin/sudo.rs @@ -3,17 +3,17 @@ use std::env; use std::io::{self, Write}; use std::os::fd::{AsRawFd, FromRawFd, OwnedFd, RawFd}; use std::os::unix::process::CommandExt; -use std::process::{exit, Command}; +use std::process::{Command, exit}; use extra::option::OptionalExt; use libredox::flag::O_CLOEXEC; use libredox::protocol::ProcCall; use redox_rt::sys::proc_call; -use redox_scheme::scheme::{register_sync_scheme, SchemeState, SchemeSync}; +use redox_scheme::scheme::{SchemeSync, register_sync_scheme}; use redox_scheme::{ CallerCtx, OpenResult, RequestKind, Response, SendFdRequest, SignalBehavior, Socket, }; -use redox_users::{get_uid, All, AllGroups, AllUsers, Config}; +use redox_users::{All, AllGroups, AllUsers, Config, get_uid}; use syscall::error::*; use syscall::flag::*; use syscall::schemev2::NewFdFlags; @@ -62,7 +62,7 @@ fn main() { run_command_as_root(&cmd, &args.collect()); } - let file = libredox::Fd::open("/scheme/sudo", libredox::flag::O_CLOEXEC, 0).unwrap(); + let file = libredox::call::open("/scheme/sudo", O_CLOEXEC, 0).unwrap(); let mut attempts = 0; @@ -74,7 +74,7 @@ fn main() { Some(password) => { println!(); - match file.write(password.as_bytes()) { + match libredox::call::write(file, password.as_bytes()) { Ok(_) => break, Err(err) if err.errno() == EPERM => { attempts += 1; @@ -102,18 +102,17 @@ fn main() { } // Elevate privileges of our own process with help from the sudo daemon - file.call_wo( - &libredox::call::dup(redox_cur_procfd_v0(), &[]) - .unwrap() - .to_ne_bytes(), - syscall::CallFlags::FD, - &[], + syscall::sendfd( + file, + syscall::dup(redox_cur_procfd_v0(), &[]).unwrap(), + 0, + 0, ) .unwrap(); // FIXME perhaps keep the original namespace available in a subdirectory of the namespace we switch to? - let ns = file.openat("ns", O_CLOEXEC, 0).unwrap(); - libredox::call::setns(ns.into_raw()).unwrap(); + let ns = syscall::openat(file, "ns", 0, syscall::O_CLOEXEC).unwrap(); + libredox::call::setns(ns).unwrap(); run_command_as_root(&cmd, &args.collect()); } @@ -351,7 +350,7 @@ impl Scheme { *handle = Handle::AwaitingNamespaceFetch { ns: libredox::Fd::new( - libredox::call::dup(libredox::call::getns().unwrap(), b"").unwrap(), + syscall::dup(libredox::call::getns().unwrap(), b"").unwrap(), ), }; } @@ -368,11 +367,11 @@ fn daemon_main() -> ! { // TODO: Linux kernel audit-like logging? let socket = Socket::create().expect("failed to open scheme socket"); - let mut state = SchemeState::new(); let mut scheme = Scheme { next_fd: 1, handles: HashMap::new(), }; + let mut scheme_state = redox_scheme::scheme::SchemeState::new(); register_sync_scheme(&socket, "sudo", &mut scheme) .expect("failed to register sudo scheme to namespace"); @@ -386,11 +385,10 @@ fn daemon_main() -> ! { }; let response = match req.kind() { - RequestKind::Call(call) => call.handle_sync(&mut scheme, &mut state), + RequestKind::Call(call) => call.handle_sync(&mut scheme, &mut scheme_state), RequestKind::SendFd(req) => Response::new(scheme.on_sendfd(&socket, &req), req), RequestKind::OnClose { id } => { scheme.on_close(id); - state.on_close(id); continue; } _ => continue,