mycpen

Mycpen

记录学习历程与受益知识
github
telegram
bilibili

18_Linux基礎-ユーザー権限3

一。振り返り:/ ルートディレクトリの /etc は一般的に設定ファイルを置く場所#

/ ルートディレクトリの /etc は一般的に設定ファイルを置く場所

1 人のユーザーの基本グループは 1 つだけで、附属グループは複数持つことができる;享受する権限は同じで、そのグループの権限を持つ


---------------------------------------------------------------------------------------------------------------------------------
[root@sanchuang-linux ~]# useradd sanle10
[root@sanchuang-linux ~]# id sanle10
uid=2224(sanle10) gid=2224(sanle10) グループ=2224(sanle10)
[root@sanchuang-linux ~]# less /etc/group
[root@sanchuang-linux ~]# useradd sanle11 -g sanchuang05 -G sanchuang06	# 基本グループ、附属グループを指定
[root@sanchuang-linux ~]# id sanle11
uid=2225(sanle11) gid=1043(sanchuang05) グループ=1043(sanchuang05),1044(sanchuang06)
[root@sanchuang-linux ~]# less /etc/passwd					# 注:ユーザー情報を格納
hello:x:1007:1007::/home/hello:/bin/bash
# 注:フィールド2は単なるパスワードのプレースホルダーで、実際のパスワードは/etc/shadowに格納されている
[root@sanchuang-linux ~]# ls -al /etc/passwd
-rw-r--r-- 1 root root 4539 11月 12 09:50 /etc/passwd		# 注:誰でも/etc/passwdにアクセスできる
[root@sanchuang-linux ~]# ls -al /etc/shadow
---------- 1 root root 4588 11月 12 09:50 /etc/shadow		# 注:権限はすべて0

[root@sanchuang-linux ~]# useradd sanle13 -c "create sanle13"	# 注:ユーザーの説明情報を指定
[root@sanchuang-linux ~]# less /etc/passwd
sanle13:x:2227:2227:create sanle13:/home/sanle13:/bin/bash	 # 注:フィールド5ユーザー説明情報

[root@sanchuang-linux tmp]# ls -ld /lianxi	# 注:/lianxi ディレクトリがどのユーザーとグループに属しているかを確認
drwxr-xr-x. 9 root root 4096 11月  9 09:47 /lianxi

# 通常のユーザーはデフォルトで自分のホームディレクトリまたは/tmpディレクトリ内でのみ作成できる

個人環境情報の設定
~/.bash_profile
~/.bashrc

[root@sanchuang-linux tmp]# id sanle11
uid=2225(sanle11) gid=1043(sanchuang05) グループ=1043(sanchuang05),1044(sanchuang06)	# 注:基本グループsanchuang05
[root@sanchuang-linux tmp]# su - sanle11
[sanle11@sanchuang-linux ~]$ touch cc
[sanle11@sanchuang-linux ~]$ ls -al
総使用量 16
……………………
-rw-r--r--   1 sanle11 sanchuang05    0 11月 12 10:21 cc	# 注:有効グループsanchuang05
# 注:有効グループはデフォルトでユーザーの基本グループ
[sanle11@sanchuang-linux ~]$ newgrp sanchuang06			 # 注:有効グループを変更;一時的な変更
[sanle11@sanchuang-linux ~]$ touch dd
[sanle11@sanchuang-linux ~]$ ls -al
……………………
-rw-r--r--   1 sanle11 sanchuang06    0 11月 12 10:23 dd	# 注:有効グループsanchuang06

二。練習#

2.1#

問題 1

ユーザー sx1、sx2、sx3 の 3 人を作成し、これらのユーザーの附属グループはすべて sanle グループとし、/home/sanle という名前のディレクトリを作成し、そのディレクトリ内で 3 人のユーザーが協力してファイルを処理できるようにします。ディレクトリの権限を適切に変更し、ユーザーとグループのみがこのディレクトリ内でファイルにアクセス、削除、作成できるようにし、他のユーザーには一切の権限を与えず、3 人のユーザーが新たに作成したファイルは自分だけが削除でき、互いに削除できないようにし、さらに新たに作成したファイルは自動的に sanle のグループ所有権が割り当てられるようにします。


---------------------------------------------------------------------
#ユーザーsx1、sx2、sx3の3人を作成し、これらのユーザーの附属グループはすべてsanleグループとし、/home/sanleという名前のディレクトリを作成し、そのディレクトリ内で3人のユーザーが協力してファイルを処理できるようにします。ディレクトリの権限を適切に変更し、ユーザーとグループのみがこのディレクトリ内でファイルにアクセス、削除、作成できるようにし、他のユーザーには一切の権限を与えず、3人のユーザーが新たに作成したファイルは自分だけが削除でき、互いに削除できないようにし、さらに新たに作成したファイルは自動的にsanleのグループ所有権が割り当てられるようにします。
useradd -G sanle sx1
useradd -G sanle sx2
useradd -G sanle sx3
mkdir /home/sanle
newgrp sanle
mkdir /home/sanle
chmod 1770 /home/sanle -R
echo "newgrp sanle" >> ~/.bashrc

2.2#

問題 2 スクリプト

---------------------------------------------------------------------
1、ユーザーを作成
2、指定されたユーザーを削除
3、指定されたユーザーを変更(ユーザー ID、ユーザー属グループ、ユーザーのホームディレクトリ)
4、指定されたユーザーを削除

例1
---------------------------------------------------------------------
#!/bin/bash
menu(){
    echo "1、ユーザーを作成"
    echo "2、指定されたユーザーを削除"
    echo "3、指定されたユーザーを変更(ユーザーID、ユーザー属グループ、ユーザーのホームディレクトリ)"
    echo "4、指定されたユーザーを削除"
}

add(){
    read -p "ユーザー名を入力:" username			  # 注:キーボードからの入力を受け取る
    useradd $username &>/dev/null && echo "作成成功" || echo "作成失敗"
}

del(){
    read -p "ユーザー名を入力:" username
    userdel -r $username &>/dev/null && echo "削除成功" || echo "ユーザーが存在しません"
}

modify(){
    read -p "ユーザー名を入力:" username
    id $username &>/dev/null
    if [[ $? = 0 ]]
    then
        read -p "uidを入力:" uid				# 注:さらに3つのcaseを追加して詳細にすることができる
        read -p "gidを入力:" gid
        read -p "ホームディレクトリを入力:" home
        usermod -u $uid -g $gid -d $home $username 2>/dev/null && echo "変更成功" || "変更失敗"
    else
        echo "ユーザーが存在しません"
    fi
}

while :
do
    menu
    read -p "1-4を入力してください:" option
    case $option in
    1)
        add
        ;;
    2)
        del
        ;;
    3)
        modify
        ;;
    4)
        del
        ;;
    *)
        echo "不正な入力です"
    esac
done

例2:複数の変数を一度に追加
---------------------------------------------------------------------------------------------------------------------------------
mod(){
	read -p "ユーザーID、ユーザー属グループ、ユーザーのホームディレクトリを入力:" userid usergroup userhome username
       usermod -u $userid -g $usergroup -d $userhome $username &> /dev/null && echo "変更成功" || echo "変更失敗"	
}

例3:精密選択(推奨)
---------------------------------------------------------------------------------------------------------------------------------
#!/bin/bash

menu(){
    echo "1、ユーザーを作成"
    echo "2、指定されたユーザーを削除"
    echo "3、指定されたユーザーを変更(ユーザーID、ユーザー属グループ、ユーザーのホームディレクトリ)"
}
menu2(){
    echo "1、ユーザーIDを変更"
    echo "2、ユーザー属グループを変更"
    echo "3、ユーザーのホームディレクトリを変更"

}

add(){
    read -p "ユーザー名を入力:" username
    id $username &>/dev/null &&echo "ユーザーは既に存在します" || useradd $username &>/dev/null && echo "作成成功" || echo "作成失敗"
}

del(){
    read -p "ユーザー名を入力:" username
    id $username &>/dev/null || echo "ユーザーが存在しません" && userdel -r $username &>/dev/null && echo "削除成功" || echo "削除失敗"
}

modify(){
    read -p "ユーザー名を入力:" username
    if id $username &>/dev/null
    then
	menu2
	read -p "入力してください:" choice2
	case $choice2 in
	1)
	    read -p "uidを入力:" uid
	    usermod -u $uid $username &>/dev/null && echo "変更成功" || echo "変更失敗"
	;;
	2)
	    read -p "gidを入力:" gid
	    usermod -g $gid &>/dev/null && echo "変更成功" || echo "変更失敗"
	;;
	3)
	    read -p "ホームディレクトリを入力:" home
	    usermod -d $home $username &>/dev/null && echo "変更成功" || echo "変更失敗"
	;;
	*)
	echo "不正な入力です"
	esac
    else
        echo "ユーザーが存在しません"
    fi
}

while true
do
    menu
    read -p "入力してください(qで終了):" choice
    case $choice in
    1)
        add
        ;;
    2)
        del
        ;;
    3)
        modify
        ;;
    q)
	break
	;;
    *)
        echo "不正な入力です"
    esac
done

三. ACL の使用#

ACL (アクセス制御リスト) # 注:アクセス制御リスト(どの人がアクセスできるか / できないかを許可)

  • ファイル / ディレクトリのアクセス制御リストは、任意の指定したユーザー / グループに対して権限文字を割り当てることができる

ACL の設定:setfacl コマンド

  • 形式: setfacl オプション ルール ファイル

一般的なオプション

  • -m:ACL のルールを追加または変更
  • -b:すべての ACL ルールを削除
  • -x:指定された ACL ルールを削除

ACL の確認:getfacl コマンド

  • 形式:getfacl ファイル

ACL の設定:setfacl コマンド

  • 形式: setfacl オプション ルール ファイル

一般的なルール

  • 形式:タイプ:特定のユーザーまたはグループ:権限
  • user:(uid/name):(perms) 特定のユーザーの権限を指定
  • group:(gid/name):(perms) 特定のグループの権限を指定
  • other::(perms) その他のユーザーの権限を指定
  • mask::(perms) 有効な最大権限を設定

注意

  • user、group、other、mask はそれぞれ u , g , o , m と略される
  • perms は rwx を使用

#注:acl アクセス制御リストは、仕事やクラウドコンピューティングで非常に一般的です

例1:ファイルaclの確認
---------------------------------------------------------------------------------------------------------------------------------
#注:権限を正確に制御
[root@localhost ~]# getfacl win-utf-2.txt 	# 注:ファイルaclルールを確認
# file: win-utf-2.txt						# 注:ファイルaclを取得
# owner: root								# 注:初期のルール
# group: root
user::rw-
group::r--
other::r--
[root@localhost ~]# ls -la win-utf-2.txt 
-rw-r--r--. 1 root root 0 10月 27 11:42 win-utf-2.txt
[root@localhost ~]# 
===============================================================================

例2:sanchuangユーザーに読み書き実行権限を付与
#注:特定のユーザーに対して
---------------------------------------------------------------------------------------------------------------------------------
[root@localhost ~]# setfacl -m u:sanchuang:rwx win-utf-2.txt 	# 注:sanchuangユーザーにrwx権限を付与
[root@localhost ~]# getfacl win-utf-2.txt 				# 注:uもuserと書くことができる 一般的に略称
# file: win-utf-2.txt							# 注:注意:一般ユーザーは/rootディレクトリに対して操作権限がない
# owner: root
# group: root
user::rw-
user:sanchuang:rwx								# 注:sanchuangユーザーにrwx権限を付与
group::r--
mask::rwx
other::r--
[root@localhost ~]# ls -la win-utf-2.txt 		# 注:権限が+が追加された
-rw-rwxr--+ 1 root root 0 10月 27 11:42 win-utf-2.txt
===============================================================================

例3:グループに読み書き実行権限を付与
#注:特定のグループに対して
---------------------------------------------------------------------------------------------------------------------------------
[root@localhost ~]# setfacl -m g:sanchuang5:rw win-utf-2.txt 
[root@localhost ~]# ls -la win-utf-2.txt 		# 注:set file acl
-rw-rwxr--+ 1 root root 0 10月 27 11:42 win-utf-2.txt
[root@localhost ~]# getfacl win-utf-2.txt 
# file: win-utf-2.txt
# owner: root
# group: root
user::rw-
user:sanchuang:rwx
group::r--
group:sanchuang5:rw-							# 注:グループに読み書き実行権限を付与
mask::rwx
other::r--
===============================================================================

例4:有効な最大権限を設定
#注:maskに対して有効権限を設定
---------------------------------------------------------------------------------------------------------------------------------
#注:有効な最大権限をrに設定
#注:設定された権限はmaskの下にある(天井)
[root@localhost ~]# setfacl -m m::r win-utf-2.txt		# 注:有効な最大権限を設定
[root@localhost ~]# getfacl win-utf-2.txt 
# file: win-utf-2.txt
# owner: root
# group: root
user::rw-
user:sanchuang:rwx		#effective:r--					# 注:sanchuangの権限がrwであっても、有効最大権限はr
group::r--
group:sanchuang5:rw-		#effective:r--
mask::r--
other::r--
#注:有効最大権限を指定した後、ユーザーsanchuangは読み書き権限があっても、ユーザーsanchuang5の最大権限は読みのみ
#注:ユーザーsanchuangにrw権限が設定されていても、maskがrに設定されているため、権限はrのみ

四. ACL の種類#

ACL の種類

  • アクセス型 ACL(Access ACL):ファイルまたはディレクトリ
  • デフォルト型ACL(Default ACL):ディレクトリのみに適用

デフォルト型 ACL(Default ACL)

  • 形式:setfacl –m default: タイプ:特定のユーザーまたはグループ:権限
    setfacl –m d: タイプ:特定のユーザーまたはグループ:権限
  • デフォルト型 ACL が設定されたディレクトリは、その下のすべてのファイルまたはサブディレクトリは親ディレクトリの ACL 権限を持ち、サブディレクトリも同様にデフォルトの ACL 権限を持つ

#注:デフォルト型はディレクトリにのみ設定できる

 デフォルトACLの設定
---------------------------------------------------------------------------------------------------------------------------------
[root@sanchuang-linux lianxi]# mkdir cc_test
[root@sanchuang-linux lianxi]# getfacl cc_test/
# file: cc_test/
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
[root@sanchuang-linux lianxi]# setfacl -m d:u:sanle10:rw cc_test/	 # 注:ファイルにデフォルト型acl設定を行う
[root@sanchuang-linux lianxi]# getfacl cc_test/
# file: cc_test/
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx								# 注:新たに追加されたパラメータ
default:user:sanle10:rw-
default:group::r-x
default:mask::rwx
default:other::r-x
[root@sanchuang-linux lianxi]# cd cc_test/
[root@sanchuang-linux cc_test]# touch aa		# 注:新たに作成されたファイルはデフォルトのacl設定を継承する
[root@sanchuang-linux cc_test]# getfacl aa
# file: aa
# owner: root
# group: root
user::rw-
user:sanle10:rw-								# 注:新たに作成されたファイルはデフォルトのacl設定を継承する
group::r-x			#effective:r-- 
mask::rw-
other::r--
#注:デフォルト設定以前に作成されたファイルはデフォルトのacl設定を継承しない

五。練習#

1、新たに 3 つのグループ shuiguo、mifeng、shaokao を作成

2、新たに 3 人のユーザーを作成し、pingguo は shuiguo グループに、jingshi は mifen グループに、yueyang は shaokao グループに属する

3、ルートディレクトリに food というディレクトリを新たに作成し、/etc/passwd ファイルを food ディレクトリにコピーする

4、権限を設定し、passwd ファイルは shuiguo グループが読み書きでき、jingshi ユーザーは読み書き実行でき、yueyang ユーザーは何の操作もできないようにする


---------------------------------------------------------------------------------------------------------------------------------
#1
[root@sanchuang-linux lianxi]# groupadd shuiguo
[root@sanchuang-linux lianxi]# groupadd mifen
[root@sanchuang-linux lianxi]# groupadd shaokao
#2
[root@sanchuang-linux lianxi]# useradd -g shuiguo pingguo
[root@sanchuang-linux lianxi]# useradd -g mifen jingshi
[root@sanchuang-linux lianxi]# useradd -g shaokao yueyang
#3
[root@sanchuang-linux lianxi]# mkdir /food
[root@sanchuang-linux lianxi]# cp /etc/passwd /food
[root@sanchuang-linux lianxi]# cd /food
#4
[root@sanchuang-linux food]# setfacl -m g:shuiguo:rw passwd 
[root@sanchuang-linux food]# setfacl -m u:jingshi:rwx passwd 
[root@sanchuang-linux food]# setfacl -m u:yueyang:--- passwd			# 注:権限なし
[root@sanchuang-linux food]# getfacl passwd 
# file: passwd
# owner: root
# group: root
user::rw-
user:jingshi:rwx
user:yueyang:---
group::r--
group:shuiguo:rw-
mask::rwx

六。権限の継承と拒否#

ユーザーは特定のグループに属することで、そのグループの権限を継承します。

​ 1. 主要グループ
​ 2. 附属グループ

ユーザーの主要グループ(有効グループ)が特定のグループに属することで、そのグループの権限を継承します。附属グループが特定のグループに属する場合も同様です。

  • newgrp

拒否権限はすべてに優先します ---》ユーザーに対して

あるグループが許可され、別のグループが拒否される ---》許可


七. sudo 権限#

sudo 権限

  • Linux では root ユーザーの権限が最大です

​ シャットダウン、システムの再起動、IP アドレスの設定、ディスクのフォーマット、マウントなど

  • 一般ユーザーの権限は非常に小さい
  • 一般ユーザーにも一定の権限を与えるには?

​ root ユーザーの負担を軽減する

  • 権限を与える場合、ユーザーに与えるのか、それともグループに与えるのか?

#注:sudo は一部の一般ユーザーに root ユーザーの権限を実行させるためのもの
#注:sudo --> 一般ユーザーにコマンドを実行する権限を与える
#注:sudo 設定ファイル /etc/sudoers
#注:権限を与えられた者が実行したすべてのコマンドを記録するログファイル /var/log/secure

#注:最初の ALL は任意の端末、マシンが sudo にアクセスできることを示し、一般的にはローカルホストを示す
#注:2 番目の ALL は sudo コマンドが任意のユーザーの権限で実行できることを示す
#注:3 番目の ALL は任意のコマンドを実行できることを示す

権限ログ:権限を与えられた者が実行したすべてのコマンドを記録するログファイル /var/log/secure
ログを確認し、権限コマンドの実行状況を知る
[root@cali ~]# tailf /var/log/secure

例1:ランダムパスワードの生成
#注:ランダムパスワード生成ツール	mkpasswd
https://www.cnblogs.com/shijunxian/archive/2020/05/26/12961543.html
---------------------------------------------------------------------------------------------------------------------------------
[root@sanchuang-linux food]# yum install expect -y
[root@sanchuang-linux bin]# mkpasswd -l 15 -d 3 -c 4 -C 4 -s 2
wjp4[HC]hx6mSO6
===============================================================================

例2:sudo設定ファイル /etc/sudoers
#注:特定のユーザーに特定のコマンドを実行させる権限を与える
#注:/etc/sudoersを編集して権限を与え、検証する
---------------------------------------------------------------------------------------------------------------------------------
[root@sanchuang-linux bin]# less /etc/sudoers
……………… 
## 構文:
## 
##      user    MACHINE=COMMANDS		……………… 
## rootが任意のコマンドをどこでも実行できることを許可 
root    ALL=(ALL)       ALL					# 注:ALLはこのマシンを示す
#注:1、rootユーザーがこのコマンドを実行できることを許可; 2、ALLはこのホストを示し、(ALL)はユーザーがどのユーザーの権限で設定できるかを示す; 3、ALLはすべてのコマンドを示す(このマシン上で任意のユーザーのコマンドを実行できる)

#注:最初のALLは任意の端末、マシンがsudoにアクセスできることを示し、一般的にはローカルホストを示す
#注:2番目のALLはsudoコマンドが任意のユーザーの権限で実行できることを示す
#注:3番目のALLは任意のコマンドを実行できることを示す
===============================================================================

例3:設定ファイル/etc/sudoersを編集してユーザーに権限を付与
#注:設定ファイルを編集するにはvimを使用することもでき、visudoを使用することもできる。visudoを使用するとファイル名を指定する必要はない
#注:/etc/sudoersを編集するにはvisudoを使用することを推奨します。構文を検出します;vimで編集しても検出されません
#注:ユーザーsanleにはローカルホストのすべての権限が与えられます
---------------------------------------------------------------------------------------------------------------------------------
[root@sanchuang-linux bin]# visudo			# 注:visudoを使用するとファイル名を指定する必要はない
## rootが任意のコマンドをどこでも実行できることを許可
root    ALL=(ALL)       ALL
sanle   ALL=(ALL)       ALL					
#注:sanleユーザーはこのホスト上で任意のユーザーの任意のコマンドを実行できるが、sudoを使用する際にはsanleユーザーのパスワードを入力する必要がある
#注:NOPASSWDを設定しない場合、最初にパスワードを入力した後、パスワードには有効期限があります
[root@sanchuang-linux bin]# su - sanle		# 注:sanleユーザーに切り替える
[sanle@sanchuang-linux ~]$ sudo passwd wy		# 注:前に+sudoを付けることで任意の操作が可能
私たちはあなたがシステム管理者から日常の注意事項を理解していると信じています。
要約すると、以下の3点に集約されます:
    #1) 他人のプライバシーを尊重すること。
    #2) 入力する前に考慮すること(結果とリスク)。
    #3) 権力が大きいほど、責任も大きい。
[sudo] sanle のパスワード:						# 注:sanleユーザーのパスワードを入力する必要があります
[root@sanchuang-linux bin]# visudo 
## rootが任意のコマンドをどこでも実行できることを許可
root    ALL=(ALL)       ALL
sanle   ALL=(ALL)       NOPASSWD:ALL	
#注:sanleユーザーはこのホスト上で任意のユーザーの任意のコマンドを実行でき、sanleのパスワードを入力する必要はありません
[sanle@sanchuang-linux ~]$ sudo passwd wy
wyユーザーのパスワードを変更します。
新しいパスワード:									# 注:元のパスワードを確認する必要はありません
===============================================================================

例4:ユーザー/グループに権限を付与
---------------------------------------------------------------------------------------------------------------------------------
[root@sanchuang-linux bin]# visudo 
## rootが任意のコマンドをどこでも実行できることを許可
root    ALL=(ALL)       ALL
sanle   ALL=(ALL)       NOPASSWD:ALL	
#注:sanleユーザーはこのホスト上で任意のユーザーの任意のコマンドを実行でき、sanleのパスワードを入力する必要はありません
%sanchuang5 ALL=(ALL)   NOPASSWD:ALL		
#注:sanchuang5グループのユーザーはこのホスト上で任意のユーザーの任意のコマンドを実行でき、パスワードを入力する必要はありません

#注:sanchuang5グループに属するすべてのメンバーもこの権限を持つことになります
===============================================================================

例5 特定のコマンドに権限を付与
---------------------------------------------------------------------------------------------------------------------------------
[sanle@sanchuang-linux ~]$ which chown
/usr/bin/chown
[sanle@sanchuang-linux ~]$ which passwd
/usr/bin/passwd
[root@sanchuang-linux cc_test]# visudo
root    ALL=(ALL)       ALL
sanle   ALL=(ALL)       NOPASSWD:ALL
%sanchuang5 ALL=(ALL)   NOPASSWD:ALL
wy      ALL=(ALL)       /usr/bin/chown,/usr/bin/passwd		# 注:コマンドの絶対パスを指定
#注:wyユーザーはこのホスト上でchown、passwdコマンドを実行する権限を持ち、コマンドのパスを絶対パスで記述します
[wy@sanchuang-linux ~]$ sudo chmod 777 aa
私たちはあなたがシステム管理者から日常の注意事項を理解していると信じています。
要約すると、以下の3点に集約されます:
    #1) 他人のプライバシーを尊重すること。
    #2) 入力する前に考慮すること(結果とリスク)。
    #3) 権力が大きいほど、責任も大きい。
[sudo] wy のパスワード:											 # 注:パスワードを確認した後に変更できます
[wy@sanchuang-linux ~]$ sudo passwd wy2
wy2ユーザーのパスワードを変更します。
新しいパスワード:
===============================================================================

例6:権限ログ /var/log/ディレクトリ内のsecureファイル
#注:権限を与えられた者が実行したすべてのコマンドを記録するログファイル	/var/log/secure
---------------------------------------------------------------------------------------------------------------------------------
[root@sanchuang-linux cc_test]# cd /var/log/
[root@sanchuang-linux log]# less secure				
uid=0 tty=/dev/pts/2 ruser=wy rhost=  user=wy
Nov 12 16:43:26 sanchuang-linux sudo[2424]: pam_unix(sudo:auth): conversation failed
Nov 12 16:43:26 sanchuang-linux sudo[2424]: pam_unix(sudo:auth): auth could not identify password for [wy]
Nov 12 16:43:26 sanchuang-linux sudo[2424]: wy : command not allowed ; TTY=pts/2 ; PWD=/home/wy ; USER=root
 ; COMMAND=/bin/chmod 777 aa
===============================================================================

例7
---------------------------------------------------------------------------------------------------------------------------------
[root@sanchuang-linux bin]# ls -ld /bin/passwd
-rwsr-xr-x. 1 root root 33600 4月   7 2020 /bin/passwd
#注:s位  普通ユーザーにはパスワードを設定する権限があるが、他のユーザーのパスワードを設定する権限はない。また、パスワードは複雑性を満たす必要があります

八。練習#

yum install net-tools -y
bailongma ユーザーに useradd、userdel、passwd の権限を付与
baigujing ユーザーに ip、ping、ifconfig、route の権限を付与
yutujing ユーザーに poweroff、reboot の権限を付与

#注:権限を与える際にシステムにそのユーザーが存在するかどうかは確認しません

例1
---------------------------------------------------------------------------------------------------------------------------------
[wy@sanchuang-linux ~]$ which useradd				# 注:コマンドの絶対パスを確認
/usr/sbin/useradd
………………………………
[wy@sanchuang-linux ~]# visudo
root    ALL=(ALL)       ALL
bailongma ALL=(ALL)     /usr/sbin/useradd,/usr/sbin/userdel,/usr/bin/passwd
baigujing ALL=(ALL)     /usr/sbin/ip,/usr/bin/ping,/usr/sbin/ifconfig,/usr/sbin/route
yutujing  ALL=(ALL)     /usr/sbin/poweroff,/usr/sbin/reboot
===============================================================================

例2:(ALL)は省略可能
---------------------------------------------------------------------------------------------------------------------------------
[wy@sanchuang-linux ~]# visudo
root    ALL=(ALL)       ALL
bailongma ALL=/usr/sbin/useradd,/usr/sbin/userdel,/usr/bin/passwd		# 注:(ALL)は省略可能
baigujing ALL=/usr/sbin/ip,/usr/bin/ping,/usr/sbin/ifconfig,/usr/sbin/route
yutujing  ALL=/usr/sbin/poweroff,/usr/sbin/reboot
===============================================================================

例3:エイリアスの定義
--------------------------------------------------------------------------------------------
[wy@sanchuang-linux ~]# visudo
#コマンドエイリアスの定義
Cmnd_Alias  NETWORK = /usr/sbin/ip,/usr/bin/ping,/usr/sbin/ifconfig,/usr/sbin/route
Cmnd_Alias  SHUT = /usr/sbin/poweroff,/usr/sbin/reboot
Cmnd_Alias  USER = /usr/sbin/useradd,/usr/sbin/userdel,/usr/bin/passwd

bailongma ALL=USER,NETWORK
baigujing ALL=NETWORK
yutujing  ALL=SHUT
------------------------------------------------------------------------
[baigujing@sanchuang-linux ~]$ sudo ip a add 192.168.0.144/24 dev ens33  #注:ネットワークインターフェースにIPアドレスを追加
[sudo] baigujing のパスワード:								# 注:ipコマンド権限の使用
[baigujing@sanchuang-linux ~]$ ip add
……………… 
    inet 192.168.0.26/24 brd 192.168.0.255 scope global dynamic noprefixroute ens33
    inet 192.168.0.144/24 scope global secondary ens33
……………… 
------------------------------------------------------------------------
#注:ネットワークインターフェースにIPアドレスを追加(1つのインターフェースには複数のIPアドレスを持つことができます)
[wy@sanchuang-linux ~]$ ip a add 192.168.0.144/24 dev ens33

九. SELinux の紹介#

  • SELinux とは?何のためにあるのか?
  • SELinux が有効かどうかを確認するには?

​ getenforce

  • SELinux を無効にしたり有効にしたりするには?

​ 一時的に
​ setenforce
​ 永続的に
​ 設定ファイルを変更
​ vim /etc/selinux/config
​ vim /etc/sysconfig/selinux
​ システムを再起動

  • 企業で SELinux は多く使用されているか?

.---------------------------------------------------------------------------------------------------------------------------------------------------------------------

SELinuxとは?
·SELinuxはLinuxシステムのセキュリティに関するサブシステムで、Linuxの全体的なセキュリティレベルを向上させるために使用されます。アクセス制御システムの一種で、プロセスはそのタスクに必要なファイルにのみアクセスできます。(プロセスがアクセスできるリソースを制御)

·オペレーティングシステムには2種類のアクセス制御があります:自主アクセス制御(DAC)と強制アクセス制御(MAC)。

·標準LinuxセキュリティはDACの一種で、SELinuxはLinuxに柔軟で構成可能なMACを追加します。

·DAC(Discretionary Access Control)自主アクセス制御

·動作原理:

·MAC(Mandatory Access Control)―――強制アクセス制御 ---》selinux

·動作原理:

·どのプロセスがどのタイプのファイルにアクセスできるかは、セキュリティポリシーによって決まります。
永続的な変更
#注:これはリンクファイル	/etc/sysconfig/selinux -> /etc/selinux/config
[root@cali log]# vim /etc/sysconfig/selinux
SELINUX=disabled

一時的な設定
一時的な設定は、システムを再起動すると無効になります
0--》Permissive 宽容モード
1--》Enforcing	  強制実行モード 
[root@cali selinux]# setenforce 0  
[root@cali selinux]# getenforce  
Permissive
[root@cali selinux]#
[root@cali selinux]# setenforce 1  
[root@cali selinux]# getenforce  
Enforcing
[root@cali selinux]#
·プロセス制御 :どのプロセスがどのファイルにアクセスできるかを制御します。なぜなら、プロセスとファイルを分類し、ポリシーを策定し、ポリシー内でどのタイプのプロセスがどのタイプのファイルを操作できるかを規定しているからです。

·サービス異常はアクセスできない--》ネットワーク経由でアクセスできない
·1.iptablesファイアウォールが有効かどうかを確認する 
·2.selinuxセキュリティメカニズムが有効かどうかを確認する

·iptablesは外部のセキュリティポリシーファイアウォール
·selinuxはLinux内部のセキュリティポリシーメカニズムファイアウォール
ブログリンク:https://blog.csdn.net/yanjun821126/article/details/80828908

SELinux
はカーネルに統合されたセキュリティ関連のサブシステムで、システムをより安全にします
カーネルバージョン2.6以上がサポート

#注:カーネルバージョンを確認するには uname -r
[root@sanchuang-linux bin]# uname -r
4.18.0-193.el8.x86_64

セキュリティ強化型Linux(Security-Enhanced Linux)の略称がSELinuxで、Linuxカーネルモジュールであり、Linuxのセキュリティサブシステムです。

SELinuxの役割
SELinuxの主な役割は、システム内のサービスプロセスがアクセスできるリソースを最小限に抑えること(最小権限の原則)です。

DAC:
SELinuxを使用していないオペレーティングシステムでは、リソースにアクセスできるかどうかを決定する要因は、特定のリソースが対応するユーザーの権限(読み取り、書き込み、実行)を持っているかどうかです。
この権限管理メカニズムの主体はユーザーであり、自主アクセス制御(DAC)と呼ばれます。

MAC:
SELinuxを使用しているオペレーティングシステムでは、リソースにアクセスできるかどうかを決定する要因は、上記の要因に加えて、各プロセスが特定のリソースに対するアクセス権を持っているかどうかを判断する必要があります。
この権限管理メカニズムの主体はプロセスであり、強制アクセス制御(MAC)と呼ばれます。

デフォルトでは、SELinuxは無効(disable)になっています。サービスがアクセスできないのは、基本的にSELinuxが設定されているためです。
例:一時的な変更
--------------------------------------------------------------------------------------------
#注:一時的な変更は、シャットダウン後に無効になります
#注:一時的な設定は、システムを再起動すると無効になります
#注:0  --》Permissive 宽容モード
#注:1  --》Enforcing  強制実行モード
[root@sanchuang-linux ~]# getenforce 			# 注:現在のselinuxのモードを取得
Disabled
[root@sanchuang-linux ~]# setenforce 0			# 注:0宽容モード		一時的に有効
setenforce: SELinux is disabled
[root@sanchuang-linux ~]# setenforce 1			# 注:1強制モード(SELinuxルールを遵守する必要があります)
setenforce: SELinux is disabled
#注:0|1  Permissive|Enforcing  宽容モード|強制実行モード

============================================================================================
例:永続的に有効にするための設定ファイルの変更
#注:設定ファイル:/etc/selinux/config
[root@sanchuang-linux ~]# vim /etc/selinux/config
#     enforcing - SELinuxセキュリティポリシーが強制されます。
#     permissive - SELinuxは強制する代わりに警告を表示します。
#     disabled - SELinuxポリシーはロードされません。
SELINUX=disabled		# 注:動作モードを指定
#注:変更後は再起動が必要です
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。