【问题标题】:using a variable inside of setsebool to set booleans in bash使用 setsebool 内部的变量在 bash 中设置布尔值
【发布时间】:2014-05-24 16:17:11
【问题描述】:

我正在尝试制作一个基于服务设置变量的脚本。脚本小而简单。从逻辑上讲,它应该可以工作,但是我对自己做错了什么感到迷茫。命令将是: setsebool -P Boolean # 设置布尔值。

#!/bin/bash
read -p "Which service do you wish to see?" serv
IFS=$'\r\n' boolser=($(getsebool -a | grep $serv | cut -d- -f1))
for (( f=0; f <=`echo "${#boolser[@]}"`; f++ ));do
if [ ${boolser[$f]} > /dev/null ];then
    boolbleed="${boolser[$f]}"  
    while true; do
        read -p "Set $boolbleed (0/1)" yn
        case $yn in
            0) setsebool -P $boolbleed 0; break;;
            1) setsebool -P $boolbleed 1; break;;
            *) echo "$yn is not a 0 or a 1";;
        esac
    done
else
    unset ${boolser[$f]}
fi
done

这些是运行脚本的结果:

[root@testing Downloads]# ./sebool-vsftpd-remove
Which service do you wish to see?ftp
Set allow_ftpd_anon_write  (0/1)0
Boolean allow_ftpd_anon_write  is not defined
Set allow_ftpd_full_access  (0/1)1
Boolean allow_ftpd_full_access  is not defined

运行脚本后,剩下的是:

[root@testing Downloads]# getsebool -a | grep ftp
allow_ftpd_anon_write --> off
allow_ftpd_full_access --> off
allow_ftpd_use_cifs --> off
allow_ftpd_use_nfs --> off
ftp_home_dir --> on
ftpd_connect_db --> on
ftpd_use_fusefs --> off
ftpd_use_passive_mode --> off
httpd_enable_ftp_server --> on
tftp_anon_write --> on
tftp_use_cifs --> off
tftp_use_nfs --> off

有谁知道为什么没有定义布尔值?手动输入代码时setsebool -P allow_ftpd_anon_write 1 就成功了。

【问题讨论】:

    标签: bash loops boolean selinux


    【解决方案1】:

    您的变量末尾有一个空格,并且您已设置 IFS 以便它不会作为分词的一部分被删除。这是一个简化的测试用例,可以解决您的问题:

    IFS=$'\r\n'
    value=$(echo "hello - world" | cut -d - -f 1)
    [ $value = hello ] && echo "works" || echo "fails"
    

    最简单的解决方案是在第一个空格之前剪切变量,而不是在空格之后但在破折号之前:

    boolser=($(getsebool -a | grep $serv | cut -d ' ' -f1))
    

    【讨论】:

    • 谢谢,这就像一个魅力。它比我想象的要慢一点。因此,我将对其进行一些更改,但这确实有所帮助。谢谢。
    • 您应该在 bash 中使用 [[ 而不是 [test。否则,你应该用双引号保护你的变量。请参阅:stackoverflow.com/questions/19597962/bash-illegal-number/…
    猜你喜欢
    • 2017-11-05
    • 2019-06-01
    • 2015-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多