GNU/Linux >> Belajar Linux >  >> Linux

Cara membatasi perintah pengguna di Linux

Solusi @Dodzi Dzakuma sangat bagus jika Anda hanya memiliki beberapa perintah yang ingin dinonaktifkan.

Namun jika Anda hanya ingin mengizinkan pengguna untuk menjalankan beberapa perintah, inilah solusi yang lebih baik:

  1. Ubah shell pengguna menjadi bash terbatas

    chsh -s /bin/rbash <username>
    
  2. Buat direktori bin di bawah direktori home pengguna

    sudo mkdir /home/<username>/bin
    sudo chmod 755 /home/<username>/bin
    
  3. Ubah PATH default pengguna ke direktori bin

    echo "PATH=$HOME/bin" >> /home/<username>/.bashrc
    echo "export PATH >> /home/<username>/.bashrc
    
  4. Buat symlink dari perintah yang dibutuhkan pengguna

    sudo ln -s /bin/<command> /home/<username>/bin/
    
  5. Batasi pengguna dari memodifikasi ~/.bashrc

    chattr +i /home/<username>/.bashrc
    

Ini lebih baik JIKA Anda hanya ingin mengizinkan pengguna untuk menjalankan beberapa perintah karena alih-alih menyetel alias SEMUA perintah untuk dinonaktifkan, Anda hanya menyetel symlink dari perintah yang ingin Anda izinkan.


Ada banyak cara berbeda untuk mencapai ini. Saya akan mencantumkan salah satu dari beberapa kemungkinan solusi.

Saya akan mengusulkan menggunakan beberapa lapisan perlindungan yang berbeda untuk mencegah pengguna menjalankan perintah yang seharusnya tidak boleh mereka akses. Semua petunjuk di sini mengasumsikan bahwa pengguna memiliki /home/[username] mereka sendiri direktori, bahwa shell mereka adalah /bin/bash , dan Anda ingin mereka menggunakan bash shell saat masuk ke sistem.

  1. Ubah bash pengguna ke mode bash terbatas sehingga mereka tidak dapat mengubah direktori (jika Anda tidak memiliki mode bash terbatas di sistem Anda, tautan ini akan membantu dan memberi Anda lebih banyak informasi)chsh -s /bin/rbash [username]

  2. Ubah izin direktori sehingga hanya pengguna yang dapat mengedit konten direktori home mereka

chmod 755 /home/[username]

  1. Hapus .bashrc pengguna berkas

rm /home/[username]/.bashrc Situs ini memiliki lebih banyak informasi tentang mengapa sebaiknya menghapus .bashrc dalam situasi ini.

  1. Buat .bash_profile dan tambahkan alias "aman" untuk semua perintah yang ingin Anda nonaktifkan

./contoh file bash_profile

alias apt-get="printf ''"  
alias aptitude="printf ''"  
[...]  
alias vi="vi -Z" #this is vi's safe mode and shell commands won't be run from within vi
alias alias="printf ''"  

A silakan periksa daftar lengkap perintah bash untuk informasi lebih lanjut. Anda harus memastikan bahwa alias alias="printf ''" perintah adalah perintah terakhir dalam daftar jika tidak, Anda kehilangan kemampuan untuk alias semua perintah tersebut.

Catatan Menjalankan perintah di bawah ini akan mencari hampir semua perintah yang tersedia di sistem Anda dan menampilkan file yang sudah jadi akan hampir semua perintah yang tersedia sudah dipra-alias. [ perintahnya adalah test perintah di pesta. Jadi jika Anda melihatnya di file, itu bukan kesalahan.

#search /bin and /usr/bin for any commands that exist on our system
ls /bin -1 > commands_on_system.txt && ls /usr/bin -1 >> commands_on_system.txt

#format and save this information to a bash variable
IFS=$'\n' GLOBIGNORE='*' command eval  'COMMANDS_ON_SYSTEM=($(cat ./commands_on_system.txt))'
IFS=$'\n' COMMANDS_ON_SYSTEM=($(sort <<<"${COMMANDS_ON_SYSTEM[*]}"))
unset IFS

#save these commands in aliased format for easy usage
for linux_command in "${COMMANDS_ON_SYSTEM[@]}"
do :
   #you can change how this works to automatically
   #setup the command file for you 
   echo "alias ${linux_command}=\"printf ''\"" >> ./startup_functions_for_beginners.sh
done
  1. Nonaktifkan perintah shell di vi dengan mengalikan perintah vi ke mode terbatas
    Sintaksnya adalah alias vi="vi -Z" , tetapi silakan lihat situs ini untuk informasi lebih lanjut.

  2. Ubah kepemilikan .bash_profile pengguna untuk melakukan root
    chown root:root /home/[username]/.bash_profile

  3. Terakhir, hapus izin tulis pada .bash_profile pengguna
    chmod 755 /home/[username/.bash_profile]

Sekarang ketika pengguna masuk, mereka tidak akan dapat mengubah direktori, semua perintah yang tidak Anda ingin mereka gunakan akan menampilkan informasi yang sama seolah-olah pengguna menekan tombol [ENTER] kunci tanpa perintah yang ditentukan, dan /bin/bash Anda fungsi tetap utuh.

Bergantung pada fungsi apa yang Anda pilih atau tidak untuk menggunakan alias dengan cara ini, pengguna mungkin masih dapat mengelak dari beberapa kontrol yang Anda terapkan. Namun, karena kami menerapkan beberapa buffer keamanan, pengguna benar-benar harus mengetahui tentang sistem komputer untuk melakukan hal berbahaya.

Pada catatan terkait dan sesuatu yang mungkin ingin Anda pertimbangkan, jika Anda langsung menempatkan alias ini ke .bash_profile setiap pengguna Anda akan mengalami kesulitan mempertahankan fungsi mana yang harus dan tidak boleh diberi alias, dan jika Anda perlu mengubah alias pada apa pun, Anda harus mengubah semuanya satu per satu. Juga, karena pengguna dapat menggunakan vim atau vi untuk melihat file, mereka dapat melihat konten .bash_profile mereka dan memahami batasan apa yang mereka miliki dan tidak miliki.

Untuk menyiasatinya, saya sarankan.

  1. Meletakkan semua alias di direktori yang tidak dapat diakses oleh pengguna (tempelkan konten .bash_profile di sini)

/[path_to_file]/startup_functions_for_beginners.sh

  1. Menyediakan alias ke dalam .bash_profile mereka

contoh file ./bash_profile yang disempurnakan

if [[ -f /[path_to_file]/startup_functions_for_beginners.sh ]]; then
    . /[path_to_file]/startup_functions_for_beginners.sh
fi

Ini akan membantu Anda, tetapi ingat bahwa hampir selalu ada cara untuk menghindari batasan.

Juga, silakan remix informasi dalam jawaban ini sesuai dengan kebutuhan Anda. Ini pasti dapat digabungkan dengan sejumlah batasan lain juga.

T:Saya membutuhkan pengguna untuk memiliki akses ke fg dan bg , tetapi saya tidak ingin mereka dapat mengakses aptitude atau bash

alias apt-get="printf ''"  #the user won't be able to run this  
alias aptitude="printf ''"  #the user won't be able to run this  
alias bash="printf ''"  #the user won't be able to run this  
#alias fg="printf ''" #this will run as a bash built-in  
#alias bg="printf ''" #you actually don't need to include these in your script  

Daftar perintah umum sesuai Situs Web Harvard ini (TIDAK LUAS)

Saat Anda menginstal program ke Linux, apa yang tersedia untuk Anda berubah. Saya sarankan Anda menjalankan perintah yang tercantum di atas pada langkah 4 untuk membantu menemukan perintah baru setelah diinstal.

perhatian harus diperhatikan dengan editor karena beberapa memungkinkan untuk mengeksekusi perintah shell dari dalam program

nano
emacs
pico
sed
vi
vim  

Lainnya

exit
logout
passwd
rlogin
ssh
slogin
yppasswd
mail
mesg
pine
talk
write
as
awk
bc
cc
csh
dbx
f77
gdb
gprof
kill
ld
lex
lint
make
maple
math
nice
nohup
pc
perl
prof
python
sh
yacc
xcalc
apropos
find
info
man
whatis
whereis
cd
chmod
chown
chgrp
cmp
comm
cp
crypt
diff
file
grep
gzip
ln
ls
lsof
mkdir
mv
pwd
quota
rm
rmdir
stat
sync
sort
tar
tee
tr
umask
uncompress
uniq
wc
cat
fold
head
lpq
lpr
lprm
more
less
page
pr
tail
zcat
xv
gv
xpdf
ftp
rsync
scp
alias
chquota
chsh
clear
echo
pbm
popd
pushd
script
setenv
stty
netstat
rsh
ssh
bg
fg
jobs
^y
^z
clock
date
df
du
env
finger
history
last
lpq
manpath
printenv
ps
pwd
set
spend
stty
time
top
uptime
w
who
whois
whoami
gimp
xfig
xv
xvscan
xpaint
kpaint
mplayer
realplay
timidity
xmms
abiword
addbib
col
diction
diffmk
dvips
explain
grap
hyphen
ispell
latex
pdfelatex
latex2html
lookbib
macref
ndx
neqn
nroff
pic
psdit
ptx
refer
roffbib
sortbib
spell
ispell
style
tbl
tex
tpic
wget
grabmode
import
xdpyinfo
xkill
xlock
xterm
xwininfo
html2ps
latex2html
lynx
netscape
sitecopy
weblint

Linux
  1. Cara Mengunci dan Membuka Kunci Pengguna di Linux

  2. A sampai Z Perintah Linux

  3. perintah su Linux

  1. Perintah gema Linux

  2. Cara menonaktifkan perintah khusus untuk pengguna tertentu di Linux

  3. Bagaimana saya bisa merekam perintah Linux?

  1. 20 perintah Linux penting untuk setiap pengguna

  2. 10 perintah yang harus diketahui setiap pengguna Linux

  3. Cara menggunakan Perintah Su di Linux