起動スクリプト(fstab ではない)を使用してログイン時に samba 共有をマウントする

起動スクリプト(fstab ではない)を使用してログイン時に samba 共有をマウントする

背景

ユーザーがログインしたときにパスワードで保護されたSamba共有をマウントするコマンドを自動的に実行しようとしています。問題は、ラップトップを他のユーザーと共有していて、しないログイン時にSamba共有をマウントしたい。マウントしたいのはログインするとこれをユーザー固有のものにしたいので、fstab ファイルを編集することは不可能になります。

事前調査

私はSamba共有のマウントに関連する多くの質問と回答を検索して確認しました。その中には「起動/ログイン時にSamba共有をマウントし、スクリプトを使用する" そして "起動時にSamba共有をマウントするための適切なfstabエントリ」とありますが、ほとんどの回答では fstab を編集する必要があります。これはほとんどの人にとってはうまく機能しますが、私がここで探しているのはそれではありません。

これまでやってきたこと

次のようにして、コマンド ラインから Samba 共有を手動でマウントできます。

sudo mount -t cifs //centaroo.local/Me /media/Me -o uid=scott,gid=scott,credentials=/home/scott/.smbcredentials,iocharset=utf8,sec=ntlm,file_mode=0600,dir_mode=0700

問題文

前のコマンドは、コマンド ラインから実行するとうまく機能します。sudo 権限を取得するためにパスワードの入力が求められ、それを入力すると、コマンドが実行されます。問題は、スタートアップ アプリケーションの設定 > スタートアップ プログラムの編集の「コマンド」フィールドにまったく同じコマンドを追加し、変更を保存して再起動し、再度ログインすると、Samba 共有が期待どおりにマウントされないことです。原因は、sudo として実行するにはルート権限が必要であり、スタートアップ プログラムの設定のスクリプトではそれを入力する方法がないため、スクリプトが失敗するためだと思われます。

これを回避するにはどうすればいいでしょうか?

答え1

わかりました。私は自力で(他の人の助けを借りて)この問題を解決することができました。根本的な問題は、私が疑っていたように、パスワードを入力せずにルート権限を必要とするコマンドを実行しようとしていたという事実でした。私は、スレッドの指示に従ってこの問題を解決しました。パスワードを尋ねられずにスクリプト内のコマンドを sudo するにはどうすればいいですか要するに、実行したいマウント コマンドが 1 行だけ含まれた「script-mount-samba-share.sh」というシェル スクリプトを作成しました。

mount -t cifs //centaroo.local/Me /media/Me -o uid=scott,gid=scott,credentials=/home/scott/.smbcredentials,iocharset=utf8,sec=ntlm,file_mode=0600,dir_mode=0700

次に、ファイルの所有権を root:root に変更し、権限を 700 に変更しました。次に、パスワードを入力せずにスクリプトを実行できるように sudo を設定し、スタートアップ アプリケーションの設定 > スタートアップ プログラムの編集の「コマンド」フィールドを「sudo /home/scott/script-mount-samba-share.sh」(引用符なし) に変更しました。これで完了です。次に再起動して自分のユーザーでログインすると、何もしなくても Samba 共有がマウントされました。また、再起動して別のユーザーでログインすると、Samba 共有がマウントされないこともテストしました。これが私の希望です。

私が現在克服しようとしている唯一の小さな問題は、すでにログインしていて、ユーザーを他のユーザーに切り替えた場合、Samba 共有が Nautilus の左側のナビゲーション バーに引き続き表示されることです。これは、自分のユーザーでログインしたときにマウントされたので当然ですが、マウントされた共有が他のユーザーの Nautilus に表示されないようにしたいので、次のタスクはその部分を実現する方法を見つけることです。

答え2

マウント コマンドにユーザー名とパスワードを追加することが重要です。そうしないと、パスワードを要求される可能性があります。私の場合は、これが機能しました:

sudo mount -t cifs //centaroo.local/Me /media/Me -o uid=scott,gid=scott,user=,password=,iocharset=utf8,sec=ntlm,file_mode=0600,dir_mode=0700

もちろん、/etc/sudoersのすべての変更を

関連情報