Linux ';拒绝许可';即使在以root身份运行时
我有一个简单的bash shell脚本: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
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等)。