我有一个bash
脚本,我与sudo
一起运行:sudo NewScript
在脚本中,我有一个git
命令,我不希望与sudo
一起运行。目前,由于整个脚本都使用sudo
运行,因此此命令也会与sudo
一起运行,这就是我想要抑制的内容。
这样的事情是否可能,或者我是否需要在没有sudo
的情况下运行脚本,并为脚本内的每个命令添加sudo
而不是git
命令?
答案 0 :(得分:4)
请注意,root
将程序作为不同的用户运行,不一定是root
; git
只是默认值。因此,您的目标可能不是在没有sudo
的情况下运行您的特定the_user
命令,而是以与其他用户不同的用户身份运行它。
如果您希望git命令由硬编码用户sudo -u the_user <your git command>
运行,请填写
git
脚本中的(当以root身份运行脚本时,这不会提示您输入密码。)
如果您事先不了解用户,而是希望sudo newScript
使用<{p>}打电话给sudo -u $SUDO_USER <your git command>
命令
<?php
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', function () {
return view('welcome');
});
Auth::routes();
Route::get('/', 'BlogController@all')->name('post.all');
Route::match(['get', 'post'], '/article/create', 'BlogController@create')->name('post.create')
->middleware('auth');
Route::get('/article/{id}', 'BlogController@single')->name('post.single');
Route::match(['get', 'post'], '/article/{id}/delete', 'BlogController@delete')->name('post.delete')
->middleware('auth', 'author');
Route::match(['get', 'post'], '/article/{id}/edit', 'BlogController@edit')->name('post.edit')
->middleware('auth', 'author');
Route::get('/author/{id}', 'BlogController@author')->name('post.author');
Route::get('/category/{id}', 'BlogController@category')->name('post.category');
Route::match(['get', 'post'], '/user/create', 'UserController@create')->name('user.create')
->middleware('auth');
Route::get('/home', 'HomeController@index');
代替(感谢@thatotherguy提示)。
答案 1 :(得分:2)
一种使用方法是使用su
切换到普通用户权限并动态运行它而不是实际更改访问权限。
在脚本中运行具有正常git
权限的$USER
命令。
su - "$USER" -c "git_command1; git_command2;"
根据-c
页面将命令传递给shell的man su
标志,
-c, - command = command 使用-c选项将命令传递给shell。
答案 2 :(得分:0)
要在以sudo身份运行的脚本中以非sudo身份运行命令:
sudo -u $SUDO_USER yourcommand
例如:
sudo -u $SUDO_USER whoami
请注意,如果脚本以非sudo的身份运行,则此操作将无效。所以一定要先检查一下。