useradd -o -u userXXX
@jlliagreが推奨するオプションの閲覧以外の3番目の提案された戦略に関しては、同じuidとして複数のユーザーを実行することには慣れていません。(したがって、あなたがそれを進めるなら、私はあなたが発生する問題(または成功)で投稿を更新できるかどうかに興味があります...)
最初のオプション「Everybody's SSH public key are put to〜root / .ssh / authorized_keys2」に関する私の最初の観察は、絶対に他のシステムで作業することはないということです。
- その後、少なくともいくつかの時間、あなたはユーザーアカウントで作業する必要があります
sudo
2番目の観察結果は、HIPAA、PCI-DSS準拠、またはCAPPやEALなどを目指すシステムで作業している場合、sudoの問題を回避する必要があるということです。
- 通常、一部の集中ユーザーデータベースを使用して、監査、無効化、有効期限切れなどが可能な非ルートの個別ユーザーアカウントを提供することが業界標準です。
そう; パーソナライズされたアカウントとsudoを使用する
システム管理者として、リモートマシンで行う必要のあるほぼすべての操作に何らかの昇格されたアクセス許可が必要になるのは残念ですが、SSHベースのツールとユーティリティのほとんどが使用中に破壊されるのは面倒です sudo
したがって、私はsudo
あなたが言及することの迷惑を回避するために使用するいくつかのトリックを渡すことができます。最初の問題は、rootログインがPermitRootLogin=no
sshキーを使用してブロックされているか、rootがsshキーを使用していない場合、SCPファイルがPITAのようなものになることです。
問題1:リモート側からファイルをscpしたいが、ルートアクセスが必要ですが、ルートとして直接リモートボックスにログインすることはできません。
退屈な解決策:ファイルをホームディレクトリにコピーし、chown、scp downします。
ssh userXXX@remotesystem
、sudo su -
など、cp /etc/somefiles
に/home/userXXX/somefiles
、chown -R userXXX /home/userXXX/somefiles
リモートからファイルを取得するために使用SCP、。
本当に退屈です。
退屈さの少ないソリューション:sftpは-s sftp_server
フラグをサポートしているため、次のようなことができます(パスワードなしのsudoをで構成した場合 /etc/sudoers
)。
sftp -s '/usr/bin/sudo /usr/libexec/openssh/sftp-server' \
userXXX@remotehost:/etc/resolv.conf
(このハックアラウンドをsshfsで使用することもできますが、推奨されるかどうかわかりません... ;-)
パスワードなしのsudo権限がない場合、または何らかの方法で上記の方法が壊れている場合は、もう1つの退屈なファイル転送方法であるリモートルートファイルにアクセスすることをお勧めします。
ポートフォワードニンジャメソッド:
リモートホストにログインしますが、リモートポート3022(管理者用に予約されていない任意の値、つまり1024以上)をローカル側のポート22に転送して戻すことを指定します。
[localuser@localmachine ~]$ ssh userXXX@remotehost -R 3022:localhost:22
Last login: Mon May 21 05:46:07 2012 from 123.123.123.123
------------------------------------------------------------------------
This is a private system; blah blah blah
------------------------------------------------------------------------
通常の方法でルートを取得...
-bash-3.2$ sudo su -
[root@remotehost ~]#
これで、ファイルの中間コピーを作成するという退屈で退屈なステップを回避しながら、他の方向にファイルをscpできます。
[root@remotehost ~]# scp -o NoHostAuthenticationForLocalhost=yes \
-P3022 /etc/resolv.conf localuser@localhost:~
localuser@localhost's password:
resolv.conf 100%
[root@remotehost ~]#
問題2:SSHエージェント転送:たとえばログインシェルを指定してルートプロファイルをロードすると、SSHエージェント転送に必要な環境変数などSSH_AUTH_SOCK
がリセットされるため、SSHエージェント転送はで「破損」しsudo su -
ます。
半分焼いた答え:
適切には、rootシェルをロードすることを何でも、当然環境をリセットしようとしている、しかし、わずかな作業は、周りがあり、あなたの缶を使用しますが、BOTH root権限とSSHエージェントを使用する能力を必要とするとき、同時に
これはある種のキメラプロファイルを実現します。これは実際には使用すべきではありません。これは厄介なハックなので、リモートホストから他のリモートホストへファイルをSCPする必要がある場合に便利です。
とにかく、sudoersで以下を設定することにより、ユーザーがENV変数を保持できるようにすることができます。
Defaults:userXXX !env_reset
これにより、そのような厄介なハイブリッドログイン環境を作成できます。
通常どおりログインします。
[localuser@localmachine ~]$ ssh userXXX@remotehost
Last login: Mon May 21 12:33:12 2012 from 123.123.123.123
------------------------------------------------------------------------
This is a private system; blah blah blah
------------------------------------------------------------------------
-bash-3.2$ env | grep SSH_AUTH
SSH_AUTH_SOCK=/tmp/ssh-qwO715/agent.1971
/root/.profile
およびを実行するbashシェルを作成します/root/.bashrc
。しかし、保存しますSSH_AUTH_SOCK
-bash-3.2$ sudo -E bash -l
したがって、このシェルにはルート権限があり、ルート$PATH
があります(ただし、ホームディレクトリが破損しています...)
bash-3.2# id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel) context=user_u:system_r:unconfined_t
bash-3.2# echo $PATH
/usr/kerberos/sbin:/usr/local/sbin:/usr/sbin:/sbin:/home/xtrabm/xtrabackup-manager:/usr/kerberos/bin:/opt/admin/bin:/usr/local/bin:/bin:/usr/bin:/opt/mx/bin
ただし、その呼び出しを使用して、リモートのsudoルートだけでなく、そのようなSSHエージェントアクセスも必要とすることを行うことができます。
bash-3.2# scp /root/.ssh/authorized_keys ssh-agent-user@some-other-remote-host:~
/root/.ssh/authorized_keys 100% 126 0.1KB/s 00:00
bash-3.2#
-o
フラグを見てuseradd
ください。このフラグは、複数のユーザーが同じuidを共有できるようにするためにあります。