我需要执行rsync
,而不提示我输入密码。
我在rsync
联机帮助页中看到它不允许将密码指定为命令行参数。
但我注意到它允许通过变量指定密码RSYNC_PASSWORD
。
所以我尝试导出变量,但rsync
一直要求我输入密码。
export RSYNC_PASSWORD="abcdef"
rsync root@1.2.3.4:/abc /def
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
请考虑:
rsync
,不能用其他软件换句话说,我需要让RSYNC_PASSWORD
方法起作用!:-)
为什么人们害怕在命令行中写密码?
历史文件位于 中~/.history
,因此它仅对执行命令的用户(和 root)可用。
如何获取当前终端名称?
我的意思ps
是在 TTY 列中显示的名称,例如:
root@dor-desktop:/home/dor/Documents/LAMP_setup/webs_install/do/install# ps aux | egrep 'mysql|(^USER)'
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
dor 2238 0.2 1.9 448052 79796 ? S 17:27 0:17 gedit /home/dor/Documents/LAMP_setup/webs_install/do/install/mysql.install /home/dor/Documents/LAMP_setup/webs_install/do/install/mysql.setup
root 4975 0.1 0.5 324984 22876 ? S 18:12 0:04 gedit /usr/local/mysql/bin/mysqld_safe
root 8160 0.0 0.0 4108 664 pts/2 S 19:08 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --skip-networking --skip-grant-tables --user=mysql --basedir=/usr/local/mysql --ledir=/usr/local/mysql/libexec
mysql 8279 0.0 0.4 146552 19032 pts/2 Sl 19:08 0:00 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var --user=mysql --skip-networking …
Run Code Online (Sandbox Code Playgroud) 在了解了在命令行中使用密码的问题后,我需要找到一种方法来为程序提供密码而不会出现问题(密码不会被记录在某处)。
我有一个 bash 脚本,它可以从源代码自动安装整个 LAMP 服务器:Apache、FastCGI、PHP 和 MySQL。这些安装需要密码,尤其是 MySQL。
如何在不泄露密码的情况下使脚本完全自动化?
编辑(UTC 时间 6 月 9 日,3:55):
我在命令行上通过 root 使用密码调用 mysql:
root@dor-desktop:/home/dor# PASS=`cat /home/dor/tmpf/pass`
root@dor-desktop:/home/dor# mysql -u root -p"$PASS"
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 6
Run Code Online (Sandbox Code Playgroud)
(在我们的例子中,PASS="p4ssw0rd")
我ps aux | grep mysql
通过我的普通用户(dor)执行,它没有显示密码!
(一些)ps
输出是:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 3562 0.0 0.0 34156 2864 pts/0 S+ 05:53 …
Run Code Online (Sandbox Code Playgroud) 我有一个存储在 bash 变量中的 Open Office 电子表格文档。我想做以下类似的事情来通过以下方式提供开放式办公室STDIN
:
echo "$openOfficeDoc" | ooffice
Run Code Online (Sandbox Code Playgroud)
但它不起作用。
注意: bash 变量的内容不得写入磁盘。
我要强调的是,我正在尝试将文件的实际数据传递给 Open Office。
我正在尝试将密码存储在 Open Office 电子表格文件中。密码使用 GPG 加密。出于安全原因,我不希望将密码写入磁盘。
bash 变量值是 Open Office 电子表格文档的二进制 blob。它不是ASCII。
我用来创建 blob 的 bash 代码是:
data=$(cat "Encrypted.gpg" | gpg -u "Dor" -d)
Run Code Online (Sandbox Code Playgroud)
WhileEncrypted.gpg
是 Open Office 电子表格的加密文件。
是否可以通过 STDIN 提供 Open Office?
我正在阅读“Full_Disk_Encryption_Howto_2019”-链接。
我注意到作者使用的分区类型代码并不常见:
sgdisk --typecode=1:8301 --typecode=2:ef02 --typecode=3:ef00 --typecode=5:8301 $DEV
Run Code Online (Sandbox Code Playgroud)
在标准的 Linux 安装中,我可以看到这两个类型代码:8300
和8200
。
这些是每个分区类型代码的名称:
$ sgdisk -L
0700 Microsoft basic data 0c01 Microsoft reserved 2700 Windows RE
3000 ONIE boot 3001 ONIE config 3900 Plan 9
4100 PowerPC PReP boot 4200 Windows LDM data 4201 Windows LDM metadata
4202 Windows Storage Spac 7501 IBM GPFS 7f00 ChromeOS kernel
7f01 ChromeOS root 7f02 ChromeOS reserved 8200 Linux swap
8300 Linux filesystem 8301 Linux reserved 8302 Linux /home …
Run Code Online (Sandbox Code Playgroud) 在没有所述目录的情况下删除目录的所有内容的正确方法是什么?
例如,我有以下目录结构:
foo/
bar1/
bar2/
x.txt
Run Code Online (Sandbox Code Playgroud)
我想删除文件夹bar1
和bar2
文件x.txt
,而不删除 foo
.
还请考虑带有特殊字符的文件名,这些字符可能会被忽略或引发错误。
编辑 #1(UTC 时间 9 月 30 日,18:26):
我认为我的问题不是这个问题的重复,因为我要求删除目录中的所有内容,而另一个问题没有,答案也没有t 包括这样的解决方案。
如果我运行chmod 770 ./folderName
,那么即使在运行后,不是所有者或拥有组的./folderName
用户(即“其他”类别中的用户)也无法访问./folderName/folderB
或./folderName/fileC
:
chmod 777 ./folderName/folderB
chmod 777 ./folderName/fileC
Run Code Online (Sandbox Code Playgroud)
对?该规则是否适用于所有 Linux 发行版?谢谢你。
我正在使用该iw
工具配置 WiFi 接口以嗅探特定通道上的空气(监控模式):
ifconfig wlan0 down
iw dev wlan0 set channel 1
iwconfig wlan0 mode monitor
ifconfig wlan0 up
Run Code Online (Sandbox Code Playgroud)
的联机帮助页iw
说通道带宽是可选的:
dev <devname> set channel <channel> [HT20|HT40+|HT40-]
Run Code Online (Sandbox Code Playgroud)
但不清楚这三个值的默认值是什么以及根据它选择的值?
使用 Ubuntu Ubuntu 12.04.4,内核 3.5.0-45-generic。
tee
将其 stdout 发送到 no-op ( :
) 命令时,则不会打印任何内容,并且文件大小为零。tee
将其标准输出发送到 acat
时,所有内容都会正确打印,并且文件大小大于零。这是一个显示它的代码示例(以脚本的第一个输入参数为条件):
#!/usr/bin/env bash
log_filepath="./log.txt"
[ -f "$log_filepath" ] && { rm "$log_filepath" || exit 1 ; }
fail_tee="$1"
while IFS= read -r -d $'\n' line ; do
printf "%s%s\n" "prefix: " "$line" | \
tee -a "$log_filepath" | \
{
if [ -n "$fail_tee" ]; then
# Nothing is printed to stdout/terminal
# $log_filepath size is ZERO.
: # do nothing.
else
# Each …
Run Code Online (Sandbox Code Playgroud) 在 sh (不是 Bash)中,当提示处于>
模式时,我们如何中止命令的执行?
例如,当输入一个只在开头带引号的字符串时,它会使提示看起来像>
,而无法正常退出,除非点击Ctrl + D
。例子:
root@MyPC:~# echo "hello
> I am
> (How do I exit of this mode?)
Run Code Online (Sandbox Code Playgroud)
如果我不知道哪个字符分隔字符串("
或者'
只是用反斜杠转义换行符/空格),有没有办法让 Bash 知道我想中止当前命令的执行?
在尝试进行如下实验后,我的 GPG 安装搞砸了:
echo "trust" > "/proc/self/fdinfo/27"
echo "trust" > "/proc/self/fdinfo/26"
echo "trust" > "/proc/5639/fd/0"
echo "trust" > "/proc/5639/fd/1"
echo "trust" > "/proc/5639/fd/2"
echo -e -n "trust\n" > "/proc/5639/fd/2"
echo -e -n "trust\n" > "/proc/5639/fd/3"
echo -e -n "trust\n" > "/proc/5639/fd/4"
echo -e -n "trust\n" > "/proc/5639/fd/5"
echo -e -n "trust\n" > "/proc/5639/fd/6"
echo -e -n "trust\n" > "/proc/5639/fd/7"
echo -e -n "trust\n" > "/proc/5639/fd/8"
echo -e -n "trust\n" > "/proc/5639/fd/2"
Run Code Online (Sandbox Code Playgroud)
数字 5639 是 的进程 ID gpg --edit-key "Dor"
。 …
bash ×4
password ×3
command-line ×2
pipe ×2
security ×2
bash-script ×1
directory ×1
filesystems ×1
gpg ×1
networking ×1
openoffice ×1
partition ×1
permissions ×1
rm ×1
rsync ×1
shell ×1
ssh ×1
stdin ×1
terminal ×1
wifi ×1