Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux ';拒绝许可';即使在以root身份运行时_Linux_Bash - Fatal编程技术网

Linux ';拒绝许可';即使在以root身份运行时

Linux ';拒绝许可';即使在以root身份运行时,linux,bash,Linux,Bash,我有一个简单的bash shell脚本: user_exists=cat /etc/passwd | grep 'GNU Mailman' echo $user_exists 当我使用sudo./'script\u name'运行此脚本时,我在尝试访问/etc/passwd的行上收到一个权限拒绝错误。我做错了什么?user_exists=$(cat/etc/passwd | grep'GNU Mailman') 或者更好 getent密码用户名user_exists=$(cat/etc/pas

我有一个简单的bash shell脚本:

user_exists=cat /etc/passwd | grep 'GNU Mailman'
echo $user_exists
当我使用
sudo./'script\u name'
运行此脚本时,我在尝试访问/etc/passwd的行上收到一个权限拒绝错误。我做错了什么?

user_exists=$(cat/etc/passwd | grep'GNU Mailman')

或者更好

getent密码用户名

user_exists=$(cat/etc/passwd | grep'GNU Mailman')

或者更好

getent密码用户名

user_exists=$(cat/etc/passwd | grep'GNU Mailman')

或者更好

getent密码用户名

user_exists=$(cat/etc/passwd | grep'GNU Mailman')

或者更好


getent passwd username

要理解原因,您必须像
bash
查看行那样查看行:

user_exists=cat /etc/passwd | grep 'GNU Mailman'
根据bash,您正在(临时)将环境变量
user\u exists
设置为具有值
cat
。设置该值后,将执行程序
/etc/passwd
,并将其输出发送到
grep'GNU Mailman'
。由于
/etc/passwd
没有执行权限,因此此命令因缺少权限而失败

解决方案是使用Vladimir Kolesnikov概述的流程替代的适当格式:

user_exist=$(grep 'GNU Mailman' /etc/passwd)

要理解原因,您必须像
bash
看待行那样看待行:

user_exists=cat /etc/passwd | grep 'GNU Mailman'
根据bash,您正在(临时)将环境变量
user\u exists
设置为具有值
cat
。设置该值后,将执行程序
/etc/passwd
,并将其输出发送到
grep'GNU Mailman'
。由于
/etc/passwd
没有执行权限,因此此命令因缺少权限而失败

解决方案是使用Vladimir Kolesnikov概述的流程替代的适当格式:

user_exist=$(grep 'GNU Mailman' /etc/passwd)

要理解原因,您必须像
bash
看待行那样看待行:

user_exists=cat /etc/passwd | grep 'GNU Mailman'
根据bash,您正在(临时)将环境变量
user\u exists
设置为具有值
cat
。设置该值后,将执行程序
/etc/passwd
,并将其输出发送到
grep'GNU Mailman'
。由于
/etc/passwd
没有执行权限,因此此命令因缺少权限而失败

解决方案是使用Vladimir Kolesnikov概述的流程替代的适当格式:

user_exist=$(grep 'GNU Mailman' /etc/passwd)

要理解原因,您必须像
bash
看待行那样看待行:

user_exists=cat /etc/passwd | grep 'GNU Mailman'
根据bash,您正在(临时)将环境变量
user\u exists
设置为具有值
cat
。设置该值后,将执行程序
/etc/passwd
,并将其输出发送到
grep'GNU Mailman'
。由于
/etc/passwd
没有执行权限,因此此命令因缺少权限而失败

解决方案是使用Vladimir Kolesnikov概述的流程替代的适当格式:

user_exist=$(grep 'GNU Mailman' /etc/passwd)

您可以共享文件权限吗?与文件的ls-la输出类似?该命令将
$user\u exists
设置为
“cat”
,然后尝试作为命令执行
/etc/passwd
,这不是您想要的。
cat不是必需的,因为
grep`已经知道如何从文件中读取输入:
user_exists=$(grep'GNU Mailman'/etc/passwd)
您可以共享文件权限吗?与文件的ls-la输出类似?该命令将
$user\u exists
设置为
“cat”
,然后尝试作为命令执行
/etc/passwd
,这不是您想要的。
cat不是必需的,因为
grep`已经知道如何从文件中读取输入:
user_exists=$(grep'GNU Mailman'/etc/passwd)
您可以共享文件权限吗?与文件的ls-la输出类似?该命令将
$user\u exists
设置为
“cat”
,然后尝试作为命令执行
/etc/passwd
,这不是您想要的。
cat不是必需的,因为
grep`已经知道如何从文件中读取输入:
user_exists=$(grep'GNU Mailman'/etc/passwd)
您可以共享文件权限吗?与文件的ls-la输出类似?该命令将
$user\u exists
设置为
“cat”
,然后尝试作为命令执行
/etc/passwd
,这不是您想要的。
cat是不必要的,因为
grep`已经知道如何从文件中读取输入:
user\u exists=$(grep'GNU Mailman'/etc/passwd)
+1用于
getent
方法(尽管我认为在OP的情况下,查找应该与字段5--“real”匹配)名称文本——不在用户名上,但用户名是更好的实践方法,使用
getent
可以使用更多的后端(NIS、LDAP等)。+1对于
getent
方法(尽管我认为在OP的情况下,查找应该与字段5--“real”匹配)名称文本——不在用户名上,但用户名是更好的实践方法,使用
getent
可以使用更多的后端(NIS、LDAP等)。+1对于
getent
方法(尽管我认为在OP的情况下,查找应该与字段5--“real”匹配)名称文本——不在用户名上,但用户名是更好的实践方法,使用
getent
可以使用更多的后端(NIS、LDAP等)。+1对于
getent
方法(尽管我认为在OP的情况下,查找应该与字段5--“real”匹配)名称文本——不在用户名上,但用户名是更好的实践方法,使用
getent
可以处理更多的后端(NIS、LDAP等)。