GNU/Linux >> Linux の 問題 >  >> Linux

Linux でユーザー コマンドを制限する方法

@Dodzi Dzakuma ソリューションは、無効にしたいコマンドがいくつかある場合に最適です。

ただし、ユーザーにいくつかのコマンドの実行のみを許可したい場合は、より良い解決策があります:

<オール>
  • ユーザー シェルを制限された bash に変更します

    chsh -s /bin/rbash <username>
    
  • ユーザーのホーム ディレクトリの下に bin ディレクトリを作成します

    sudo mkdir /home/<username>/bin
    sudo chmod 755 /home/<username>/bin
    
  • ユーザーのデフォルト PATH を bin ディレクトリに変更します

    echo "PATH=$HOME/bin" >> /home/<username>/.bashrc
    echo "export PATH >> /home/<username>/.bashrc
    
  • ユーザーが必要とするコマンドのシンボリック リンクを作成します

    sudo ln -s /bin/<command> /home/<username>/bin/
    
  • ユーザーによる ~/.bashrc の変更を制限

    chattr +i /home/<username>/.bashrc
    
  • これは、すべてのコマンドのエイリアスを無効に設定する代わりに、許可するコマンドのシンボリック リンクのみを設定するため、ユーザーに複数のコマンドの実行のみを許可する場合に適しています。


    これを達成するには、さまざまな方法があります。考えられるいくつかの解決策の 1 つをリストアップします。

    ユーザーがアクセスを許可されるべきではないコマンドを実行できないようにするために、いくつかの異なる保護層を使用することを提案します。ここでの説明はすべて、ユーザーが独自の /home/[username] を持っていることを前提としています ディレクトリ、シェルが /bin/bash であること

    <オール>
  • ユーザーの bash を制限付き bash モードに変更して、ディレクトリを変更できないようにする (システムで bash モードが制限されていない場合は、このリンクが役に立ち、詳細情報が得られます)chsh -s /bin/rbash [username]

  • ユーザーのみがホーム ディレクトリの内容を編集できるように、ディレクトリのアクセス許可を変更します

  • chmod 755 /home/[username]

    1. ユーザーの .bashrc を削除します ファイル

    rm /home/[username]/.bashrc このサイトには、.bashrc を削除することをお勧めする理由に関する詳細情報があります。

    1. .bash_profile を作成する 無効にしたいすべてのコマンドに「安全な」エイリアスを追加します

    ./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 ''"  
    

    詳細については、bash コマンドの完全なリストを確認してください。 alias alias="printf ''" であることを確認する必要があります。 command はリストの最後のコマンドです。そうしないと、これらのコマンドすべてにエイリアスを設定できなくなります。

    注意 以下のコマンドを実行すると、システムで使用可能なほぼすべてのコマンドが検索され、使用可能なほぼすべてのコマンドが事前にエイリアス化された既製のファイルが出力されます。 [ コマンドは test です コマンド バッシュで。したがって、ファイルにそれが表示されていても、エラーではありません。

    #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. vi コマンドを制限モードにエイリアスして、vi のシェル コマンドを無効にする
      構文は alias vi="vi -Z" です ですが、詳細についてはこのサイトをご覧ください。

    2. ユーザーの .bash_profile の所有権を変更します ルート化する
      chown root:root /home/[username]/.bash_profile

    3. 最後に、ユーザーの .bash_profile の書き込み権限を削除します
      chmod 755 /home/[username/.bash_profile]

    ユーザーがログインすると、ディレクトリを変更できなくなります。ユーザーに使用してほしくないすべてのコマンドは、ユーザーが [ENTER] を押した場合と同じ情報を出力します。 コマンドが指定されていないキーと、あなたの /bin/bash

    この方法でエイリアスを作成するかどうかに応じて、ユーザーは実装したコントロールの一部を回避できる可能性があります。ただし、いくつかの安全バッファーを実装したため、ユーザーは危険を冒すためにコンピューター システムについて本当に知っている必要があります。

    関連するメモと考慮したいことがありますが、これらのエイリアスをすべてのユーザーの .bash_profile に直接配置する場合 エイリアスを設定する必要がある関数とエイリアスを設定しない関数を維持するのは困難であり、何かのエイリアスを変更する必要がある場合は、それらすべてを個別に変更する必要があります。また、ユーザーは vim を使用できるため、 または vi ファイルを表示するには、.bash_profile の内容を見ることができます。 そして、彼らが持っている制限と持っていない制限を理解してください.

    これを回避するには、お勧めします。

    <オール>
  • ユーザーがアクセスできないディレクトリにすべてのエイリアスを配置します (.bash_profile の内容を貼り付けます)。 ここ)
  • /[path_to_file]/startup_functions_for_beginners.sh

    1. エイリアスを .bash_profile にソースする

    改善された ./bash_profile ファイルの例

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

    これで道は開けますが、ほとんどの場合、制限を回避する方法があることを覚えておいてください。

    また、ニーズに合わせて、この回答の情報を自由にリミックスしてください。これらは、間違いなく他の多くの制限と組み合わせることができます。

    Q:ユーザーが fg にアクセスできるようにする必要があります と bg 、しかし、私は彼らが aptitude にアクセスできるようにしたくありません または 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  
    

    このハーバード ウェブサイトに記載されている一般的なコマンドのリスト (限定的ではありません)

    プログラムを Linux にインストールすると、利用できるものが変わります。上記のステップ 4 にリストされているコマンドを実行して、インストール後に新しいコマンドを見つけやすくすることをお勧めします。

    プログラム内からシェル コマンドを実行できるエディタもあるため、エディタには注意が必要です

    nano
    emacs
    pico
    sed
    vi
    vim  
    

    その他すべて

    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. AからZのLinuxコマンド

    2. Linuxsuコマンド

    3. Linuxエコーコマンド

    1. すべてのユーザーに必要な20のLinuxコマンド

    2. Linux で特定のユーザーに対して特定のコマンドを無効にする方法

    3. Linux コマンドを記録するにはどうすればよいですか?

    1. すべてのLinuxユーザーが知っておくべき10個のコマンド

    2. LinuxでSuコマンドを使用する方法

    3. Linuxでユーザーをロックおよびロック解除する方法