Misalkan saya memiliki direktori /opt/expe
dan saya ingin setiap pengguna membuat file .txt di dalamnya. Saya ingin setiap pengguna mengetikkan sesuatu seperti ini:
$ whoami
user1
$ export $file_name=my_txt_file
$ /opt/expe/create_file.sh
$ ls -cal /opt/expe
total 12
drwxr-xr-x 2 root root 4096 Jul 29 19:27 .
drwxr-xr-x 6 root root 4096 Jul 29 19:14 ..
-rwsr-sr-t 1 root root 65 Jul 29 19:29 create_file.sh
-rw-r--r-- 1 user1 root 0 Jul 29 19:27 my_txt_file.txt
Saya mencoba ini dengan sudoer
$ whoami
user_sudoer
$ cat /opt/expe/create_file.sh
touch /opt/expe/$file_name.txt
chown $USER /opt/expe/$file_name.txt
$ chmod a+x /opt/expe/create_file.sh
$ chmod a+t /opt/expe/create_file.sh
$ chmod a+s /opt/expe/create_file.sh
$ chmod a+X /opt/expe/create_file.sh
Kemudian dengan pengguna non-root saya memperoleh:
$ whoami
user1
$ export $file_name=my_txt_file
$ /opt/expe/create_file.sh
touch: cannot touch '/opt/expe/prueba_txt.txt': Permission denied
Dapatkah saya melakukan sesuatu seperti ini. Saya ingin sesuatu seperti postgres SECURITY DEFINER
konsep.
Jawaban yang Diterima:
Saya tidak cukup akrab dengan Postgres, tetapi saya melihat setidaknya 4 opsi:
-
Ubah izin /opt/expe dengan chmod untuk mengizinkan semua pengguna membuat file dalam direktori ini.
-
Buat grup terpisah untuk pengguna yang perlu menulis di sana dan ubah izin grup /opt/expe dengan chmod untuk mengizinkan grup ini menulis di sana.
-
Buat grup terpisah dan tambahkan aturan sudoers untuk memungkinkan mereka menjalankan skrip ini seperti yang dijelaskan misalnya di sini:Bagaimana pengguna dapat memasang wadah file terenkripsi di VeraCrypt?
-
Gunakan keamanan label untuk kontrol akses yang halus. Berikut adalah deskripsi singkat tentang label keamanan dan beberapa tautan lebih lanjut:https://unix.stackexchange.com/questions/53028/what-are-ext4-security-labels
Harap diingat bahwa izin untuk membuat/menghapus file adalah milik direktori dan bukan file itu sendiri.