чување 088433df6a144bf4b414e8f92bbeda4a16575479
родитељ edf832256c22b9ae053c13eda45775c8532a29db
Аутор: Страхиња Радић <contact@strahinja.org>
Датум: Tue, 26 Jul 2022 23:28:32 +0200
Make ubase login behave properly ("-mksh"); tmux fixes
Signed-off-by: Страхиња Радић <contact@strahinja.org>
Diffstat:
измењених датотека: 4, додавања: 58(+), брисања: 8(-)
diff --git a/03-packages.sh b/03-packages.sh
@@ -5432,7 +5432,9 @@ mkpk_install()
DESTDIR=/build
export CFLAGS LDFLAGS DESTDIR
- ./configure --prefix=/ || exit 1
+ ./configure --prefix=/ \\
+ --enable-static \\
+ --datarootdir=/share || exit 1
make ${JN} || exit 1
make install-strip
diff --git a/04-finale.sh b/04-finale.sh
@@ -174,6 +174,9 @@ else
apply_patch finale -Np1 -i \
${G_PAT}/ubase-galeb/getty_show_issue.patch
apply_patch finale -Np1 -i \
+ ${G_PAT}/ubase-galeb/login-proper-login-shell-\
+minus.patch
+ apply_patch finale -Np1 -i \
${G_PAT}/ubase-galeb/watch-react-to-ctrlc.patch
cat <<! >MKPK
mkpk_name()
diff --git a/fil/rc.d/rc.init b/fil/rc.d/rc.init
@@ -15,14 +15,14 @@ printf "${green}===( ${bold}${white}%s${norm}${green} )=== booting${norm}\n" \
ctrlaltdel -s
msg info "Mounting essential filesystems"
-mount -n -t proc -o nosuid,noexec,nodev proc /proc
-mount -n -t sysfs -o nosuid,noexec,nodev sysfs /sys
-mount -n -t tmpfs -o nosuid,nodev,noatime,mode=1777 tmp /tmp
+mount -n -t proc -o nosuid,noexec,nodev proc /proc
+mount -n -t sysfs -o nosuid,noexec,nodev sysfs /sys
+mount -n -t tmpfs -o nosuid,nodev,noatime,mode=1777 tmp /tmp
mkdir -p /dev/shm
-mount -n -t tmpfs -o nosuid,nodev,noatime,mode=1777 shm /dev/shm
+mount -n -t tmpfs -o nosuid,nodev,noatime,mode=1777 shm /dev/shm
mkdir -p /dev/pts
-mount -n -t devpts -o gid=5,mode=0020 devpts /dev/pts
-mount -n -t tmpfs -o nosuid,nodev,noatime,mode=0755 run /var/run
+mount -n -t devpts -o nosuid,noexec,noatime,gid=5,mode=0620 devpts /dev/pts
+mount -n -t tmpfs -o nosuid,nodev,noatime,mode=0755 run /var/run
printf "%s: /tmp/boot.log created on %s\n" $0 "$(date)" >/tmp/boot.log
G_LOGFILE=/tmp/boot.log
@@ -181,7 +181,7 @@ if [ -x /bin/rc.local ]; then
fi
:>/var/run/utmp
-chmod 0600 /var/run/utmp 2>>${G_LOGFILE}
+chmod 0664 /var/run/utmp 2>>${G_LOGFILE}
chown root:utmp /var/run/utmp 2>>${G_LOGFILE}
unset PATH G_LOGFILE
diff --git a/pat/ubase-galeb/login-proper-login-shell-minus.patch b/pat/ubase-galeb/login-proper-login-shell-minus.patch
@@ -0,0 +1,45 @@
+diff --git a/login.c b/login.c
+index 25a59e4..7c671db 100644
+--- a/login.c
++++ b/login.c
+@@ -4,6 +4,7 @@
+
+ #include <errno.h>
+ #include <grp.h>
++#include <limits.h>
+ #include <pwd.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+@@ -45,18 +46,29 @@ writeutmp(const char *user, const char *tty)
+ static int
+ dologin(struct passwd *pw, int preserve)
+ {
+- char *shell = pw->pw_shell[0] == '\0' ? "/bin/sh" : pw->pw_shell;
++ char shell[2][4096];
++ char* slash = NULL;
++
++ if (!pw->pw_shell[0]) {
++ strcpy(shell[0], "/bin/sh");
++ strcpy(shell[1], "-sh");
++ } else {
++ strcpy(shell[0], pw->pw_shell);
++ *shell[1] = '-';
++ slash = strrchr(shell[0], '/');
++ strcpy(shell[1]+1, slash ? slash+1 : shell[0]);
++ }
+
+ if (preserve == 0)
+ clearenv();
+ setenv("HOME", pw->pw_dir, 1);
+- setenv("SHELL", shell, 1);
++ setenv("SHELL", shell[0], 1);
+ setenv("USER", pw->pw_name, 1);
+ setenv("LOGNAME", pw->pw_name, 1);
+ setenv("PATH", ENV_PATH, 1);
+ if (chdir(pw->pw_dir) < 0)
+ eprintf("chdir %s:", pw->pw_dir);
+- execlp(shell, shell, "-l", NULL);
++ execlp(shell[0], shell[1], NULL);
+ weprintf("execlp %s:", shell);
+ return (errno == ENOENT) ? 127 : 126;
+ }