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

setgid を削除するには (linux/unix)?

ファイルとディレクトリの両方に対して数値的な方法で作業するアプローチを明確にするために、いくつかの点を追加したいと思います.

  • ユーザー/グループ/その他のいずれかに個別の特別な権限を追加する。

chmod "X"755 file

ここで、X は特別なアクセス許可の特定の 8 進数モードです。

  • 一度に複数の特別な権限を追加したい場合。 suid(4) と sgid(2) の両方、つまり 4+2=6 .

chmod "6"755 file

suid(4)、sgid(2)、sticky bit(1) の場合、つまり 4+2+1=7

chmod "7"755 file

  • すべての特別なアクセス許可を削除する (ファイルにのみ適用可能)

chmod 00"0"755 file

<ブロック引用>

4 桁の前の末尾のゼロは、ファイルのアクセス許可を変更するときに値を追加しませんが、ディレクトリのアクセス許可を変更するときに値を追加します。

上記の数値コードは、ファイルに対してのみアクセス許可を 7755 から 755 に変更しますが、ディレクトリに対して同じことを行うと、他のファイルのスティッキー ビットのみが削除されるため、6755 になります。

ディレクトリのすべての特別な権限を削除します。

chmod "000"755 file

  • 同様に、suid パーミッションを削除し、sgid(2) と sticky bit(1) を持つ場合、つまり 2+1=3 .

chmod 00"3"755 file

また、文字 (r、w、x、X、s、、t) と演算子 (+/-) を使用したソリューションは、以前の回答で既に議論され、承認されています。


関連:「数値モードでビットを設定できます(ただしクリアはできません)」

RHEL 7 chmod 0644 $filename では、setuid(4)、setgid(2)、または sticky(1) が削除されませんでした。

ただし、前に余分な 0 を付けるとうまくいきました:

chmod 00644 $filename


+ を変更します - に許可を追加するため 削除するには:

sudo chmod g-s filename

これをプログラムで行いたい場合は、いくつかのビット演算子を使用する必要があります。通常は

mode_without_suid = bitwise_and(existing_mode, bitwise_not(S_ISUID))

どこで S_ISUID 0o4000 は、通常の rwx より上のモード ビットを使用する定数です。 0644 のようなもの .

たとえば、Python では

import os
import stat

def mode_details(m):
    return f"mode={oct(m)} = {stat.filemode(m)}"

mode = os.stat('foo').st_mode
print("old mode", mode_details(mode))

new_mode = mode & ~stat.S_ISUID

os.chmod('foo', new_mode)
print("new mode", mode_details(new_mode))

old mode mode=0o104654 = -rwSr-xr--
new mode mode=0o100654 = -rw-r-xr--

コマンドが

である数値の方法で setgid を削除するには

sudo chmod 0664 $ファイル名

ここでは、ファイルのパーミッションが 664 であり、変更していないことを前提としています。上記のコマンドの左端のビットは setuid(4 ),setgid(2 ) とスティッキー (1 )。これらの setuid を象徴的に表すのは u+s です 、setgid は g+s です スティッキーは o+t です

例 1:-chmod u+s filename これは、rws である言及されたファイル名の uid を設定します。 r_xr_x

例 2:chmod 2770 directoryこれは、rwxr_s である前述のディレクトリの gid を設定します r_x


Linux
  1. Linuxファイル機能を管理する方法

  2. Linuxでファイルの名前を変更するにはどうすればよいですか?

  3. UNIX/Linux でファイルの行数を数える方法

  1. Linuxでファイルを移動する方法

  2. Linuxでファイルを見つける方法

  3. Linux – Unix / linuxファイルのディレクトリ構造情報をどのように検査しますか?

  1. Linuxでファイルまたはディレクトリを削除(削除)する方法

  2. Linuxでディレクトリを削除する方法

  3. Linuxでファイルを作成する方法