小编The*_*lis的帖子

用户如何在未经许可的情况下执行文件?

我创建了一个 Bash 脚本,它与"Hello World"相呼应。我还创建了一个测试用户bob,使用adduser.

没有人有权执行该文件,如下所示ls

$ ls -l hello.sh 
-rw-r--r-- 1 george george 19 Mai 29 13:06 hello.sh
Run Code Online (Sandbox Code Playgroud)

正如我们从上面看到的,文件的所有者是乔治,他只有读写访问权限,但没有执行访问权限。但是以乔治身份登录我可以直接执行脚本:

$ . hello.sh 
Hello World
Run Code Online (Sandbox Code Playgroud)

更糟糕的是,我以bob身份登录,我只有读取权限,但我仍然可以执行该文件:

$ su bob
Password: 
$ . /home/george/testdir/hello.sh 
Hello World
Run Code Online (Sandbox Code Playgroud)

这是怎么回事?

command-line bash users permissions executable

11
推荐指数
3
解决办法
2870
查看次数

Zip/Tar 文件压缩到更大的尺寸?

我有 4 个文件,我想将它们包含在.zip文件中。

drwxr-xr-x  7 skemelio themelis 4,0K ???  18 00:21 CSharp
drwxr-xr-x 11 skemelio themelis 4,0K ???  18 00:17 gnome-games
drwxr-xr-x  8 skemelio themelis 4,0K ???  18 00:17 gnome-music
drwxr-xr-x  4 skemelio themelis 4,0K ???  18 00:18 Test
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,它们的大小总共为 16K。

我正在使用下面的命令创建 zip:

zip -r myfiles.zip *
Run Code Online (Sandbox Code Playgroud)

该文件已成功创建,但现在其大小为20M,如下所示!

drwxr-xr-x  7 skemelio themelis 4,0K ???  18 00:21 CSharp
drwxr-xr-x 11 skemelio themelis 4,0K ???  18 00:17 gnome-games
drwxr-xr-x  8 skemelio themelis 4,0K ???  18 00:17 gnome-music …
Run Code Online (Sandbox Code Playgroud)

tar zip compression

4
推荐指数
1
解决办法
435
查看次数

无法指定文件创建日期

我想自动创建一些文件,所以我创建了一个脚本。我还想指定这些文件的创建日期。

例如,在终端中,要创建一个创建日期为2012 年 5 月 12日的file.txt,我可以如下所示,touch

touch -d 20120512 file.txt
Run Code Online (Sandbox Code Playgroud)

列出该文件确认日期,

-rw-rw-r-- 1 lenovo lenovo 0 May  12  2012 file.txt
Run Code Online (Sandbox Code Playgroud)

如果我在脚本中应用上述内容,我正在创建的文件都将当前时间作为创建时间,而不是我指定的时间。我在这里做错了什么?

脚本

#!/bin/bash

##################################
#Generate dat and snapshot files.#
##################################
srv_dir="/home/lenovo/Source/bash/srv"
main_dir="${srv_dir}/main"
database_dir="${main_dir}/Database"
dat_file="${main_dir}/remote.dat"

if [[ -e ${main_dir} ]]; then
    echo "${main_dir} allready exists."
    echo "Aborting..."
    exit 0
fi

# Create directories.
mkdir -p ${database_dir}

# Create files.
if [[ $1 == "--dat-newer" ]]; then
    # User wants dat file to be the latest modified …
Run Code Online (Sandbox Code Playgroud)

bash ubuntu shell-script date touch

2
推荐指数
1
解决办法
156
查看次数