How do I specify permissions for sbt artefacts - sbt

How does one specify the permissions for files output by sbt? I need these to be set correctly in order to be able to test the code with my local Apache server.
In the scalaJS project after a clean fastOptJS I
can see that the launcherapp-fastopt.js files are user read only.
$ ls -al target/scala-2.13/
total 240
drwxr-xr-x 6 hjs staff 192 23 Oct 11:08 .
drwxr-xr-x 5 hjs staff 160 23 Oct 11:08 ..
drwxr-xr-x 6 hjs staff 192 23 Oct 11:08 classes
-rw------- 1 hjs staff 69861 23 Oct 11:08 launcherapp-fastopt.js
-rw------- 1 hjs staff 48380 23 Oct 11:08 launcherapp-fastopt.js.map
drwxr-xr-x 3 hjs staff 96 23 Oct 11:08 update
Apache won't see it with those permissions so I have to change the mode on the files like this:
$ chmod -R a+rX target/
$ ls -al target/scala-2.13/
total 240
drwxr-xr-x 6 hjs staff 192 23 Oct 11:08 .
drwxr-xr-x 5 hjs staff 160 23 Oct 11:08 ..
drwxr-xr-x 6 hjs staff 192 23 Oct 11:08 classes
-rw-r--r-- 1 hjs staff 69861 23 Oct 11:08 launcherapp-fastopt.js
-rw-r--r-- 1 hjs staff 48380 23 Oct 11:08 launcherapp-fastopt.js.map
drwxr-xr-x 3 hjs staff 96 23 Oct 11:08 update
Is there a way to specify the rights in sbt for the produced artefacts so I don't have to chmod everytime I compile?
For a use case see the Launcher App

Related

using systemctl --root for a different root directory

I am working on point of sale bootp terminals. The client application, OS etc. and all its files live under /opt/posterm/x86_64/.../
ll /opt/posterm/x86_64
total 16
lrwxrwxrwx. 1 root root 7 Jul 31 2020 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 Sep 21 2021 boot
drwxr-xr-x. 2 root root 30 Jul 21 2021 dev
drwxr-xr-x. 84 root root 8192 Nov 22 2021 etc
drwxr-xr-x. 2 root root 6 Jul 31 2020 home
lrwxrwxrwx. 1 root root 7 Jul 31 2020 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 Jul 31 2020 lib64 -> usr/lib64
drwxr-xr-x. 3 root root 27 Jul 29 2021 media
drwxr-xr-x. 2 root root 6 Jul 31 2020 mnt
drwxr-xr-x. 3 root root 24 Sep 15 2021 opt
dr-xr-xr-x. 2 root root 6 Jul 31 2020 proc
dr-xr-x---. 2 root root 112 Sep 29 2021 root
drwxr-xr-x. 14 root root 178 Jul 21 2021 run
lrwxrwxrwx. 1 root root 8 Jul 31 2020 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 Jul 31 2020 srv
dr-xr-xr-x. 2 root root 6 Jul 31 2020 sys
drwxrwxrwt. 7 root root 93 Oct 1 2021 tmp
drwxr-xr-x. 12 root root 144 Jul 21 2021 usr
drwxr-xr-x. 20 root root 278 Sep 21 2021 var
I was able to create the service however im not certain its right since the is-enabled command output shows me nothing. Why?
[root#zzpoxxxx]# systemctl enable posterm.service --root=/opt/posterm/x86_64
Created symlink /opt/posterm/x86_64/etc/systemd/system/multi-user.target.wants/posterm.service → /etc/systemd/system/posterm.service.
systemctl is-enabled --root=/opt/posterm/i386 posterm.service
systemctl is-enabled posterm.service --root=/opt/posterm/i386
[root#zzxxxxx]# echo $?
1
system]# find / -name posterm.service |xargs ls -al
lrwxrwxrwx. 1 root root 35 Nov 15 13:37 /opt/posterm/x86_64/etc/systemd/system/multi-user.target.wants/posterm.service -> /etc/systemd/system/posterm.service
-rw-r--r--. 1 root root 236 Nov 15 11:43 /opt/posterm/x86_64/etc/systemd/system/posterm.service
-rw-r--r--. 1 root root 236 Nov 15 11:38 /opt/posterm/x86_64/usr/lib/systemd/system/posterm.service
any help much appreciated!?
thank you!

Symfony 3.4 creates "prod?" cache directory

I'm currently using Symfony 3.4.8 with up to date dependencies.
In production, symfony creates "prod?" directory :
drwxrwxrwx 4 www-data www-data  434 Apr 20 10:26 .
drwxr-xr-x 4 www-data www-data   45 Apr 20 10:21 ..
-rw-rw-rw- 1 www-data www-data  165 Apr 20 10:26 annotations.map
drwxrwxrwx 2 www-data www-data  15K Apr 20 10:26 ContainerDcnvgsr
-rw-rw-rw- 1 www-data www-data 106K Apr 20 10:26 srcProd?DebugProjectContainerCompiler.log
-rw-rw-rw- 1 www-data www-data  628 Apr 20 10:26 srcProd?DebugProjectContainerDeprecations.log
-rw-rw-rw- 1 www-data www-data  784 Apr 20 10:26 srcProd?DebugProjectContainer.php
-rw-rw-rw- 1 www-data www-data  21K Apr 20 10:26 srcProd?DebugProjectContainer.php.meta
-rw-rw-rw- 1 www-data www-data 347K Apr 20 10:21 srcProd?DebugProjectContainer.xml
-rw-rw-rw- 1 www-data www-data  21K Apr 20 10:21 srcProd?DebugProjectContainer.xml.meta
drwxrwxrwx 2 www-data www-data    0 Apr 20 10:21 vich_uploader
var/cache directory :
drwxr-xr-x 4 www-data www-data  45 Apr 20 10:21 .
drwxr-xr-x 4 www-data www-data  44 Apr 19 11:38 ..
drwxr-xr-x 9 www-data www-data 556 Apr 19 11:42 prod
drwxrwxrwx 4 www-data www-data 434 Apr 20 10:26 prod?
public directory :
drwxr-xr-x 3 www-data www-data  104 Apr 19 11:39 build
drwxr-xr-x 2 www-data www-data   27 Apr 19 11:38 bundles
drwxrwxrwx 2 www-data www-data   98 Apr 19 09:27 imports
-rw-rw-rw- 1 www-data www-data 1242 Apr 19 09:27 index.php
Most of users have the following error :
(1/1) FatalThrowableError
Parse error: syntax error, unexpected
'DebugProjectContainer' (T_STRING), expecting ',' or ')'
The app works for few users with the correct "prod" cache directory and no error.
How can I fix this ?
There was a special character (^M) at the end of each line in the .env file due to a bad copy/paste.
¯\_(ツ)_/¯

Installing Wordpress Plugin from uploaded file require FTP logging

I'm trying to install the wordpress plugging but just can't bypass this FTP credential page.
I have tried:
1, add FS_METHOD: 'direct' to wp-config.php
2, change permission on the file folder, see blow,
Still just can't have it working, please help
:/var/www/html/wordpressblog# ls -la
total 196
drwxr-xr-x 5 nobody nogroup 4096 Jan 15 08:43 .
drwxr-xr-x 3 nobody nogroup 4096 Jan 15 07:36 ..
-rw-r--r-- 1 nobody nogroup 418 Sep 25 2013 index.php
-rw-r--r-- 1 nobody nogroup 19935 Jan 3 2017 license.txt
-rw-r--r-- 1 nobody nogroup 7413 Dec 12 2016 readme.html
-rw-r--r-- 1 nobody nogroup 5434 Sep 23 20:21 wp-activate.php
drwxr-xr-x 9 nobody nogroup 4096 Nov 30 03:06 wp-admin
-rw-r--r-- 1 nobody nogroup 364 Dec 19 2015 wp-blog-header.php
-rw-r--r-- 1 nobody nogroup 1627 Aug 29 2016 wp-comments-post.php
-rw-r--r-- 1 nobody nogroup 2901 Jan 15 08:43 wp-config.php
drwxrwxrwx 4 nobody nogroup 4096 Nov 30 03:06 wp-content
-rw-r--r-- 1 nobody nogroup 3669 Aug 20 12:37 wp-cron.php
drwxr-xr-x 18 nobody nogroup 12288 Nov 30 03:06 wp-includes
-rw-r--r-- 1 nobody nogroup 2422 Nov 21 2016 wp-links-opml.php
-rw-r--r-- 1 nobody nogroup 3306 Aug 22 19:52 wp-load.php
-rw-r--r-- 1 nobody nogroup 36583 Oct 13 10:10 wp-login.php
-rw-r--r-- 1 nobody nogroup 8048 Jan 11 2017 wp-mail.php
-rw-r--r-- 1 nobody nogroup 16246 Oct 4 08:20 wp-settings.php
-rw-r--r-- 1 nobody nogroup 30071 Oct 19 01:36 wp-signup.php
-rw-r--r-- 1 nobody nogroup 4620 Oct 24 06:12 wp-trackback.php
-rw-r--r-- 1 nobody nogroup 3065 Sep 1 2016 xmlrpc.php
/var/www# ls -la
drwxr-xr-x 3 root root 4096 Jan 10 10:28 .
drwxr-xr-x 12 root root 4096 Jan 10 10:28 ..
drwxr-xr-x 3 nobody nogroup 4096 Jan 15 07:36 html
The wp-content directory needs to be owned by the same user and group than the webserver. You might need to change these settings, e.g. in the httpd.conf if you are using apache
I encountered this before when I setup my own web server using nginx. The whole /var/www/html folder and all descendants need to be owned by the same user running nginx worker to enable install plugin without ftp inside wordpress dashboard for my case. Hope it helps!

Squelching an ls warning/error

This is the command Im running
ls -l folder/file{[1-9],[1-9][0-9]}.txt
ls: folder/file[1-9][0-9].txt: No such file or directory
-rw-r--r-- 1 Craig staff 558 7 Jul 18:12 folder/file1.txt
-rw-r--r-- 1 Craig staff 250 7 Jul 18:12 folder/file2.txt
-rw-r--r-- 1 Craig staff 85 7 Jul 18:12 folder/file3.txt
-rw-r--r-- 1 Craig staff 18 7 Jul 18:12 folder/file4.txt
-rw-r--r-- 1 Craig staff 0 7 Jul 18:12 folder/file5.txt
I want to squelch the error line I get after the command so that it just doesn't show up the command would just look like
ls -l folder/file{[1-9],[1-9][0-9]}.txt
-rw-r--r-- 1 Craig staff 558 7 Jul 18:12 folder/file1.txt
-rw-r--r-- 1 Craig staff 250 7 Jul 18:12 folder/file2.txt
-rw-r--r-- 1 Craig staff 85 7 Jul 18:12 folder/file3.txt
-rw-r--r-- 1 Craig staff 18 7 Jul 18:12 folder/file4.txt
-rw-r--r-- 1 Craig staff 0 7 Jul 18:12 folder/file5.txt
Turning on the nullglob shell option will accomplish this:
$ ls file{[0-9],[1-9][0-9]}.txt
ls: cannot access file[1-9][0-9].txt: No such file or directory
file0.txt file1.txt file2.txt file3.txt file4.txt file5.txt
$ shopt -s nullglob
$ ls file{[0-9],[1-9][0-9]}.txt
file0.txt file1.txt file2.txt file3.txt file4.txt file5.txt
Add the shopt command to your .bashrc
Ref: https://www.gnu.org/software/bash/manual/bashref.html#Filename-Expansion

Unix (Solaris) sort of ls -l output, with numeric names

Given an ls -l list of directories which are software release versions, how to sort into human-preferable form? Eg:
$ ls -loghF
total 209
drwxr-xr-x 2 3 Jun 18 11:33 12.0.40.0/
drwxr-xr-x 2 3 Aug 24 14:45 13.0.11.10/
drwxr-xr-x 2 3 Jul 13 14:12 13.0.11.4/
drwxr-xr-x 2 3 Jul 26 15:30 13.0.11.5/
drwxr-xr-x 2 4 Jul 27 11:33 13.0.11.6/
drwxr-xr-x 2 3 Aug 3 11:41 13.0.11.7/
drwxr-xr-x 2 3 Aug 10 11:53 13.0.11.8/
drwxr-xr-x 2 3 Aug 17 17:00 13.0.11.9/
drwxr-xr-x 2 3 Aug 3 14:37 13.0.17.0/
drwxr-xr-x 2 3 Aug 13 11:50 13.0.18.0/
drwxr-xr-x 2 3 Aug 17 11:21 13.0.19.0/
drwxr-xr-x 2 3 Jul 28 15:00 13.0.9.1/
The desired result is:
$ ls -loghF | sort ...
total 209
drwxr-xr-x 2 3 Jun 18 11:33 12.0.40.0/
drwxr-xr-x 2 3 Jul 28 15:00 13.0.9.1/
drwxr-xr-x 2 3 Jul 13 14:12 13.0.11.4/
drwxr-xr-x 2 3 Jul 26 15:30 13.0.11.5/
drwxr-xr-x 2 4 Jul 27 11:33 13.0.11.6/
drwxr-xr-x 2 3 Aug 3 11:41 13.0.11.7/
drwxr-xr-x 2 3 Aug 10 11:53 13.0.11.8/
drwxr-xr-x 2 3 Aug 17 17:00 13.0.11.9/
drwxr-xr-x 2 3 Aug 24 14:45 13.0.11.10/
drwxr-xr-x 2 3 Aug 3 14:37 13.0.17.0/
drwxr-xr-x 2 3 Aug 13 11:50 13.0.18.0/
drwxr-xr-x 2 3 Aug 17 11:21 13.0.19.0/
The sort must skip past the date portion of each line, then sort numerically (eg, starting with the 12 or 13), using '.' as a field separator.
I thought of two approaches, but am having difficulty with the sort -k syntax, if it's supported at all:
(1) Skip the first 36 characters, then with '.' as field separator, sort numerically on the next 4 fields.
(2) With field separator as whitespace, skip to the 7th field, then change the field separator to '.' and sort numerically on the next 4 fields.
The alternate is a little Perl script, but can't Unix sort do this "simple" task?
Here's a command line which uses awk to put the version numbers first, sorts using four numerical keys, then uses cut to get rid of the temporary at front:
$ ls -loghF | awk '{ print $7, $0; }' | sort -n -t. -k1,1 -k2,2 -k3,3 -k4,4 | cut -d' ' -f2-
drwxr-xr-x 2 3 Jun 18 11:33 12.0.40.0/
drwxr-xr-x 2 3 Jul 28 15:00 13.0.9.1/
drwxr-xr-x 2 3 Jul 13 14:12 13.0.11.4/
drwxr-xr-x 2 3 Jul 26 15:30 13.0.11.5/
drwxr-xr-x 2 4 Jul 27 11:33 13.0.11.6/
drwxr-xr-x 2 3 Aug 3 11:41 13.0.11.7/
drwxr-xr-x 2 3 Aug 10 11:53 13.0.11.8/
drwxr-xr-x 2 3 Aug 17 17:00 13.0.11.9/
drwxr-xr-x 2 3 Aug 24 14:45 13.0.11.10/
drwxr-xr-x 2 3 Aug 3 14:37 13.0.17.0/
drwxr-xr-x 2 3 Aug 13 11:50 13.0.18.0/
drwxr-xr-x 2 3 Aug 17 11:21 13.0.19.0/
The sort command there is borrowed from this answer. Another answer suggests sort -V (version sort), but my version of sort doesn't have it (yours might, though, so it's worth trying). Version sort is likely to be specific to newer GNU coreutils (my Linux box has it, and sort is from GNU Coreutils 8.5).
With version sort:
$ ls -loghF | sort -k7,7V
drwxr-xr-x 2 3 Jun 18 11:33 12.0.40.0/
drwxr-xr-x 2 3 Jul 28 15:00 13.0.9.1/
drwxr-xr-x 2 3 Jul 13 14:12 13.0.11.4/
drwxr-xr-x 2 3 Jul 26 15:30 13.0.11.5/
drwxr-xr-x 2 4 Jul 27 11:33 13.0.11.6/
drwxr-xr-x 2 3 Aug 3 11:41 13.0.11.7/
drwxr-xr-x 2 3 Aug 10 11:53 13.0.11.8/
drwxr-xr-x 2 3 Aug 17 17:00 13.0.11.9/
drwxr-xr-x 2 3 Aug 24 14:45 13.0.11.10/
drwxr-xr-x 2 3 Aug 3 14:37 13.0.17.0/
drwxr-xr-x 2 3 Aug 13 11:50 13.0.18.0/
drwxr-xr-x 2 3 Aug 17 11:21 13.0.19.0/
This isn't the fastest way to do it, but it is fairly simple to explain:
ls -loghF |
awk '{ print $7 " " $0 }' |
sort -t. -k 1,1n -k 2,2n -k3,3n -k 4,4n |
sed 's/^[^ ]* //'
The 'awk' command copies the directory field to the front of the line; the sort command only uses a single delimiter (.; I don't think you can use different delimiters for different parts of a line) and then sorts the 4 numeric parts explicitly in numeric order. Then the sed removes the field that was added at the front.
This is a simple version of 'make it easy for sort to find the keys', because splitting the input is one of the expensive operations in sort.
FYI: Here's what I ended up doing.
Special thanks to: http://www.sysarch.com/Perl/sort_paper.html
$ ls -loghF | perl -e '
use strict;
my #in = <>;
my #out = grep(m|\d+\.\d+\.\d+\.\d+/$|, #in);
print sort {
my #aa = $a =~
m|(\d+)\.(\d+)\.(\d+)\.(\d+)/$|;
my #bb = $b =~
m|(\d+)\.(\d+)\.(\d+)\.(\d+)/$|;
$aa[0] <=> $bb[0] or
$aa[1] <=> $bb[1] or
$aa[2] <=> $bb[2] or
$aa[3] <=> $bb[3]
} #out;
'
drwxr-xr-x 2 3 Jun 18 11:33 12.0.40.0/
drwxr-xr-x 2 3 Jul 28 15:00 13.0.9.1/
drwxr-xr-x 2 3 Jul 13 14:12 13.0.11.4/
drwxr-xr-x 2 3 Jul 26 15:30 13.0.11.5/
drwxr-xr-x 2 4 Jul 27 11:33 13.0.11.6/
drwxr-xr-x 2 3 Aug 3 11:41 13.0.11.7/
drwxr-xr-x 2 3 Aug 10 11:53 13.0.11.8/
drwxr-xr-x 2 3 Aug 17 17:00 13.0.11.9/
drwxr-xr-x 2 3 Aug 24 14:45 13.0.11.10/
drwxr-xr-x 2 3 Aug 29 17:31 13.0.11.11/
drwxr-xr-x 2 3 Aug 3 14:37 13.0.17.0/
drwxr-xr-x 2 3 Aug 13 11:50 13.0.18.0/
drwxr-xr-x 2 3 Aug 17 11:21 13.0.19.0/

Resources