TL,DR:我希望能够通过双击 .desktop 文件来启动具有 root 权限的 GUI 应用程序,并保留良好(相对于 sudo 方式)的非 sudo 方式主题。

TL,DR:我希望能够通过双击 .desktop 文件来启动具有 root 权限的 GUI 应用程序,并保留良好(相对于 sudo 方式)的非 sudo 方式主题。

TL,DR:我希望能够通过双击 .desktop 文件来启动具有 root 权限的 GUI 应用程序,并保留良好(相对于 sudo 方式)的非 sudo 方式主题。


我在这里查看了相关的问题/答案,但是,我不能说我了解情况并找到了解决方案。要么它们结构不合理且缺乏说明性,要么我就是没有理解。或者他们大多数都提到了gksu,但是,据我所知,gksu已从存储库中删除。我无法安装它。

屏幕截图可在问题末尾找到。

我知道这将是一个混乱的问题,请原谅我。


现在,我的电脑上安装了 Quartus 程序,我可以通过(屏幕截图左侧)运行它:

/home/muyustan/altera/13.1/quartus/bin/quartus --64bit

我还创建了一个.desktop如下文件:

[Desktop Entry]
Type=Application
Version=0.9.4
Name=Quartus II 13.1 (64-bit) Web Edition
Comment=Quartus II 13.1 (64-bit)
Icon=/home/muyustan/altera/13.1/quartus/adm/quartusii.png
Exec=/home/muyustan/altera/13.1/quartus/bin/quartus --64bit
Terminal=false
Path=/home/muyustan/altera/13.1

到目前为止一切顺利,我可以通过桌面入口运行它,没有终端窗口弹出并停在那里(够烦人的)。一切都很好。

然而,我发现在 Quartus 应用程序的一部分中,它必须打开(调用)另一个程序(Modelsim)并将一些文件保存到某些地方等。问题是,如果我不在sudo它前面启动该应用程序(屏幕截图的右侧),我会收到一些错误提示permission denied,事情根本无法正常工作。

因此,我可以通过改变我的启动习惯来解决这个问题,

from -- double click on the desktop entry

to -- Ctrl+Alt+T -> sudo [executablePath] -> enter password

现在,显然我不想要这个,主要有两个原因。

  1. 需要更长的时间。
  2. 只要应用程序处于打开状态,该终端就会停留在那里。

就在此时,出现了第三个(额外)原因,您可能从屏幕截图中注意到了,也可能没有注意到,启动时sudoGUI 主题看起来像 Windows XP 风格...顺便说一下,当我第一次安装 Quartus 时,我没有选择/更改任何主题。

因此,我希望我已经清楚地表达了我的观点。

提前致谢。

在此处输入图片描述


问题更新

根据评论中某人的请求,查看我在被调用(从 Quartus 内部启动)应用程序 Modelsim 中遇到的错误:

do temp1_run_msim_rtl_verilog.do 
# if {[file exists rtl_work]} {
#   vdel -lib rtl_work -all
# }
# ** Error: (vdel-19) Failed to access library 'rtl_work' at "/home/muyustan/altera/13.1/temp1/simulation/qsim/rtl_work".
# Permission denied. (errno = EACCES)
# ** Error: /home/muyustan/altera/13.1/modelsim_ase/linux/vdel failed.
# Error in macro ./temp1_run_msim_rtl_verilog.do line 4
# /home/muyustan/altera/13.1/modelsim_ase/linux/vdel failed.
#     while executing
# "vdel -lib rtl_work -all"
#     invoked from within
# "if {[file exists rtl_work]} {
#   vdel -lib rtl_work -all
# }"

答案1

用户收到此错误消息:

# ** Error: (vdel-19) Failed to access library 'rtl_work' at "/home/muyustan/altera/13.1/temp1/simulation/qsim/rtl_work".
# Permission denied. (errno = EACCES)

从使用来看sudo,我预计一些文件夹/文件是以 root 权限级别创建的。

  1. 我们在“altera”文件夹中生成了整个树的列表,以验证所有权和权限。使用:

    find /home/muyustan/altera -type d -exec stat -c '%A %G %U %n' {} \; > log.txt
    
  2. 查找该文件夹temp1或用户/组root,你可以看到有 root 拥有的文件夹

    drwxrwxr-x muyustan muyustan /home/muyustan/altera/13.1/temp1/simulation/qsim/work/up_counter
    drwxrwxr-x muyustan muyustan /home/muyustan/altera/13.1/temp1/simulation/qsim/work/prime_detector_4bits_vlg_check_tst
    drwxr-xr-x root root /home/muyustan/altera/13.1/temp1/simulation/qsim/rtl_work
    drwxr-xr-x root root /home/muyustan/altera/13.1/temp1/simulation/qsim/rtl_work/_temp
    drwxr-xr-x root root /home/muyustan/altera/13.1/temp1/simulation/qsim/rtl_work/up_counter_tb
    drwxr-xr-x root root /home/muyustan/altera/13.1/temp1/simulation/qsim/rtl_work/up_counter
    drwxrwxr-x muyustan muyustan /home/muyustan/altera/13.1/temp1/simulation/modelsim
    drwxr-xr-x root root /home/muyustan/altera/13.1/temp1/simulation/modelsim/gate_work
    drwxr-xr-x root root /home/muyustan/altera/13.1/temp1/simulation/modelsim/gate_work/prime_detector_4bits
    drwxr-xr-x root root /home/muyustan/altera/13.1/temp1/simulation/modelsim/gate_work/_temp
    drwxr-xr-x root root /home/muyustan/altera/13.1/temp1/simulation/modelsim/rtl_work
    drwxr-xr-x root root /home/muyustan/altera/13.1/temp1/simulation/modelsim/rtl_work/_temp
    drwxr-xr-x root root /home/muyustan/altera/13.1/temp1/simulation/modelsim/rtl_work/up_counter
    drwxrwxr-x muyustan muyustan /home/muyustan/altera/13.1/temp1/db
    drwxrwxr-x muyustan muyustan /home/muyustan/altera/13.1/temp1/incremental_db
    
  3. 将该 altera 文件夹及其所有子文件夹和文件的所有权更改为您的用户和组。

    sudo chown -R muyustan:muyustan /home/muyustan/altera
    

尝试再次运行 Quartussudo

相关内容