「Linux関連」の版間の差分

提供: Eospedia
移動: 案内検索
(ディレクトリスタック)
(ユーザー管理関連)
行31: 行31:
  
 
= ユーザー管理関連 =
 
= ユーザー管理関連 =
 +
== LDAPユーザーの追加方法 ==
 +
まずLDAPサーバーにrootログインする。
 +
<pre>
 +
> ssh root@ldap
 +
</pre>
 +
 +
<pre>
 +
> ls
 +
</pre>
 +
rootのホームディレクトリでlsすると *.ldif ファイルがごろごろ転がっているはずで、これがLDAPのユーザー登録に用いるファイル群である。
 +
 +
LDAPユーザーにはUIDを通しでつけているから、現状のUIDの使用状況を確認する。ユーザーは12000番台を割り当てているので、以下で一覧を表示する。
 +
<pre>
 +
> ldapsearch -x -L -b "dc=yasunaga-lab,dc=bio,dc=kyutech,dc=ac,dc=jp" | grep 'uidNumber: 12' | sort | tail
 +
</pre>
 +
 +
例えば以下の様に表示されたならば、
 +
<pre>
 +
uidNumber: 12117
 +
uidNumber: 12118
 +
uidNumber: 12119
 +
uidNumber: 12120
 +
uidNumber: 12121
 +
uidNumber: 12122
 +
uidNumber: 12123
 +
uidNumber: 12124
 +
uidNumber: 12125
 +
uidNumber: 12126
 +
</pre>
 +
 +
新規ユーザーはUID 12127 として登録すればよい。
 +
 +
 
== LDAPでユーザー管理していない計算機にアカウントを追加する ==
 
== LDAPでユーザー管理していない計算機にアカウントを追加する ==
 
<前提>
 
<前提>

2020年6月8日 (月) 09:44時点における版

ファイルサーバー関連

autofsを有効化する

/netが存在しない、または/net内でファイルサーバーのディレクトリに入ろうとしてもエラーが出る場合、autofsが動いていない。

以下の作業は管理者権限で実施する。

step1: /etc/auto.masterを編集する

  • root権限でエディタで/etc/auto.masterを開き、以下の行がコメントアウトされていればコメントアウトを外す。
/net    -hosts

step2: autofsサービスを有効化して起動する

systemctl enable --now autofs

step3: 確認

ls /net/fs09/

work01, work02などが見えればok。fs09以外にも、研究室内でNFSエクスポートをかけてあるリモートファイルシステムはすべてアクセス可能になる。

step4: ホームディレクトリのリンクを張る

研究室計算機のアカウントはホームディレクトリを /home/people/<アカウント名> としていて、その実体は /net/fs09/homes/people/<アカウント名> にある(2020/4/28現在)ので、以下の様にシンボリックリンクを張る。

cd /home
ln -s /net/fs09/homes/people .

ユーザー管理関連

LDAPユーザーの追加方法

まずLDAPサーバーにrootログインする。

> ssh root@ldap
> ls

rootのホームディレクトリでlsすると *.ldif ファイルがごろごろ転がっているはずで、これがLDAPのユーザー登録に用いるファイル群である。

LDAPユーザーにはUIDを通しでつけているから、現状のUIDの使用状況を確認する。ユーザーは12000番台を割り当てているので、以下で一覧を表示する。

> ldapsearch -x -L -b "dc=yasunaga-lab,dc=bio,dc=kyutech,dc=ac,dc=jp" | grep 'uidNumber: 12' | sort | tail

例えば以下の様に表示されたならば、

uidNumber: 12117
uidNumber: 12118
uidNumber: 12119
uidNumber: 12120
uidNumber: 12121
uidNumber: 12122
uidNumber: 12123
uidNumber: 12124
uidNumber: 12125
uidNumber: 12126

新規ユーザーはUID 12127 として登録すればよい。


LDAPでユーザー管理していない計算機にアカウントを追加する

<前提>

  • LDAPサーバーに研究室アカウントを登録済みであること
  • アカウントを追加したい計算機で管理者権限を使えること
  • アカウントを追加したい計算機でautofsが有効になっており、LDAPアカウントのホームディレクトリにアクセス可能なこと

<想定状況>

  • LDAPでユーザー管理していない計算機(rc, DL-Boxなど)において、LDAPに登録してあるユーザー所有のファイルやディレクトリに同じ権限でアクセスできるようなアカウントを作りたい。ホームディレクトリも共有したい。
    • LDAPを有効化しようにも既存ユーザーとLDAPユーザー名やグループ名などがバッティングしていてLDAP有効化できない場合とか、宗教上の理由によりその計算機でLDAPを使いたくない場合など。

step1: LDAPユーザーのUIDとGIDを確認する

LDAPでユーザー管理している計算機上で、idコマンドにより確認する。

例えばユーザー名がkttnである場合、

[13:36:52 kttn@cs05 ~]
> id kttn
uid=12118(kttn) gid=1001(yasunaga-lab) groups=1001(yasunaga-lab),10(wheel)

※ cs06ではgid=1001はLDAP有効化以前の既存グループwcsに持っていかれているので、yasunaga-labではなくwcsと表示される。

上記より、UIDは12118, GIDは1001であると確認できる。Linuxではユーザー識別にユーザー名とグループ名は関係なくて、UIDとGIDが同じであるか否かでユーザー識別がされる。したがって、UIDとGIDが上記で確認したLDAPユーザーのそれらと同じアカウントを作りさえすれば目的は達成できる。

step2: 既存アカウントおよびグループの確認

ユーザー名 kttn, uid 12118, グループ名 yasunaga-lab, gid 1001 でアカウントを追加したいものとして説明する。

アカウントを追加したい計算機にログインし、まず同じユーザー名をもつユーザーが存在しないか調べる。

[kttn@rc ~]$ id -u kttn
1007

遺憾ながらすでにkttnという名前のアカウントを作ってしまっていて、同じアカウント名を使えないため、ユーザー名はkttn2として作ることにする。

同様にグループ名を調べる。

[kttn@rc ~]$ id -g yasunaga-lab
id: yasunaga-lab: no such user

yasunaga-labという名前の既存グループは存在しないため、yasunaga-labという名前のグループを新たに作成しても良い。

次に同じUIDを持つユーザーが存在しないか調べる。

[kttn@rc ~]$ id -un 12118
id: 12118: no such user

存在しない。

同様にGID

[kttn@rc ~]$ id -gn 1001
wcs

残念ながらwcsというグループがすでにGID 1001を割り当てられている。yasunaga-labというグループは作らずに、wcsというグループでアカウントを作ることにする。

まとめると、ユーザー名 kttn2 (uid=12118), 所属グループ wcs (gid=1001) でアカウントを作成することにする。

step3: アカウント作成

管理者権限で実施。

[root@rc ~]# useradd --home-dir /home/people/kttn --gid 1001 --groups wheel --no-create-home --shell /usr/bin/bash --uid 12118 kttn2

--shellはLDAPユーザーのそれと同じにする。--shellのパスはOSによって違うかもしれないが、centos7の場合bashは/usr/bin/bashである。

--groupsは追加のグループを指定していて、centos7ではwheelを追加するとsudoコマンド使用が可能になる。

--home-dirは、LDAPユーザーで使っているホームディレクトリを指定すること!

次にパスワードの設定。

[root@rc ~]# passwd kttn2
Changing password for user kttn2.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

LDAPユーザーのそれと同じにしとくが吉。

step4: 確認

suコマンドで追加したユーザーになってみる。

[root@rc ~]# su kttn2   
[14:32:31 kttn2@rc /root] 
> cd

[14:32:31 kttn2@rc ~]
> ls
ビデオ        デスクトップ  docker     pyenv-init.sh  scripts            tmp   画像
ダウンロード  ドキュメント  Downloads  R              softwares          web   音楽
テンプレート  Desktop       perl5      repos          thinclient_drives  公開

問題なくホームディレクトリが見れている。あとは念のためファイル作れるかとか消せるかとかをチェックすればよい。

もちろん外側からsshするときは新たに作成したユーザー名で、

ssh kttn2@rc

とかやる。

ウェブサーバー関連

特定のIPアドレスをアクセス禁止にする

Scientific Linux 6の場合。

ターミナルでログインし、/etc/sysconfig/iptables をroot権限で開き、以下の書式でIPを追記する。

-A INPUT -s <IP address>/<subnet bit数> -p tcp -j REJECT

例えば192.0.2.xxx からのアクセスを禁止するには、192.0.2.0/24 と書く。udpアクセスを禁止する場合はtcpの代わりにudpと書く。

上記を編集した後、以下によりiptablesをリロードして設定を反映させる。

service iptables restart

iptablesを再起動すると、ごくわずかな時間だがiptablesによるアクセス管理が無効になるようで、その間アクセスが多くなったりする。

ロケール

CentOS7

以下コマンドでロケールを指定し、設定を反映させる。

sudo localectl set-locale LANG=ja_JP.UTF-8
source /etc/locale.conf

簡単にウェブを探しても、システム全体でこれを永続させるような方法が見当たらず。システムの環境変数としてLANG=ja_JP.UTF-8を指定すればいいような気もするが...

ユーザーの.bash_profileに、以下を追記する。

LANG=ja_JP.UTF-8
export LANG

ログイン直後はロケール設定失敗みたいなエラーが出てくるかもしれないが、それを除けば日本語コンソール環境みたいになる。

CentOS7 Docker

Dockerの場合はlocalectfを使用できないので、以下コマンドを使う。nvidia/cudaのcentos7イメージの場合はこれだけでいける、はず。

sudo localedef -f UTF-8 -i ja_JP ja_JP.UTF-8

BASH

ディレクトリスタック

複数のディレクトリパスをディレクトリスタックに記憶しておき、ディレクトリ移動を楽にする仕組み。

  • ディレクトリを移動するとともに、ディレクトリスタックに追加するコマンド
pushd <行先ディレクトリ>
  • 現在のディレクトリスタックの表示
dirs -v

1カラム目がディレクトリスタックにおけるそのディレクトリの識別番号。

  • ディレクトリスタックの中の特定のディレクトリへ移動
# 識別番号を確認
dirs -v
# 移動(+記号を忘れずに)
pushd +<識別番号>