- 投稿日:2020-09-26T21:28:51+09:00
勉強メモ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なので、あってるかは不明
- 投稿日:2020-09-26T20:36:13+09:00
サクッと公開鍵認証で 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 yessshd サービスを再起動して反映
$ sudo systemctl restart sshd鍵の署名アルゴリズムの種類と選択
RSA
セキュリティ面でも速度面でも積極的に選択する理由が無い。
セキュリティ面は 4096bit ならまだ大丈夫らしい。
無指定では 2048bit で生成される。$ ssh-keygen -t rsa 4096ECDSA
RSA より安全で高速な署名アルゴリズムを使用している。
鍵長は 256, 368, 521bit。512じゃなくて521で正しい。
521bit でも RSA より高速で、今は無難な選択。$ ssh-keygen -t ecdsa -b 521Ed25519
新しいものなので対応していない SSH サーバに出会うかも。
ECDSA より安全で高速な署名アルゴリズムを使用している。
鍵長は 256bit 固定。$ ssh-keygen -t ed25519
- 投稿日:2020-09-26T17:54:00+09:00
[Linux便利コマンド] vividを入れてみる
環境
概要
前回、batを入れたタイミングで作者のgithubを眺めていたら偶然見つけた
vivid
というものを入れてみます。これは
ls
やfd
などを実行した際の色を設定している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で設定する~/.bashrcif [[ $(command -v vivid) ]]; then export LS_COLORS="$(vivid generate ayu)" fivividがインストールされていればLS_COLORSに動的に
ayu
を適用させますこんな感じで色が付きました
- 投稿日:2020-09-26T17:15:51+09:00
[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の確認
--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にはなくてよいので(無駄に遅くなってもですし)これで縦幅もすこし縮めることができた。
エイリアス
alias bat='bat --style="numbers,grid"'これでスタイルは指定なしでよくなった!めでたしめでたし。
- 投稿日:2020-09-26T12:54:26+09:00
Linuxファイルサーバー構築(Ubuntu & Samba)
Windowsにvirtualboxを使ってLinux(Ubuntu20.04.1)を入れたので、
試しにファイルサーバー構築をやってみました。のメモです。共有するディレクトリの作成
$sudo mkdir /home/share $sudo chmod 0777 /home/sharehomeの下に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 = WORKGROUPWinodwsのワークグループの値を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 shareshareグループが作成されました。
ファイルサーバーの設定
smb.confの最後に追加したものを編集します。
smb.conf[Share] path = /home/share writable = yes guest ok = no create mode = 0777 directory mode = 0777 valid users = @sharevalid 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
- 投稿日:2020-09-26T04:11:18+09:00
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.pyTroubleshooting
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 setctrl-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] = value4Tuple, 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
- 投稿日:2020-09-26T00:52:27+09:00
[Linux便利コマンド] exaを入れてみる
環境
概要
https://qiita.com/navitime_tech/items/c249269a3b47666c784b
を見て便利なものをどんどん入れてみようということで、まずはexaから。
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まとめ
ちょっとした差ですが、少しずつ良くなることも積み重ねれば大きくなるかなと思うと、継続して取り組んでいきたいと思います。