Linux使用者身份切換與特殊的shell

2021-09-25 02:31:32 字數 2857 閱讀 5755

1、su命令中如果想要僅執行一次命令,可在後面加上-c

2、sh -c 的重要性

作用:在linux使用 echo 並配合命令重定向是實現向檔案中寫入資訊的快捷方式。

比如要向 test.asc 檔案中隨便寫入點內容,可以:

$ echo "資訊" > test.asc

# 或者

$ echo "資訊" >> test.asc

下面,如果將 test.asc 許可權設定為只有 root 使用者才有許可權進行寫操作:

$ sudo chown root.root test.asc
然後,我們使用 sudo 並配合 echo 命令再次向修改許可權之後的 test.asc 檔案中寫入資訊:

$ sudo echo "又一行資訊" >> test.asc

-bash: test.asc: permission denied

這時,可以看到 bash 拒絕這麼做,說是許可權不夠。這是因為重定向符號 「>」 和 ">>" 也是 bash 的命令。我們使用 sudo 只是讓 echo 命令具有了 root 許可權,但是沒有讓 「>」 和 ">>" 命令也具有 root 許可權,所以 bash 會認為這兩個命令都沒有像 test.asc 檔案寫入資訊的許可權。

解決這一問題的途徑有兩種。第一種是利用 "sh -c" 命令,它可以讓 bash 將乙個字串作為完整的命令來執行,這樣就可以將 sudo 的影響範圍擴充套件到整條命令。具體用法如下:

$ sudo sh -c 'echo "又一行資訊" >> test.asc'
另一種方法是利用管道和 tee 命令,該命令可以從標準輸入中讀入資訊並將其寫入標準輸出或檔案中,具體用法如下:

$ echo "第三條資訊" | sudo tee -a test.asc
注意,tee 命令的 "-a" 選項的作用等同於 ">>" 命令,如果去除該選項,那麼 tee 命令的作用就等同於 ">" 命令。

3、sh -c 執行一連串命令是通過分號來延續命令進行

4、sudo使用者提權的幾個知識要點

①單一使用者可以在visudo上使用root所有命令與sudoers檔案語法

#輸入命令

visudo

#找到這一行

root all=(all)  all

#新增v1 all=(all) all

元件意義:

【使用者賬號】【登入者**主機名】【(可以切換的身份)】【可執行的命令(務必是絕對路徑)】

②利用wheel使用者組以及免密碼功能處理visudo

[root@study ~]# visudo

#請使用 root 先設定

....(前面省略)....

%wheel all=(all) all

#大約在 106 行左右,請將這行的 # 拿掉!

#在最左邊加上 % ,代表後面接的是乙個『使用者組』之意!改完請儲存後離開

[root@study ~]# usermod -a -g wheel v1

#將 pro1 加入 wheel 的支援

免密登入:

[root@study ~]# visudo 

%wheel all=(all) nopasswd: all

#大約在 109 行左右,請將 # 拿掉!

#在最左邊加上 % ,代表後面接的是乙個『使用者組』之意!改完請儲存後離開

③限制命令操作

可以修改【可執行的命令】指定使用者僅能夠使用部分系統任務,比如幫root修改其它使用者的密碼

visudo

v1 all=(root) /usr/bin/passwd

但是,root給v1提權後,輸入passwd,結果更改的是root密碼,非常不安全,所以需要限制使用者的命令引數。

root@study ~]# visudo

#注意是 root 身份

myuser1 all=(root) !/usr/bin/passwd, /usr/bin/passwd [a-za-z]*, !/usr/bin/passwd root

④通過命令別名建立visudo

可以是【命名別名、賬戶別名、主機別名】

visudo

user_alias admpw = pro1,pro2,mysuer1,myuser2

#創立乙個賬號

cmnd_alias admpwcom = !=usr/bin/passwd /usr/bin/passwd [a-za-z]*,!/usr/bin /passwd root

#使用命令別名

admpw all=(root) admpwcpm

方便彈性修改。

⑤兩次sudo操作的間隔超過5分鐘,那就得要重新輸入一次自己的密碼。

⑥通過【admins    all=(root)    /bin/su -】可以將admins使用者組的人立刻變成root身份,無需一直使用sudo,這也是多人公用一台主機使用的技巧。

5、當使用者嘗試利用nologin賬戶登入時,可以利用/etc/nologin.txt告知使用者不要利用該賬號登陸系統

Linux使用者身份切換

為什麼需要切換使用者身份?在日常工作中,盡量使用普通使用者賬號操作,當需要root許可權的時候再通過身份切換的方式切換至root管理員,這樣能保證系統的安全性。使用普通賬號的安全性主要體現在兩個方面 下面介紹兩種linux中切換使用者身份的方式。該命令可以將身份切換至指定賬戶,但需要輸入該賬戶的密碼...

Linux使用者身份及切換

對linux中的文件的操作身份有三種,分別是ownner group others,可以實現對檔案的read write execute操作 1 ownner 擁有者 建立檔案的使用者就是該檔案的ownner,檔案的使用者可以修改檔案的擁有者及使用者組,root使用者 uid 0,每個使用者的uid...

Linux命令 使用者身份切換

格式為 su username,後面可以跟 也可以不跟。普通使用者的su命令不加username時,就相當於切換到root使用者,反之亦然。當su 命令加上 後,會初始化當前使用者的各種環境變數。如果不加 切換到root使用者時,當前目錄沒有變化 而如果加上 切換到root賬戶時,當前目錄為root...