この素晴らしい練習の指示に従ってください。ここ。
私のドメインを認証するようにCentOS 6.5サーバーを正常に設定しました。しかも、それただこのグループのドメインユーザーがdomain-ssh-users
SSH経由でログインできるようにします。パズルのピースがもう一つ必要です。
ドメインユーザーがSSHを介して初めてログインすると、そのユーザーのホームディレクトリが自動的に作成されます(上記の練習に従って)。domain-ssh-users
ただし、グループのドメインユーザー用に作成されたすべてのホームディレクトリの場合いいえ.bash_profile
ローカルユーザーの場合は、特定のユーザーを作成したいと思います。 「簡単な」部分は、.bash_profile
すべてが同じであるということですdomain-ssh-users
。
誰もがこの問題を解決する方法について手がかりを与えることができますか?
編集する:ローカルログインとドメインログインの環境変数の違いです。
これらの違い(セキュリティ上の理由で難読化)を除いて、すべてがほぼ同じです。
ローカルユーザー:
PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/LOCALUSER/bin
PWD=/home/LOCALUSER
HOME=/home/LOCALUSER
LOGNAME=LOCALUSER
ドメインユーザー:
PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/local.mydomainname.com/DOMAINUSER/bin
PWD=/home/local.mydomainname.com/DOMAINUSER
KRB5CCNAME=FILE:/tmp/krb5cc_gibberish_8839
HOME=/home/local.mydomainname.com/DOMAINUSER
それでは…まあ、多分かなり簡単かもしれません。/home
ユーザーが内部にあるか外部にあるかに応じて、bash生成スクリプトで他のbash_profileを使用するようにできますか/home/local.mydomainname.com
?
編集2:
だからこれを.bash_profile
テストとして生成し、ローカルユーザーとドメインユーザーのために/ homeディレクトリに入れてみました。
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
env='env'
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
if echo $env grep -q "local.mydomain.com"
then
umask 000
/domain/menu.sh
clear;exit
fi
ただし、ローカルユーザーまたはドメインユーザーとしてログインするとmenu.shが起動します。私はこの.bash_profileの生成に初めて触れたので、単純なものが欠けていると確信しています。
答え1
.bash_profile
ファイルをに入れます/etc/skel/
。デフォルトでは、新しいユーザープロファイルのテンプレートディレクトリです。$HOME
新しいユーザーが作成され、ディレクトリがあると、その中のすべての内容がそのディレクトリにコピーされます$HOME
。これはWindowsのデフォルトプロファイルと似ています。
リモートユーザーとローカルユーザーの両方に同じファイルを使用するには、リモートユーザーのみが設定した変数を見つけて、適用したい機能/設定にその変数のテストを含めます。に似ているSSH_CLIENT
かSSH_TTY
if [[ $SSH_CLIENT ]]; then
setup foo for a remote user
else
setup foo for a local user
fi
答え2
/etc/profile.d/ディレクトリには、user_loginで実行されるスクリプトが含まれています。 bash設定ファイルを生成するには、ここからスクリプトを生成してください。
#!/bin/bash
export your environment variables here
or invoke a script that generates bash profile.
bash_profileの場所は、ユーザーディレクトリ(たとえば、/home/usr/.bash_profile)になければなりません。
bash_profileは通常、エクスポートされた環境変数(パスなど)のリストです。
export VARENV="/path/to/object/"
答え3
ユーザーアカウントをドメインと同期するためのSAMBAのマニュアルページ
SAMBAメーリングリスト::Active Directory D(omain)/ C(コントローラ)のドメインユーザーステータスの確認
これを達成する1つの方法は、他の答えで指摘されているように/profile.d/ディレクトリにスクリプトを配置することです。
ドメインメンバーシップとユーザーの状態をテストし、クエリの結果に基づいて要件を満たしたり、ユーザーがドメイン権限要件を満たしていない場合はbash_profileを作成しないでください。
バッシュコンソールコマンド
$> getent group
出力
Domain Admins:x:512:root
Domain Users:x:513:jht,lct,ajt,met,vlendecke
Domain Computers:x:553:
... ...
domain-ssh-users:x:55X:harry,mark,john
ドメイングループメンバーシップのテスト
DOMAIN_GROUPS=`getent group`
USERS_DOMAIN_SSH=`echo $DOMAIN_GROUPS | grep "domain-ssh-users" | sed 's/domain-ssh-users:x:55X://g`
USER=`last | head -n 1`
if [ `echo $DOMAIN_GROUPS | grep $USER` ]
then
#... Do add bash_profile.
else
#... Do not add bash_profile.
exit
fi
ハッキーですが可能です...
DOMAIN_GROUPS 割り当てには、関連付けられたドメイングループとユーザーが一覧表示されます。 USER_DOMAIN_SSHはDOMAIN_GROUPSを読み取り、ドメインssh-user行を除くすべてのエントリを削除し、ストリーミングテキスト処理はコンマ区切りのユーザーを除くすべてのエントリを削除します。 USERは最後にログインしたユーザーを確認し、最新のログインを読み取ります。
このテストは USER の DOMAIN_GROUPS 文字列をチェックします。
SAMBAパスのエクスポート例
if [ $TEST_DOMAIN_USER_ACCESS_LEVEL ]
then
export PATH='/usr/local/samba/bin:\
/usr/local/samba/sbin:$PATH' >> /home/domain/user/.bash_profile && echo OK
else
exit
fi
profile.dスクリプト
#!/bin/bash
env=`env`
#Store env to string then test for domain membership...
if echo $env grep -q "local.mydomainname.com"
then
user=`cat /var/log/auth | grep LOGIN | grep -o '.\{0,0\}:.\{0,100\} | sed 's/: //g' | grep -Eo '^[^ ]`
# There's a step ^^ missing in this assignment to grab the first line matching a pattern. So here we are checking what user to build for.
echo "Line 1 of ~/.bashrc" >> /home/mydomain/$user
echo "Line 2 of ~/.bashrc" >> /home/mydomain/$user
else
echo "Do not build a ~./bashrc for non-domain users"
fi