Category Archives: Linux - Page 2

WordPress-rättigheter

Bök, bök, bök. www-data, grupper, wp-content/uploads, FTP-access, osv…

Den här gången skulle jag en gång för alla se till att min WP-installation hade de rättigheter jag ville. Varför? För att jag vill låta min WP-installation uppdatera saker och ting på egen hand utan att fråga efter fruktansvärt frutstrerande FTP-uppgifter (1980, anyone?), plus ge de användare jag vill, rättigheter till olika delar av webinstallationen i övrigt. Det tog tid. Och jag fick det inte som jag ville slutändan ändå. Jag sitter inne med följande konfiguration:

  • Debian
  • Apache 2
  • PHP 5
  • WordPress 3.x

För att göra en historia kort och koncis:

  • Se till att mapparna wp-admin och wp-content ägs av www-data (dvs samma användare som apache kör) och att denna användare får läsa och skriva dit
sudo chown -R www-data:web wp-admin/ wp-content/
sudo chmod -R 775 wp-admin/ wp-content/

Internet: Hur i helsefyr kan jag få den här WP-installationen att köra som root:webdev och fortfarande låta uppgraderingar av WP vara FTP-lös. Jag vill inte köra med FTP bara för att rättigheterna inte är WP-kompatibla, men jag ser inte att jag ska behöva installera ACL och suPHP och suExec, osv… I mitt sinne borde det här fungera med “chown root:web…” eller “chown mickemus:web…” så länge www-data ingår i gruppen web och gruppen web får släsa/skriva till mapparna wp-admin och wp-content. Kommentera gärna!

MySQL-specifikt

Okej, nu har jag gjort det här tillräckligt sällan och behövt det tillräckligt många gånger (som så mycket annat som kommer läggas till senare)

# Lägg till en användare

CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass';

# Lägg till rättigheter åt en användare

GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost' WITH GRANT OPTION;

# Ta bort rättigheter från en användare

REVOKE ALL PRIVILEGES, GRANT OPTION FROM user [, user] ...

# Ta bort en användare

DROP USER user;

# Ändra namn på en användare

RENAME USER old_user TO new_user

# Ändra lösenord på en användare

SET PASSWORD FOR 'bob'@'*' = PASSWORD('newpass');

# Återställ root-lösen (the *nix-way)

  1. Logga in på boxen där ‘mysqld’ kör
  2. Hitta .pid-filen som innehåller serverns ‘process ID’. Den exakta platsen och namnet kan variera. Vanliga platser är:
    /var/lib/mysql
    /var/run/mysqld/
    /usr/local/mysql/data/
    Generellt har filen en ändelse .pid och börjar med ‘mysqld’ eller boxens namn.
    Du kan stoppa mysqld med ett normalt kill-kommando (inte kill -9), genom att använda hela sökvägen till .pid-filen, enligt:
    $ kill `cat /mysql-data-katalog/boxnamn.pid`
    Notera “backostroferna”.
  3. Skapa en textfil som innehåller följande (byt ut löesnord med ett egenvalt lösenord):
    UPDATE mysql.user SET Password=PASSWORD(lösenord’) WHERE User=’root’;
    FLUSH PRIVILEGES;
  4. Spara filen. Kalla den ‘mysql-init’ och lägg den i din egen hem-mapp, där ingen annan kan komma åt den. Se till att mysql har möjlighet att läsa filen.
  5. Starta MySQL-servern med växeln ‘–init-file’:
    $ mysqld_safe –init-file=[sökväg till]/mysql-init &
    MySQL-server kommer att starta upp, läsa in filens innehåll, vilket effektivt ändrar root:s lösenord till det du skrivit in.
  6. När servern har startat, radera filen mysql-init.

# Återställ root-lösen (the Mac-way med mysql-5.7.9-osx10.10)

  1. Stop the MySQL service if it’s running
  2. Start a shell
  3. Type in:
    sudo mysqld-safe –skip-grant-tables
  4. Start another shell
  5. Type in:
    mysql -u root
    update user set authentication_string=password(‘1111′) where user=’root’;
    FLUSH PRIVILEGES;
    exit
  6. Kill mysqld_safe by typing in:
    sudo kill -11 [PID of mysqld_safe]
  7. Restart the MySQL service

Ubuntu och Primär/Sekundär-skärmsuppsättning

Satt på jobbet och försökte reda ut hur man får Ubuntu att förstå att en skärm är primär och en är sekundär. Jag försökte med det standardinära Monitor-verktyget som följer med, men det fanns inget sätt att byta mellan skärmarna för att få till en enkel flytt av alla paneler. Jag hittade däremot ett par xrandr-kommandon som ser till att åstadkomma till 95% det som jag behöver och kan läggas i ett skript.

Använd ‘xrandr’ för att ta reda på vad skärmarnas id:n är, pussla sedan ihop en skript-fil lik denna:

xrandr --output VGA1 --off
xrandr --output HDMI1 --auto --primary
xrandr --output VGA1 --auto --left-of HDMI1

(Förutsättning, bara två skärmar. Har man fler får man utöka och pussla lite till) Detta kommer nu att stänga av din nuvarande “primärskärm” som du vill göra om till sekundär. Därefter kommer den skärm som är igång att sättas till primärskärm och slutligen den som precis stängts av, sätts som sekundärskärm.

Nå, vad är det som inbegrips i de övriga 5%:en? Ja, det är väl ett rätt schysst skript och fungerar så vitt jag kan se så länge man har xrandr och håller koll på id:n. Men jag vet inte om det är så himla elegant och när man sätter det som en del av uppstarten till sin inloggning så blinkar det till lite extra i skärmarna. Jag vet inte heller om det gör att applikationer blir lite förvirrade över växlingen, men det återstår att undersöka.

Få mailto-länkar att öppnas i Google Mail i Chrome i Ubuntu

Lite underligt att detta inte kan skötas genom något smidigare sätt än detta, men det är iallafall tillräckligt smidigt för att praktiskt taget vem som helst ska kunna fixa det själv

aptitude install desktop-webmail
  1. Klicka på Applications->Internet->Desktop Webmail
  2. Sätt Gmail som default
  3. Klicka på System->Preferences->Preferred Applications
  4. Väl Desktop Webmail som standardprogram

LXDE + Ubuntu (=lubuntu) + Macbook

Har suttit och meckat med en Macbook på en Linux-dist som tidigare varit helt okänd för mig. Jag har visserligen inte haft så mycket Macbook-erfarenhet heller, men jag har ju inte sett det som ett jättestort hinder… Ända tills jag såg att det är rätt stor skillnad på standard-PC-tangentbord och Macbookens.
Så jag var tvungen att försöka lära mig att mappa om tangenterna till något vettigt, eftersom tecken som ${[]} inte är tillgängliga förrän det är fixat. En delete-knapp är lämplig att ha med, så det löste jag med. brother hjälpte mig att ta fram hur filerna skulle kunna se ut när man mappar om tangenter och utifrån det lyckades jag till slut.

Ett exempel på ett bash-skript som ändrar tangenternas mappning

#!/bin/sh
#alt
#xmodmap -e "keycode 64 = Alt_L"

#left apple
#xmodmap -e "keycode 115 = Meta_L Meta_L"
#xmodmap -e "add mod4 = Meta_L Meta_L Meta_L Meta_L"

#make right apple key work as altgr
xmodmap -e "keycode 116 = ISO_Level3_Shift NoSymbol"

xmodmap -e "keycode 101 = F1"
xmodmap -e "keycode 212 = F2"
xmodmap -e "keycode 160 = F3"
xmodmap -e "keycode 174 = F4"
xmodmap -e "keycode 176 = F5"
xmodmap -e "keycode 214 = F7"
xmodmap -e "keycode 215 = F8"
xmodmap -e "keycode 216 = F9"
xmodmap -e "keycode 217 = F10"

#Make lower Enter key delete button
xmodmap -e "keycode 108 = Delete Delete Pointer_Button2 Pointer_Button3"

#Make left Apple key the middle click...
#xmodmap -e "keycode 115 = Pointer_Button2"

#...fix this for the mouse.
xkbset m

Jag provade att köra kommandona en och en utan att se någon skillnad. Då kollade jag lite på nätet och fick reda på att man kan ta reda på vilka keycodes en tangent ger genom att använda

xev

Så, efter att ha kört det programmet och tryckt på lite knappar tog jag till slut reda på vilka keycodes som gäller för vilka knappar, anpassade kommandona i bash-skriptet ovan och Vióla! mappningarna funkar!

Få Run Application (Alt+F2) att starta ett specifikt program i Lucid Lynx

Jag brottades ett rätt bra tag med det här problemet, det finns ju så många olika sätt att lösa saker och ting i Linux-världen.

Mitt problem;

  • Jag ville att ett icke installerbart, java-kompilerat program skulle vara tillgängligt via Run Application
  • Jag ville ändra (eller komplettera) listan över de tillgängliga kommandon som startar ett program i Run Application

För att lösa den förstnämnda punkten var jag tvungen att, via terminalen, skapa ett shell-skript som var döpt till det kommando jag ville att Run Application skulle aktiveras av, och som innehöll följande:

#!/bin/bash
cd [sökväg till mappen där java-filen ligger]
java -jar [filnamn]

Därefter behövde jag se till att detta skript var körbart mha:

chmod a+x [skriptfil]

Härefter testkörde jag programmet från terminalen för att se att det fungerade.

För att få Run Application att snappa upp det nya programmet använde jag mig av “Main Menu”-applikationen i “Go-Home”-appletten (appletten, bra ord…) och lade till skripfilen till en av menyerna.

Härefter var det bara att trycka in Alt+F2 och skriva in skriptfilens namn och mysa lite över att det fungerade som jag ville.

Det andra problemet var lite mer lättlöst. Om jag skulle vilja döpa om genvägen “chromium-browser” till bara “chrome” eller “chromium” eller “mium” eller något annat som inte redan är taget, kan jag göra det genom sym-länkning.

De flesta programmen som är körbara utan en skriptfil som nämnt tidigare kan symlänkas med ett annat namn och fungera helt smärtfritt. Programmen lägger sig allt som oftast i “/usr/bin”.

Sättet att utföra detta på är att starta en terminal, byta katalog till “/usr/bin” och skriva in:

sudo ln -s [originalnamn] [ditt nya, fiffigare namn]

(sudo behövs om du inte är root) Nu kommer programmet att kunna startas via Run Application med både det gamla och det nya namnet. Om man inte är nöjd med sitt nya namn är det bara att ta bort sym-länken och göra om. Eller lägga till ett nytt. Ta inte bort originalfilen bara. 😉

Kopiera alla filer och mappa (även dolda)

Hittade en intressant diskussion om dolda filer och mappar som jag ska titta närmre på, men här är iaf tråden med diskussionen.

256 färger i konsollen

Detta är ett bra tips om man vill ha lite vettiga alternativ till 8 färger som Squeeze-terminalen erbjuder som standard. Mycket kort och koncist förklarat här:

256 colors on the Linux terminal

Flytta alla filer och mappar

Ett sätt att flytta samtliga filer och mappar till mappen ovanför den du står i.

find . -maxdepth 1 -exec mv {} .. ;

Alternativt (med kopieringskommando, som inte flyttar filer)

cp -r ./.* ../charlesdickens/

Alternativt (som är både kort och fungerar finfint i Debian)

mv {*,.*} ..

Söka text i mappar och filer med Grep

Här är ett kort tips om hur man kan göra sökningar på sin Linux-box med hjälp av grep

This is for future use,

In case if you dont have permission to get into a directory or a file, then you will get a permission denied error amidst the correct matches. You can use the following command to avoid all those errors

find / -name “*” 2>/dev/null | xargs grep -i “search string” 2>/dev/null

By using this, you will get only what matches and saves time. Hope this helps. -Tiger75