CIFS共有をマウントするにはどうすればよいですか?


64

Ubuntu 11.10を使用していますが、freenasサーバーをマウントしようとしています。私はサーバーをcifsnfsで共有するように設定しています。

私が試してみました smbmount //192.168.1.### /mnt/

私はUbuntuを初めて使用するわけではありませんが、パワーユーザーの近くにいるわけではないため、可能な場合はGUIオプションを使用したいと思います。

11.10でcifs共有をマウントするにはどうすればよいですか?

回答:


88

pyNeighborhoodがありますこれは、Samba共有をマウントするためのGUIであり、ソフトウェアセンターでダウンロードできます。

設定と使用方法に関する良い記事がここにあります。

最初にcifs utilsをインストールします

sudo apt-get install cifs-utils

または、基本的な端末コマンドは次のとおりです。

mount -t cifs -o username=USERNAME,password=PASSWD //192.168.1.88/shares /mnt/share

Nautilusでマウントを確認したい場合は、最初に/ media / USERNAME /にサブフォルダーを作成するとよいでしょう:

mkdir /media/paul/cifsShare

また、たとえば、mountコマンドではパスワードを省略できます(ファイル/フォルダーモードのデモも行います)。

sudo mount -t cifs //nas-server/cifsShare /media/paul/cifsShare -o username=paulOnNAS,iocharset=utf8,file_mode=0777,dir_mode=0777,soft,user,noperm

この場合、マウント時にパスワード(実際には2つのパスワード)を求められます。

ここSambaのドキュメントを読んで、起動時などにマウントするように正しく設定してください。


2
1)パスワードをハードコーディングし、2)rootになる必要なく、samba共有をマウントする方法はありますか?
mcExchange

1
@mcExchangeルートが必要であり、smb資格情報ファイルを使用して資格情報を保護できます
-adampski

4
また、cifs-utilsインストール済みであることを確認してくださいsudo apt-get install cifs-utils。詳細については、このubuntuヘルプドキュメントが素晴らしいです。
マルコパシュコフ

1
pyNeighborhoodは、ubuntu 14.04でsshを介して起動したときにセグメンテーションエラーを発生します
Pavel Niedoba

1
@MarcoPashkov cifs-utilsが私を元気づけてくれました。そうでなければ、これは機能しません。これは、回答に直接含める必要があります。
-rubynorails

13

map7のとおりですが、ドライブ上のファイルを変更するたびにルート権限を使用したくない場合は、ユーザーフォルダーにマウントし、gidとuidがユーザー名に設定されていることを確認する必要があります。

それらを設定するコマンド:

mount -t cifs -o username=USERNAME,password=PASSWD,uid=$USER,gid=$USER //192.168.1.88/shares ~/mnt/share

mntフォルダがの~/mnt/share代わりに作成されたことに注意してください/mnt/share

また、シェルの履歴に保存されている可能性のあるコマンドにパスワードを入力する代わりに、パスワード= PASSWDを省略することができます:

mount -t cifs -o username=USERNAME,uid=$USER,gid=$USER //192.168.1.88/shares ~/mnt/share

1
いくつか例を挙げて、より完全な答えを作成し、私は:) upvoteよ

5

1)私のSamba共有は、Caja(ubuntu 16.04„ explorer“)で次のように表示されます。

smb://thinkpad/ddrive/

これは優れたlithmusテストであり、接続/パスの問題はありません。

注意:Windowsマシンからパスワード資格情報についてcajaから尋ねられた場合、ドメインをWORKGROUPからマシン名、つまり「thinkpad」に切り替えることができます。ドライブの真にローカルなログイン資格情報が必要です。)

2)それが機能する場合、コマンドが来ます:

sudo mount -t cifs -o username=frank //thinkpad/ddrive /mnt/ddrive
  • 事前に、/ mnt / ddriveが空のディレクトリとして存在することを確認してください。
  • また,password=supersecret、username =の後にコールド(スペースなし)を直接追加しますが、コマンドを入力するときにプロンプ​​トが表示されるのを待つこともできます。

2
Nemo / Linux Mint 18でsmb:// ....パスを入力できる場所を見つけるのに少し時間がかかりましたが、実際には非常に簡単です:パス入力ボックスが表示されていない場合は、表示メニュー。
ペディT.

3

cifs接続を行うにはルートが常に必要であるという主張には同意しません。確かに、CLI smbmountには常に必要ですが、nautilusなどのファイルマネージャーにはcifs共有をマウントする機能があり、rootである必要はありません。

Gnomeは使用していませんが、Nautilusをインストールしています。これを端末で実行して、デスクトップを乗っ取ろうとするのを防ぎます

$ nautilus --no-desktop &

Ubuntu 16.04では、左側のツリーメニューの下部に[サーバーに接続]があります。それをクリックして、提案はタイプ「smb://foo.example.com」です。smbは「cifs」の古い言葉であり、サーバーに入れて最初にsmb://と共有すると、接続は機能します。約束します。共有が名前付きのものである場合、スラッシュ「smb://foo.example.com/myshare」の後に必要です。

他のファイルマネージャーも同じように使用しました。プロトコルは「smb://」でなければなりません。


3
  1. システムの起動時にディレクトリをマウントできるように、これらすべての詳細を/ etc / fstabに配置できます。WindowsまたはSMBサーバーがIPアドレス192.168.1.1にある場合

    /etc/fstab
    //192.168.1.1/SharedFolder/    /mnt/linux_smb   cifs    username=winuser,password=TopSecret   0    0
    
  2. Linuxマウントポイントとしてディレクトリを作成する

    mkdir /mnt/linux_smb
    chmod 755  /mnt/linux_smb
    
  3. 初めてこれを手動でマウントする

    mount -a
    
  4. 最終的なエラーは

    dmesg | tail 
    

3
  1. CIF / SMBのバージョンがLinuxとWindowsの間で互換性がない場合、特定の問題が発生し、解決するのが非常にイライラします。その場合、「vers = 2.1」を追加してfstab行でマイナー変更を行うことができます。

    したがって、WindowsまたはSMBサーバーがIPアドレス192.168.1.1にある場合

    /etc/fstab
    
    //192.168.1.1/SharedFolder/   /mnt/linux_smb   cifs   vers=2.1,username=winuser,password=TopSecret   0    0
    
  2. ステップ2、3、および4は、前の回答と同じままです。


1

コマンドラインからCIFSファイルシステムをマウントし、テストファイルを作成/削除するための小さなスクリプトを作成しました(ただし、Fedora用です)。役に立つかもしれません:

#!/bin/bash
# Passes https://www.shellcheck.net/

set -o nounset

# See 
#   https://wiki.samba.org/index.php/Mounting_samba_shares_from_a_unix_client
#   https://access.redhat.com/solutions/448263
# and also
#   https://serverfault.com/questions/309429/mount-cifs-credentials-file-has-special-character

# One needs to run "yum install cifs-utils" to have the kernel module, man page
# and other stuff.

rpm --query cifs-utils > /dev/null

if [[ $? != 0 ]]; then
   echo "Package cifs-utils is not installed -- exiting" >&2
   exit 1
else 
   ver=$(rpm --query cifs-utils)
   echo "Package $ver exists ... good!" >&2
fi

# Where to find credentials? Use the "credential file" approach, which
# we call "authfile". Example content (w/o the leading #) below.
# Make sure there are no spaces around '=' (this is different than
# for "smbclient" which can deal with spaces around '='.)
# ----8<------8<----------------
# username=prisoner
# password=KAR120C
# domain=VILLAGE
# ----8<------8<----------------
# Trailing empty lines will lead to (harmless) error messages
# "Credential formatted incorrectly: (null)"

authfile='/etc/smb.passwd' # Make sure read permissions are restricted!!

# Server to contact.
# In the UNC path, we will use DNS name instead of the (more correct?)
# NetBIOS name.
# mount.cifs manpage says: "To mount using the cifs client, a tcp name
# (rather than netbios name) must be specified for the server."

server_dns=thedome.example.com

# The name of the connecting client, just to be sure (probably useless)

client_nbs=$(hostname --short | tr '[:lower:]' '[:upper]')

if [[ -z $client_nbs ]]; then
  client_nbs=UNKNOWN
fi

# Connect to a certain service (which is a fileservice)
# and then switch to the given directory.
# Instead of appending $directory to form the complete UNC
# (Uniform Naming Convention) path, one could also use the option 
# "prefixpath".
# If there is no need to mount a subdirectory of the service,
# the UNC would just be unc="//$server_dns/$service_name"

service_name='information'
directory='PERSONALDATA'

unc="//$server_dns/$service_name/$directory"

# Finally, we will mount the CIFS filesystem here (the
# permissions on that node are not directly of interest)

mntpoint=/mnt/portal

if [[ ! -d "$mntpoint" ]]; then
   mkdir "$mntpoint"
   if [[ $? != 0 ]]; then
      echo "Could not create mountpoint '$mntpoint' -- exiting" >&2
      exit 1
   fi
fi

# Only this user will be able to access the mounted CIFS filesystem

user=number6
group=number6

# Try to mount this so that only user "number6" can access it

mount -t cifs \
   "$unc" \
   "$mntpoint" \
   --read-write \
   --verbose \
   -o "credentials=$authfile,uid=$user,gid=$group,netbiosname=$client_nbs,file_mode=0660,dir_mode=0770"

res=$?

if [[ $res != 0 ]]; then
   echo "Mount failed!" >&2
   echo "Return code $res; more info may be in kernel log or daemon log" >&2
   echo "Try 'journalctl SYSLOG_FACILITY=0' or 'journalctl SYSLOG_FACILITY=3'" >&2
   echo "...exiting" >&2
   exit 1
fi

# Check permissions on the mount point

stat=$(stat --format="group=%G user=%U access=%A" "$mntpoint")
soll="group=$group user=$user access=drwxrwx---"

if [[ $stat != "$soll" ]]; then
   echo "Incorrect permissions on root of '$mntpoint'" >&2
   echo "Expected: $soll" >&2
   echo "Obtained: $stat" >&2
   echo "...exiting" >&2
   umount "$mntpoint"
   exit 1
fi

# CD to the mountpoint to be sure

cd "$mntpoint"

if [[ $? != 0 ]]; then
  echo "Could not cd to '$mntpoint'" >&2
  exit 1
fi

# CD to directory TEST which must exist (change as appropriate)

newcd="$mntpoint/TEST"

if [[ ! -d "$newcd" ]]; then
   echo "Directory '$newcd' not found - can't test!" >&2
   echo "...exiting" >&2
   exit 1
fi

cd "$newcd"

if [[ $? != 0 ]]; then
  echo "Could not cd to '$newcd'" >&2
  exit 1
fi

# Create a file and check the permissions

testfile=$(mktemp --tmpdir="$newcd")

if [[ $? != 0 ]]; then
   echo "Could not create temporary file in '$newcd'" >&2
   exit 1
fi

stat=$(stat --format="group=%G user=%U access=%A" "$testfile")
soll="group=$group user=$user access=-rw-rw----"

if [[ $stat != "$soll" ]]; then
   echo "Incorrect permissions on temporary file '$testfile'" >&2
   echo "Expected: $soll" >&2
   echo "Obtained: $stat" >&2
   echo "...exiting" >&2
   exit 1
fi

/bin/rm "$testfile"

echo "Mounted '$unc' on '$mntpoint'" >&2

1

さまざまなマウント方法がどのように機能するかは尽きましたが、考慮したいことがあります

資格情報を直接/ etc / fstabに入力したくない場合は、代わりにマウントオプションを使用できます:credentials = / your / path / here / .credentials

これには、username = msusername password = mspasswordを含める必要があります

ファイルを保存して、選択エディターを終了します。

権限はchmod 600に変更する必要があります

暗号化されたホームディレクトリがあり、起動時にマウントを有効にする場合は、必ずホームディレクトリの外にファイルを配置してください。/ etc /または/ media /の場所は、適切で覚えやすい場所です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.