20200926のLinuxに関する記事は7件です。

勉強メモ4_visudoコマンドがrootユーザーしかできなかったのを、sudoで一般ユーザーもできるようにする

★1 rootでログイン rinchomeユーザー作成

#グループ作成
[root@localhost ~]#groupadd rinchome
#ユーザー作成(グループをrinchomeにする)
[root@localhost ~]#useradd -g rinchome rinchome
#rinchomeユーザーのパスワードを変更
[root@localhost ~]#passwd rinchome

★2 rinchomeユーザーでログイン sudo visudoコマンド実行

#visudoコマンド実行
[rinchome@localhost ~]$ sudo visudo
あなたはシステム管理者から通常の講習を受けたはずです。
これは通常、以下の3点に要約されます:

    #1) 他人のプライバシーを尊重すること。
    #2) タイプする前に考えること。
    #3) 大いなる力には大いなる責任が伴うこと。

[sudo] rinchome のパスワード:
rinchome は sudoers ファイル内にありません。この事象は記録・報告されます。
[rinchome@localhost ~]$

★3 ★2でできなかったので、rootでログイン visudoを編集

[root@localhost ~]# visudo

以下↓↓を
## Same thing without a password
 %wheel ALL=(ALL)       NOPASSWD: ALL

以下↓↓に変更
 ## Same thing without a password
# %wheel        ALL=(ALL)       NOPASSWD: ALL
 %rinchome      ALL=(ALL)       NOPASSWD: ALL

★4 rinchomeでログイン もう一回、sudo visudoコマンドを実行、編集画面にいった

[rinchome@localhost ~]$ sudo visudo

## Sudoers allows particular users to run various commands as
## the root user, without needing the root password.
##
## Examples are provided at the bottom of the file for collections
## of related commands, which can then be delegated out to particular
## users or groups.

★5 まとめ

適当ななんちゃってSEなので、あってるかは不明
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

サクッと公開鍵認証で SSH ログインする

はじめに

SSH ログイン、まだパスワード入力してるの?
公開鍵認証方式にすれば省略できるよ!

環境は、

クライアント側:Linux(WSL/2 環境も含む)
サーバ側:Linux

を想定しています。

以下、サクッとクライアント側の作業。

サクッと鍵の生成

色々聞かれるけれど全てエンター連打でOK。

$ ssh-keygen -t ed25519

サクッと鍵をサーバに登録

上記で生成した公開鍵を、ログインしたいサーバに登録する。

$ cat ~/.ssh/id_ed25519.pub | ssh <ユーザ名>@<ホスト> 'cat >> ~/.ssh/authorized_keys'

以上!動作確認!

$ ssh <ユーザ名>@<ホスト>

パスワード無しでログインできる!ヤッター!

詳細・メモ書き

ログインできない場合

ゆってなかったけど、サーバ側の準備ができていないとサクッといけないんすわ。
サクッといかない場合は、接続先のサーバ側で以下を確認。

~/.ssh/authorized_keys ファイルが正しく存在すること

.ssh ディレクトリと authorized_keys ファイルのパーミッションが正しいことを確認する。

$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ touch ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys

公開鍵認証が有効になっていること

sshd の設定ファイルを開く。

$ sudo vim /etc/ssh/sshd_config

PubkeyAuthentication がコメントアウトか、または no だと公開鍵認証方式が無効になっているので、以下のように yes で設定する。

PubkeyAuthentication yes

sshd サービスを再起動して反映

$ sudo systemctl restart sshd

鍵の署名アルゴリズムの種類と選択

RSA

セキュリティ面でも速度面でも積極的に選択する理由が無い。
セキュリティ面は 4096bit ならまだ大丈夫らしい。
無指定では 2048bit で生成される。

$ ssh-keygen -t rsa 4096

ECDSA

RSA より安全で高速な署名アルゴリズムを使用している。
鍵長は 256, 368, 521bit。512じゃなくて521で正しい。
521bit でも RSA より高速で、今は無難な選択。

$ ssh-keygen -t ecdsa -b 521

Ed25519

新しいものなので対応していない SSH サーバに出会うかも。
ECDSA より安全で高速な署名アルゴリズムを使用している。
鍵長は 256bit 固定。

$ ssh-keygen -t ed25519
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[Linux便利コマンド] vividを入れてみる

環境

概要

前回、batを入れたタイミングで作者のgithubを眺めていたら偶然見つけたvividというものを入れてみます。

これはlsfdなどを実行した際の色を設定しているLS_COLORSという定数を用意されているカラースキーマから生成してくれるというもののようです。

vividインストール

$ cargo install vivid

インストールはこれだけ

vividの設定

themesディレクトリを見てみると下記がありました。

ayu.yml
jellybeans.yml
molokai.yml
snazzy.yml
solarized-dark.yml
solarized-light.yml

これをbashrcなどで、LS_COLORSに動的に設定するようにします。

$ vivid generate ayu
fi=0:*~=0;38;2;170;170;170:no=0:pi=0;38;2;0;0;0;48;2;27;125;196:tw=0:bd=0;38;2;0;0;0;48;2;237;102;106:ln=0;38;2;240;113;113:mi=0;38;2;0;0;0;48;2;237;102;106:ow=0:cd=0;38;2;0;0;0;48;2;134;179;0:or=0;38;2;0;0;0;48;2;237;102;106:di=0;38;2;27;125;196:so=0;38;2;0;0;0;48;2;240;113;113:ex=1;38;2;237;102;106:st=0:*.d=0;38;2;49;136;102:*.p=0;38;2;49;136;102:*.o=0;38;2;170;170;170:*.a=1;38;2;237;102;106:*.z=4;38;2;134;179;0:*.m=0;38;2;49;136;102:*.c=0;38;2;49;136;102:*.r=0;38;2;49;136;102:*.t=0;38;2;49;136;102:*.h=0;38;2;49;136;102:*.ll=0;38;2;49;136;102:*.js=0;38;2;49;136;102:*.mn=0;38;2;49;136;102:*.so=1;38;2;237;102;106:*.pl=0;38;2;49;136;102:*.ml=0;38;2;49;136;102:*.cs=0;38;2;49;136;102:*.cp=0;38;2;49;136;102:*.xz=4;38;2;134;179;0:*.jl=0;38;2;49;136;102:*.gz=4;38;2;134;179;0:*.gv=0;38;2;49;136;102:*.go=0;38;2;49;136;102:*.hi=0;38;2;170;170;170:*.hh=0;38;2;49;136;102:*.la=0;38;2;170;170;170:*.ex=0;38;2;49;136;102:*.td=0;38;2;49;136;102:*.ts=0;38;2;49;136;102:*.sh=0;38;2;49;136;102:*.cr=0;38;2;49;136;102:*.py=0;38;2;49;136;102:*.lo=0;38;2;170;170;170:*.rm=0;38;2;240;113;113:*.as=0;38;2;49;136;102:*.nb=0;38;2;49;136;102:*.ko=1;38;2;237;102;106:*.md=0;38;2;237;147;102:*.vb=0;38;2;49;136;102:*.pm=0;38;2;49;136;102:*.bz=4;38;2;134;179;0:*.bc=0;38;2;170;170;170:*.ui=0;38;2;237;147;102:*.7z=4;38;2;134;179;0:*.pp=0;38;2;49;136;102:*.el=0;38;2;49;136;102:*.hs=0;38;2;49;136;102:*css=0;38;2;49;136;102:*.di=0;38;2;49;136;102:*.cc=0;38;2;49;136;102:*.ps=0;38;2;237;102;106:*.rb=0;38;2;49;136;102:*.fs=0;38;2;49;136;102:*.kt=0;38;2;49;136;102:*.rs=0;38;2;49;136;102:*.tgz=4;38;2;134;179;0:*.vcd=4;38;2;134;179;0:*.sql=0;38;2;49;136;102:*.sty=0;38;2;170;170;170:*.rar=4;38;2;134;179;0:*.mpg=0;38;2;240;113;113:*.blg=0;38;2;170;170;170:*.wmv=0;38;2;240;113;113:*.pid=0;38;2;170;170;170:*.cfg=0;38;2;237;147;102:*.gvy=0;38;2;49;136;102:*.tmp=0;38;2;170;170;170:*.ini=0;38;2;237;147;102:*.exe=1;38;2;237;102;106:*.ico=0;38;2;240;113;113:*.wav=0;38;2;240;113;113:*.xls=0;38;2;237;102;106:*.idx=0;38;2;170;170;170:*.ind=0;38;2;170;170;170:*.ppm=0;38;2;240;113;113:*.mkv=0;38;2;240;113;113:*.img=4;38;2;134;179;0:*.dpr=0;38;2;49;136;102:*.bz2=4;38;2;134;179;0:*.jar=4;38;2;134;179;0:*.inc=0;38;2;49;136;102:*.tif=0;38;2;240;113;113:*.csx=0;38;2;49;136;102:*.bib=0;38;2;237;147;102:*.mid=0;38;2;240;113;113:*.exs=0;38;2;49;136;102:*.pas=0;38;2;49;136;102:*.dll=1;38;2;237;102;106:*.kts=0;38;2;49;136;102:*.com=1;38;2;237;102;106:*.bak=0;38;2;170;170;170:*.fsi=0;38;2;49;136;102:*.htc=0;38;2;49;136;102:*.flv=0;38;2;240;113;113:*.mli=0;38;2;49;136;102:*.aux=0;38;2;170;170;170:*.tml=0;38;2;237;147;102:*.ics=0;38;2;237;102;106:*.asa=0;38;2;49;136;102:*.h++=0;38;2;49;136;102:*.ogg=0;38;2;240;113;113:*.gif=0;38;2;240;113;113:*.pod=0;38;2;49;136;102:*.tbz=4;38;2;134;179;0:*.lua=0;38;2;49;136;102:*.bcf=0;38;2;170;170;170:*.php=0;38;2;49;136;102:*.ttf=0;38;2;240;113;113:*.pkg=4;38;2;134;179;0:*.xcf=0;38;2;240;113;113:*.arj=4;38;2;134;179;0:*.sxi=0;38;2;237;102;106:*.sbt=0;38;2;49;136;102:*.xlr=0;38;2;237;102;106:*.ods=0;38;2;237;102;106:*.png=0;38;2;240;113;113:*.clj=0;38;2;49;136;102:*.fsx=0;38;2;49;136;102:*.bag=4;38;2;134;179;0:*.fnt=0;38;2;240;113;113:*.sxw=0;38;2;237;102;106:*.ps1=0;38;2;49;136;102:*.vob=0;38;2;240;113;113:*.mov=0;38;2;240;113;113:*.apk=4;38;2;134;179;0:*.odt=0;38;2;237;102;106:*.hxx=0;38;2;49;136;102:*.def=0;38;2;49;136;102:*.awk=0;38;2;49;136;102:*.pyc=0;38;2;170;170;170:*.xml=0;38;2;237;147;102:*.yml=0;38;2;237;147;102:*TODO=1:*.eps=0;38;2;240;113;113:*.txt=0;38;2;237;147;102:*.tsx=0;38;2;49;136;102:*.htm=0;38;2;237;147;102:*.dmg=4;38;2;134;179;0:*.pro=0;38;2;154;232;69:*.pbm=0;38;2;240;113;113:*.psd=0;38;2;240;113;113:*.bat=1;38;2;237;102;106:*.m4a=0;38;2;240;113;113:*.erl=0;38;2;49;136;102:*.odp=0;38;2;237;102;106:*.zip=4;38;2;134;179;0:*.bbl=0;38;2;170;170;170:*.cxx=0;38;2;49;136;102:*.xmp=0;38;2;237;147;102:*.rtf=0;38;2;237;102;106:*.deb=4;38;2;134;179;0:*.mp3=0;38;2;240;113;113:*.zsh=0;38;2;49;136;102:*.dox=0;38;2;154;232;69:*.out=0;38;2;170;170;170:*.hpp=0;38;2;49;136;102:*.ilg=0;38;2;170;170;170:*.bmp=0;38;2;240;113;113:*.pps=0;38;2;237;102;106:*.rpm=4;38;2;134;179;0:*.nix=0;38;2;237;147;102:*.ltx=0;38;2;49;136;102:*.fon=0;38;2;240;113;113:*.cpp=0;38;2;49;136;102:*.otf=0;38;2;240;113;113:*.inl=0;38;2;49;136;102:*.pgm=0;38;2;240;113;113:*.tcl=0;38;2;49;136;102:*.epp=0;38;2;49;136;102:*.doc=0;38;2;237;102;106:*.cgi=0;38;2;49;136;102:*.rst=0;38;2;237;147;102:*.mp4=0;38;2;240;113;113:*.aif=0;38;2;240;113;113:*.log=0;38;2;170;170;170:*.elm=0;38;2;49;136;102:*.vim=0;38;2;49;136;102:*.fls=0;38;2;170;170;170:*.avi=0;38;2;240;113;113:*.ipp=0;38;2;49;136;102:*.bst=0;38;2;237;147;102:*.pdf=0;38;2;237;102;106:*hgrc=0;38;2;154;232;69:*.tar=4;38;2;134;179;0:*.swp=0;38;2;170;170;170:*.svg=0;38;2;240;113;113:*.m4v=0;38;2;240;113;113:*.tex=0;38;2;49;136;102:*.jpg=0;38;2;240;113;113:*.mir=0;38;2;49;136;102:*.wma=0;38;2;240;113;113:*.bsh=0;38;2;49;136;102:*.csv=0;38;2;237;147;102:*.dot=0;38;2;49;136;102:*.kex=0;38;2;237;102;106:*.bin=4;38;2;134;179;0:*.c++=0;38;2;49;136;102:*.git=0;38;2;170;170;170:*.toc=0;38;2;170;170;170:*.ppt=0;38;2;237;102;106:*.iso=4;38;2;134;179;0:*.swf=0;38;2;240;113;113:*.bash=0;38;2;49;136;102:*.diff=0;38;2;49;136;102:*.html=0;38;2;237;147;102:*.fish=0;38;2;49;136;102:*.pptx=0;38;2;237;102;106:*.dart=0;38;2;49;136;102:*.json=0;38;2;237;147;102:*.lock=0;38;2;170;170;170:*.hgrc=0;38;2;154;232;69:*.psd1=0;38;2;49;136;102:*.epub=0;38;2;237;102;106:*.xlsx=0;38;2;237;102;106:*.orig=0;38;2;170;170;170:*.tbz2=4;38;2;134;179;0:*.java=0;38;2;49;136;102:*.flac=0;38;2;240;113;113:*.lisp=0;38;2;49;136;102:*.mpeg=0;38;2;240;113;113:*.docx=0;38;2;237;102;106:*.make=0;38;2;154;232;69:*.h264=0;38;2;240;113;113:*.psm1=0;38;2;49;136;102:*.tiff=0;38;2;240;113;113:*.jpeg=0;38;2;240;113;113:*.yaml=0;38;2;237;147;102:*.rlib=0;38;2;170;170;170:*.conf=0;38;2;237;147;102:*.toml=0;38;2;237;147;102:*.less=0;38;2;49;136;102:*.purs=0;38;2;49;136;102:*.shtml=0;38;2;237;147;102:*.cabal=0;38;2;49;136;102:*.class=0;38;2;170;170;170:*README=0;38;2;0;0;0;48;2;237;147;102:*.patch=0;38;2;49;136;102:*.scala=0;38;2;49;136;102:*.cmake=0;38;2;154;232;69:*.toast=4;38;2;134;179;0:*.mdown=0;38;2;237;147;102:*.dyn_o=0;38;2;170;170;170:*.cache=0;38;2;170;170;170:*shadow=0;38;2;237;147;102:*.xhtml=0;38;2;237;147;102:*passwd=0;38;2;237;147;102:*.swift=0;38;2;49;136;102:*.ipynb=0;38;2;49;136;102:*.matlab=0;38;2;49;136;102:*TODO.md=1:*INSTALL=0;38;2;0;0;0;48;2;237;147;102:*LICENSE=0;38;2;102;102;102:*.gradle=0;38;2;49;136;102:*.dyn_hi=0;38;2;170;170;170:*.ignore=0;38;2;154;232;69:*.config=0;38;2;237;147;102:*.flake8=0;38;2;154;232;69:*COPYING=0;38;2;102;102;102:*.groovy=0;38;2;49;136;102:*setup.py=0;38;2;154;232;69:*Doxyfile=0;38;2;154;232;69:*TODO.txt=1:*Makefile=0;38;2;154;232;69:*.gemspec=0;38;2;154;232;69:*.desktop=0;38;2;237;147;102:*.DS_Store=0;38;2;170;170;170:*README.md=0;38;2;0;0;0;48;2;237;147;102:*.fdignore=0;38;2;154;232;69:*.kdevelop=0;38;2;154;232;69:*.rgignore=0;38;2;154;232;69:*COPYRIGHT=0;38;2;102;102;102:*configure=0;38;2;154;232;69:*.cmake.in=0;38;2;154;232;69:*.markdown=0;38;2;237;147;102:*INSTALL.md=0;38;2;0;0;0;48;2;237;147;102:*CODEOWNERS=0;38;2;154;232;69:*.localized=0;38;2;170;170;170:*.gitconfig=0;38;2;154;232;69:*SConscript=0;38;2;154;232;69:*.scons_opt=0;38;2;170;170;170:*SConstruct=0;38;2;154;232;69:*.gitignore=0;38;2;154;232;69:*Dockerfile=0;38;2;237;147;102:*README.txt=0;38;2;0;0;0;48;2;237;147;102:*LICENSE-MIT=0;38;2;102;102;102:*MANIFEST.in=0;38;2;154;232;69:*Makefile.am=0;38;2;154;232;69:*Makefile.in=0;38;2;170;170;170:*INSTALL.txt=0;38;2;0;0;0;48;2;237;147;102:*.gitmodules=0;38;2;154;232;69:*.travis.yml=0;38;2;49;136;102:*.synctex.gz=0;38;2;170;170;170:*CONTRIBUTORS=0;38;2;0;0;0;48;2;237;147;102:*appveyor.yml=0;38;2;49;136;102:*configure.ac=0;38;2;154;232;69:*.fdb_latexmk=0;38;2;170;170;170:*.applescript=0;38;2;49;136;102:*.clang-format=0;38;2;154;232;69:*.gitattributes=0;38;2;154;232;69:*CMakeLists.txt=0;38;2;154;232;69:*LICENSE-APACHE=0;38;2;102;102;102:*CMakeCache.txt=0;38;2;170;170;170:*CONTRIBUTORS.md=0;38;2;0;0;0;48;2;237;147;102:*CONTRIBUTORS.txt=0;38;2;0;0;0;48;2;237;147;102:*.sconsign.dblite=0;38;2;170;170;170:*requirements.txt=0;38;2;154;232;69:*package-lock.json=0;38;2;170;170;170:*.CFUserTextEncoding=0;38;2;170;170;170

vivid generateにて生成してくれるものをexportで設定する

~/.bashrc
if [[ $(command -v vivid) ]]; then
  export LS_COLORS="$(vivid generate ayu)"
fi

vividがインストールされていればLS_COLORSに動的にayuを適用させます

image.png

こんな感じで色が付きました :smile:

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[Linux便利コマンド] batを入れてみる

環境

概要

https://qiita.com/navitime_tech/items/c249269a3b47666c784b

を見て便利なものをどんどん入れてみようということで、前回に続いてbat。

batインストール

https://github.com/sharkdp/bat

githubのページを見る限りyum(centos)でのインストール方法が無いみたい。

なのでreleasesにあるこちらのリンクを使って入れることにします。

https://github.com/sharkdp/bat/releases/download/v0.15.4/bat-v0.15.4-x86_64-unknown-linux-gnu.tar.gz

# インストール
$ wget https://github.com/sharkdp/bat/releases/download/v0.15.4/bat-v0.15.4-x86_64-unknown-linux-gnu.tar.gz
$ tar -zxvf bat-v0.15.4-x86_64-unknown-linux-gnu.tar.gz
$ cd bat-v0.15.4-x86_64-unknown-linux-gnu
$ sudo mv ./bat /usr/local/bin/

batの確認

image.png

        --style <components>
            Configure which elements (line numbers, file headers, grid borders, Git modifications,
            ..) to display in addition to the file contents. The argument is a comma-separated list
            of components to display (e.g. 'numbers,changes,grid') or a pre-defined style ('full').
            To set a default style, add the '--style=".."' option to the configuration file or
            export the BAT_STYLE environment variable (e.g.: export BAT_STYLE=".."). Possible
            values: *auto*, full, plain, changes, header, grid, numbers, snip.

見た目をいろいろ変えれるみたい。
デフォルトではfullなのかな・・?たぶん。

叩くときにファイル名は分かっているので、個人的には無くて良いかなと。
あとgitの差分はgitコマンドで見るしbatにはなくてよいので(無駄に遅くなってもですし)

image.png

これで縦幅もすこし縮めることができた。

エイリアス

alias bat='bat --style="numbers,grid"'

image.png

これでスタイルは指定なしでよくなった!めでたしめでたし。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Linuxファイルサーバー構築(Ubuntu & Samba)

Windowsにvirtualboxを使ってLinux(Ubuntu20.04.1)を入れたので、
試しにファイルサーバー構築をやってみました。のメモです。

共有するディレクトリの作成

$sudo mkdir /home/share
$sudo chmod 0777 /home/share

homeの下にshareディレクトリを作り、そのディレクトリのアクセス権限を許可しました。
このディレクトリの中身を共有します。(名前は任意、shareの部分は好きに決めてください)

mkdir→ディレクトリ作成
chmod→アクセス権限の変更

Sambaのインストール

$ sudo apt-get -y install samba

ファイルサーバーの設定

$ sudo vim /etc/samba/smb.conf

上記のコマンドで開き、smb.confを編集していきます。
22行目くらいに以下のような記述があると思います。

smb.conf
#======================= Global Settings =======================

[global]

## Browsing/Identification ###

以下の記述を追加します。

unix charset = UTF-8
dos charset = CP932

こんな感じにします。

smb.conf
#======================= Global Settings =======================

[global]
unix charset = UTF-8
dos charset = CP932

## Browsing/Identification ###

必要であれば以下を編集します。僕のでは編集の必要ありませんでした。

smb.conf
#Change this to the workgroup/NT-domain name your Samba server will part of
  workgroup = WORKGROUP

Winodwsのワークグループの値をWORKGROUPのところに記述します
 workgroup = <ここ>
確認は以下でできます
コントロールパネル->システムとセキュリティ->システム
->コンピュータ名、ドメインおよびワークグループの設定

38行目付近に以下の記述があります。

smb.conf
#### Networking ###

このの項目は接続元IPアドレスの制限などに使用するみたいです。
今回は編集しませんでした。

ファイルの最後に以下を追加します。

smb.conf
[Share]
   path = /home/share
   writable = yes
   guest ok = yes
   guest only = yes
   create mode = 0777
   directory mode = 0777

[Share] には、共有する際のフォルダ名を任意の名でつけます。
path には最初に作った共有したいディレクトリのパスを入れます。

ファイルサーバーを再起動します

$ sudo systemctl restart smbd
$ sudo systemctl enable smbd

サーバー名の確認

linuxでサーバー名の確認をします。

$ hostname
サーバー名

Windowsでファイルにアクセス

Windowsでエクスプローラーを開き、ネットワークドライブの割り当てから
ネットワークドライブの割り当てをクリックします。

フォルダーの欄に「¥¥サーバー名¥共有フォルダ名」と指定します。

サーバー名は先程、Linuxで確認したものです。
フォルダ名は、先程指定した[Share]の部分です。(この場合、share)

ユーザー認証の画面が出てきて入力します。
これでファイルにアクセスできるはずです。

おまけ

グループでユーザーのアクセス制限をする方法です。

グループの作成

$ sudo groupadd share

shareグループが作成されました。

ファイルサーバーの設定

smb.confの最後に追加したものを編集します。

smb.conf
[Share]
   path = /home/share
   writable = yes
   guest ok = no
   create mode = 0777
   directory mode = 0777
   valid users = @share

valid users で認証できるグループ名を指定します。
今回はshareのグループに所属しているユーザーがアクセスできます。

ユーザーを追加

新しくユーザを作りたい場合のみです。
元から作ってあるユーザでも大丈夫です。

$sudo useradd -m ユーザ名
$sudo passwd ユーザ名

この後、パスワードを2回入れたらユーザーが作成されます。
ユーザは同じ名前にしてください。
useradd のオプションの -m をつけることで、ホームディレクトリが作成されます。
(-m は無くてもいいです)

ユーザーをグループに追加

$ sudo usermod -aG share ユーザ名

これでグループにユーザが登録できます。

sambaにユーザ追加

$ sudo pdbedit -a ユーザ名

パスワードを2回入力したら、追加完了です。
(pdbeditではなく、smbpasswdでも同様にアクセスできました。)

これでWindowsからアクセスするときの認証でアクセス制限できるようになりました。

参考記事

https://qiita.com/k-Mata/items/8bee9e02e74565b6c147
https://qiita.com/msrks/items/1385cf13258dd1a0da08
https://www.server-world.info/query?os=Ubuntu_16.04&p=samba
https://linuxfan.info/ip-address
https://www.server-world.info/query?os=Ubuntu_18.04&p=samba&f=2
https://renoji.com/IT.php?Contents=OS_CentOS/Server_File/Samba_UserRegistration.html
https://qiita.com/orangain/items/056db6ffc16d765a8187
https://eng-entrance.com/linux-user-add

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Ubuntu で Mac / emacs キーバインディング(キーボードショートカット)を使いたい xkeysnail のススメ

キーボード・ショートカットを変換できる xkeysnail は素晴らしいので使おうという話.

Mac では Ctrl+a で行頭に移動、Ctrl+k で行末までカットといったことが emacs・ターミナルだけではなくあらゆる所で出来る.これを Ubuntu でも実現したい.Gnome で emacs キーバインディングを実現する gnome-tweak-tool key-theme=Emacs では全然満足できなかった; ブラウザ内で Windows ライクなショートカットで上書きされてしまい、特に Jupyter Notebook で Ctrl-a が「全体を選択」になってしまうのがきつい.xkeysnail では Ctrl+a を Home キーだと思わせることで行頭への移動を実現している、このためブラウザの中でも(ウェブアプリが普通の windows式に対応している限り)使える.Ubuntu 要素は特になく Linux 全般で使える.

1. インストール

$ sudo apt install python3-pip
$ sudo pip3 install xkeysnail

pip は Python のライブラリパッケージ管理ソフト.

2. config.py を作る

とりあえずはどこでも良いので config.py を作る.公式 config.py はこちら

3. 実行

その config.py のあるディレクトリで:

$ xhost +SI:localuser:root
$ sudo xkeysnail config.py

Troubleshooting

1. command not found: xkeysnail

sudo pip3 install ... ではなく pip3 install ... とやると ~/.local/bin/xkeysnail にインストールされ、PATH がたぶん通ってない.

$ pip3 show xkeysnail
(中略)
Location: /usr/local/lib/python3.6/dist-packages

を見るとインストール先がわかる. conda やら pyenv などで多くの環境をつかっているならどの環境にインストールされたか注意.sudo を使った場合と使わなかった場合で環境が異なるかもしれない.sudo pip をつけわすれたのをやり直すのは

$ pip3 uninstall xkeysnail
$ sudo pip3 install xkeysnail

あるいはお好みで PATH を通す、絶対PATHで実行するなど.

2. ImportError: sys.meta_path is None, Python is likely shutting down

もっと上を見てみるともっと具体的なエラーがみつかる.例えば

FileNotFoundError: [Errno 2] No such file or directory: 'config.pu'

は config.py のファイル名を間違えた.config.py の中でキーの名前を間違えているかもしれない.

3. Xlib.error.DisplayConnectionError: Can't connect to display ":0":

xhost + をやっていないと出る。

私の config.py

  • キーボードは Apple Magic Keyboard. Emacs 以外では ⌘C で copy, ⌘S で save など command ⌘ を Windows の ctrl のように使いたい.
  • しかし、⌘ space は 英語日本語の言語切り替えに使い、emacs の mark set ctrl-space とは別に使いたい。つまり command=ctrl にしてしまうのはやりすぎ.
  • Ubuntu には左⌘ (左 windows key) がすべてのウインドウを小さめに表示する機能に割りて当てられている. なので、左⌘で右⌘を使ってることにして無効化する。
  • Caps lock は使わないので他のキーに割り当てて有効に使う。
  • Ctrl+a, Ctrl-e, Ctrl-k などの emacs keybindings は公式 config.py のものを使う。これが一番大事。
# -*- coding: utf-8 -*-
import string
from xkeysnail.transform import *

# define timeout for multipurpose_modmap
define_timeout(1)

# [Global modemap] Change modifier keys as in xmodmap
define_modmap({
    Key.CAPSLOCK: Key.ESC,  # caps lock を Esc として使う。Ctrl派が多いかも
    Key.LEFT_META: Key.RIGHT_META, # overview 無効化: 左⌘ → 右⌘ 
})

# Always paste with ⌘-v including terminals
# None は無条件=すべてのアプリケーションを意味する
define_keymap(None, {
    K("Super-v"): [K("C-v"), set_mark(False)],
}, "Paste")


# Mac-like keybindings outside emacs and terminals
# 最低限の emacs keybinding.
# 公式 config.py はもっと emacs 化している. C-x C-s → 保存なんかもできる。
mapping = {
    # Beginning/End of line
    K("C-a"): with_mark(K("home")),
    K("C-e"): with_mark(K("end")),

    # Delete
    K("C-d"): [K("delete"), set_mark(False)],
    K("C-h"): with_mark(K("backspace")),

    # Kill line
    K("C-k"): [K("Shift-end"), K("C-x"), set_mark(False)],
}

# すべてのアルファベット α について ⌘α を Ctrl+α を押していることにする
for c in string.ascii_lowercase:
    mapping[K('Super-' + c)] = K('C-' + c)

# Emacsとターミナル以外でショートカットを変更する.Hyper は私の使っているターミナルアプリケーション名.
define_keymap(lambda wm_class: wm_class not in ("Emacs", "Hyper", "Gnome-terminal"),
              mapping, "Mac-like")

wm_class がアプリケーション名で xkeysnail を実行中のターミナルの標準出力をみればわかる。xkeysnail -q オプションをつけるとこの WM_CLASS やキーの表示は抑制される.

最低限の Python

Python に馴染みのない人向け.

コメント

# から行末までコメント.

文字列
  • "文字列", '文字列' どちらでもOK
辞書 dict

Key - Value ペアを保存するデータ構造; 定義したいショートカット: 実行されるショートカット を与えるのに使われている.

d = {key1: value1.
     key2: value2,
     key3: value3}

最後にカンマ (trailing comma) をつけても大丈夫、なくても良い {key3: value3,}.
```

作成後も追加できる:

d[key4] = value4

Tuple, list, set

wm_class not in ("Hyper", "Gnome-terminal", "Emacs")

文字列 wm_class が3つのうちどれでもない場合に True になる.否定演算子 not による

not (wm_class in ("Hyper", "Gnome-terminal", "Emacs"))

と同じ.どれかなら True にしたいなら

wm_class in ("Hyper", "Gnome-terminal", "Emacs")

("a", "b", "c") は変更できない配列 tuple. 細かいことを気にしなければ、変更できる配列 list ["a", "b", "c"] も 集合 set {"a", "b", "c"} も同じ.

ひとつなら、

wm_class == "Hyper"  # 等しい場合に True
wm_class != "Hyper"  # 等しくない場合に True

でもいい.要素ひとつの tuple を使う場合は最後のカンマを忘れずに:

wm_class in ("Hyper",)

カンマ無しだと

wm_class in "Hyper"

と同じになって意味が変わり、「wm_class は "Hyper" の部分文字列ですか?」という意味になる.

"ype" in "Hyper"  # => True
"ype" in ("Hyper")  # => True, ("Hyper") = "Hyper"
"ype" in ("Hyper", )  # => False, "ype" は "Hyper" 
                      # という要素ひとつからなる集合の要素ではない.
無名関数 lambda
f = lambda x: x**2

def f(x):
    return x**2

と同じ.アプリケーション名 wm_class に対してキーボード・ショートカットを変更するか否かを返す関数を定義するのに使われている.

define_keymap 関数

アプリケーション名 wm_class によってショートカットを変換するかどうかを変えられる.

def define_keymap(condition, mappings: dict, name: str):

条件 condition を満たした場合に 辞書 mappings で定義されたショートカット変換を行う.name は任意の設定の名前.

condition は3種類の指定の仕方がある:

condition:
  None: 無条件で適用
  関数: アプリケーション名 wm_class をとって True/False を返す関数
  正規表現: wm_class がマッチすべき正規表現(詳細略)

Key

Key.CAPSLOCK とか Key.ESC とかの一覧は key.py に書いてある.

f Key
ESC
TAB
CAPSLOCK
LEFT_CTRL, RIGHT_CTRL
LEFT_SHIFT, RIGHT_SHIFT
Key Apple Magic keyboard Windows keyboard
LEFT_META, RIGHT_META command ⌘ Win key
LEFT_ALT, RIGHT_ALT option ⌥ Alt

K 関数

K("C-b") で Ctrl+b を表す.C は Ctrl でもよく、LR をつけることで左か右に限定することもできる. キーを押してみて xkeysnail の標準出力をみればどう書くべきかわかる. Modifier key にはさらに左右どちらでもいい場合の総称や別名(Win は Super でもいいなど)がある.

Modifier key str for K
Ctrl ^ C, Ctrl, LC, RC, LCtrl, RCtrl
Shift Shift, LShift, RShift
Win/command ⌘ Win, Super, LWin, RWin, LSuper, RSuper
Alt/option ⌥ Alt, M, LAlt, RAlt, RM, LM

参考: create_modifiers_from_strings(modifier_strs) in transform.py.

自動起動

設定が完了しうまく動いているようならコンピュータ起動時に自動的に実行したい。とりあえず丸投げ:

https://hidakatsuya.hateblo.jp/entry/2019/11/20/215608

Reference

作者の記事: https://qiita.com/mooz@github/items/c5f25f27847333dd0b37
GitHub: https://github.com/mooz/xkeysnail

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[Linux便利コマンド] exaを入れてみる

環境

概要

https://qiita.com/navitime_tech/items/c249269a3b47666c784b

を見て便利なものをどんどん入れてみようということで、まずはexaから。

exaインストール

https://github.com/ogham/exa

cargo install exa

と書いてあった。cargo ?? ナニソレ??

ぐぐってみると

Cargoは、Rustのビルドシステム兼、パッケージマネージャです

なるほど。。

いれるのめんどくさかったら辞めよう・・・と思ってみてみたら簡単。

cargoインストール

$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y

.
.
.

  stable installed - rustc 1.46.0 (04488afe3 2020-08-24)


Rust is installed now. Great!

To get started you need Cargo's bin directory ($HOME/.cargo/bin) in your PATH
environment variable. Next time you log in this will be done
automatically.

To configure your current shell run source $HOME/.cargo/env

.bash_profileに自動でパス通す記述が追加されたっぽい(違うかったら自分で書いてください)

exaインストール

cargo install exa

エイリアス

いままでの手癖でのllなどの入力慣れと、あくまで上位互換のような使い方とするため下記のようにしてみました

if [[ $(command -v exa) ]]; then
  alias ll='exa --icons -la'
  alias l1='exa -1'
  alias lt='exa -Ta --icons -I "node_modules|.git|.cache|vendor|tmp"'
  alias ltl='lt | less -r'
else
  alias ll='ls -la'
  alias l1='ls -1'
  alias lt='tree -I "node_modules|.git|.cache|vendor|tmp"'
  alias ltl='lt | less -r'
fi

まとめ

ちょっとした差ですが、少しずつ良くなることも積み重ねれば大きくなるかなと思うと、継続して取り組んでいきたいと思います。

image.png

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む