web-dev-qa-db-ja.com

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

Ubuntu 11.10を使用していて、freenasサーバーをマウントしようとしています。サーバーをcifsおよびnfsで共有するように設定しています。

smbmount //192.168.1.### /mnt/を試しました

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

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

63
KYLE

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のドキュメントはこちら を読んで、起動時などにマウントするように正しく設定してください。

87
map7

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
13
binamenator

1)私のサンバの共有は、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が空のディレクトリとして存在することを確認してください。
  • また、username =の後に,password=supersecretを直接(スペースなしで)追加しますが、コマンドを入力するときにプロンプ​​トが表示されるのを待つこともできます。
5
Frank Nocke

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

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

$ nautilus --no-desktop &

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

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

3
pauljohn32
  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は、前の回答と同じままです。

3
Amit Vujic
  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
Amit Vujic

コマンドラインから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
David Tonhofer

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

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

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

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

パーミッションはchmod 600に変更する必要があります

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

1
amon san