Compare commits
7 Commits
6676f07705
...
sheet05-su
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
58553b688a | ||
|
|
b118e163b2 | ||
|
|
266df5d32c | ||
|
|
a2d5d23307 | ||
|
|
e40906a933 | ||
|
|
f29fbed900 | ||
|
|
ea32ada42d |
2
.gitignore
vendored
2
.gitignore
vendored
@@ -2,3 +2,5 @@
|
||||
sheet01/a2/Hash.java
|
||||
*.class
|
||||
passwd
|
||||
sheet04/AuthWithTOTP.java
|
||||
sheet04/key-exchange.pcap
|
||||
3
sheet05/a1/archive.sh
Normal file
3
sheet05/a1/archive.sh
Normal file
@@ -0,0 +1,3 @@
|
||||
#!/bin/bash
|
||||
# $1 = directory path
|
||||
chmod -R a-w "$1"
|
||||
3
sheet05/a1/create_user.sh
Normal file
3
sheet05/a1/create_user.sh
Normal file
@@ -0,0 +1,3 @@
|
||||
#!/bin/bash
|
||||
# $1 = username, $2 = comma-separated groups
|
||||
useradd -G "$2" "$1" || usermod -aG "$2" "$1"
|
||||
6
sheet05/a1/explanation.txt
Normal file
6
sheet05/a1/explanation.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
UNIX permissions only support one Owner, one Group, and Other (UGO).
|
||||
The 'Group' slot is already taken by the specific lecture group to give students write access.
|
||||
If we use 'Other' to give the supervisor read access, every user on the system could read it, which would violate the requirements.
|
||||
If we add the supervisor to the lecture group, they get write access, which also violates the requirements.
|
||||
|
||||
Because a file cannot have multiple groups or user-specific overrides under standard UNIX permissions, this cannot be solved.
|
||||
3
sheet05/a1/supervisor.sh
Normal file
3
sheet05/a1/supervisor.sh
Normal file
@@ -0,0 +1,3 @@
|
||||
#!/bin/bash
|
||||
# $1 = supervisor username
|
||||
echo "not possible with the standard UNIX permissions. See explanation.txt."
|
||||
3
sheet05/a2/archive.sh
Normal file
3
sheet05/a2/archive.sh
Normal file
@@ -0,0 +1,3 @@
|
||||
#!/bin/bash
|
||||
TARGET_DIR=$1
|
||||
chmod -R a-w "$TARGET_DIR"
|
||||
4
sheet05/a2/create_user.sh
Normal file
4
sheet05/a2/create_user.sh
Normal file
@@ -0,0 +1,4 @@
|
||||
#!/bin/bash
|
||||
USERNAME=$1
|
||||
GROUPS=$2
|
||||
useradd -G "$GROUPS" "$USERNAME" || usermod -aG "$GROUPS" "$USERNAME"
|
||||
3
sheet05/a2/explanation.txt
Normal file
3
sheet05/a2/explanation.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
The supervisor's read access would fail with UNIX permissions, since they are limited to one owner, one group, and "others".
|
||||
Access Control Lists (ACLs) resolve this problem by allowing permissions beyond the standard three.
|
||||
Using `setfacl`, we can append specific read and execute rights (r-x) for individual users (the supervisors) directly to the files and directories.
|
||||
6
sheet05/a2/supervisor.sh
Normal file
6
sheet05/a2/supervisor.sh
Normal file
@@ -0,0 +1,6 @@
|
||||
#!/bin/bash
|
||||
SUPERVISOR=$1
|
||||
# Grant read and execute permissions to the supervisor user recursively
|
||||
setfacl -R -m u:"$SUPERVISOR":r-x .
|
||||
# Set the default ACL
|
||||
setfacl -R -d -m u:"$SUPERVISOR":r-x .
|
||||
4
sheet05/a3/a.txt
Normal file
4
sheet05/a3/a.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
Passwords are stored in the /etc/shadow file, which is restricted to the root user.
|
||||
A standard user cannot write to it directly. However, the passwd executable is owned by root and has the SUID permission set.
|
||||
When a standard user runs passwd, the SUID bit tells the system to execute the program with the privileges of root,
|
||||
giving the program the temporary permissions to update /etc/shadow
|
||||
5
sheet05/a3/b.txt
Normal file
5
sheet05/a3/b.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
The script runs with root privileges because the setuid bit is set.
|
||||
Since it just asks for a username and saves the new hash to /etc/shadow,
|
||||
and there is no validation checking if the user running the program is actually changing their own password,
|
||||
someone could simply run the program, type root as the username, and set a new password for the root user.
|
||||
The script would then overwrite the actual root password in /etc/shadow.
|
||||
Reference in New Issue
Block a user