LINUX.ORG.RU

smb acl rights

 


0

1

Не могу удалить через самбу файлы, владельцем которых не являюсь. Хотя ACL права установлены и через ssh всё работает.

Вывод testparm:

[public]
        path = /data/public
        read only = No
Вывод getfacl того файла, который могу удалить:
getfacl: Removing leading '/' from absolute path names
# file: data/public/soft/dotnetfx.exe.smb.created
# owner: mcmerphy
# group: mcmerphy
user::r-x
user:mcmerphy:rwx
group::r-x
mask::rwx
other::---
Вывод getfacl того файла, который НЕ могу удалить:
getfacl: Removing leading '/' from absolute path names
# file: data/public/soft/dotnetfx.exe
# owner: public
# group: public
user::r-x
user:mcmerphy:rwx
group::rwx
mask::rwx
other::---



Последнее исправление: McMerph (всего исправлений: 3)

На директорию, где лежит файл покажи getfacl. Если на неё у тебя нет прав на запись - удалить файл ты не сможешь

Pinkbyte ★★★★★
()
Ответ на: комментарий от Pinkbyte

Оба файла(который удаляется и который нет) лежат в одной и той же директории.

getfacl: Removing leading '/' from absolute path names
# file: data/public/soft/
# owner: public
# group: public
user::r-x
user:mcmerphy:rwx
group::rwx
mask::rwx
other::---
default:user::rwx
default:user:mcmerphy:rwx
default:group::rwx
default:mask::rwx
default:other::---

McMerph
() автор топика
Ответ на: комментарий от Pinkbyte

Можно поподробнее?

/etc/samba/smb.conf

# We want Samba to log a minimum amount of information to syslog. Everything
# should go to /var/log/samba/log.{smbd,nmbd} instead. If you want to log
# through syslog you should set the following parameter to something higher.
   syslog = 3
/var/log/samba/log.smbd
[2015/09/12 19:31:50,  0] ../source3/smbd/server.c:1189(main)
  smbd version 4.1.17-Debian started.
  Copyright Andrew Tridgell and the Samba Team 1992-2013
[2015/09/12 19:31:50.737259,  0] ../lib/util/become_daemon.c:136(daemon_ready)

McMerph
() автор топика
Ответ на: комментарий от McMerph

/etc/samba/smb.conf

# We want Samba to log a minimum amount of information to syslog. Everything
# should go to /var/log/samba/log.{smbd,nmbd} instead. If you want to log
# through syslog you should set the following parameter to something higher.
   syslog = 4
/var/log/samba/log.smbd
[2015/09/12 19:38:33,  0] ../source3/smbd/server.c:1189(main)
  smbd version 4.1.17-Debian started.
  Copyright Andrew Tridgell and the Samba Team 1992-2013
[2015/09/12 19:38:33.907189,  0] ../lib/util/become_daemon.c:136(daemon_ready)

McMerph
() автор топика
Ответ на: комментарий от McMerph

Logging messages with levels of 2 and 1 will be sent to both syslog and the Samba logging files, and messages with a level of 3 or 4 will be sent to the Samba logging files, but not to syslog. If the syslog value exceeds the log level value, nothing will be sent to syslog.

Это из руководства по Samba.

log level = 10 и смотри в лог-файл, а не в syslog

Pinkbyte ★★★★★
()
Ответ на: комментарий от Pinkbyte

При syslog = 10 всё тоже самое. smb.conf:

log file = /var/log/samba/log.%m
Может быть я не там смотрю логи? Смотрю в /var/log/samba.

McMerph
() автор топика
Ответ на: комментарий от McMerph

При syslog = 10 всё тоже самое. smb.conf:

Ты вообще читал что я тебе процитировал? Перевожу: при syslog > 2 логи ведутся только в лог файлы и только если установлено соответствующее значение опции 'log level'.

log level = 10 добавь в конфиг. Не syslog = 10 а именно log level = 10

Pinkbyte ★★★★★
()
Ответ на: комментарий от Pinkbyte
[2015/09/13 09:48:24.380265, 10, pid=17734, effective(1000, 1000), real(1000, 0)] ../source3/smbd/open.c:171(smbd_check_access_rights)
  smbd_check_access_rights: file public/soft/dotnetfx.exe requesting 0x100180 returning 0x100100 (NT_STATUS_OK)
[2015/09/13 09:48:24.380352,  2, pid=17734, effective(1000, 1000), real(1000, 0)] ../source3/smbd/open.c:1002(open_file)
  mcmerphy opened file public/soft/dotnetfx.exe read=No write=No (numopen=2)
[2015/09/13 09:48:24.381462, 10, pid=17734, effective(1000, 1000), real(1000, 0)] ../source3/smbd/open.c:1492(grant_fsp_oplock_type)
  grant_fsp_oplock_type: oplock type 0x0 on file public/soft/dotnetfx.exe
[2015/09/13 09:48:24.381539,  5, pid=17734, effective(1000, 1000), real(1000, 0), class=locking] ../source3/smbd/oplock.c:89(set_file_oplock)
  set_file_oplock: granted oplock on file public/soft/dotnetfx.exe, 811:474001d:0/398011441, tv_sec = 55f4b9c8, tv_usec = 55dce
[2015/09/13 09:48:24.381628, 10, pid=17734, effective(1000, 1000), real(1000, 0), class=locking] ../source3/locking/share_mode_lock.c:177(unparse_share_modes)
  unparse_share_modes:
[2015/09/13 09:48:24.381699,  1, pid=17734, effective(1000, 1000), real(1000, 0)] ../librpc/ndr/ndr.c:296(ndr_print_debug)
       d: struct share_mode_data
          servicepath              : *
              servicepath              : '/data'
          base_name                : *
              base_name                : 'public/soft/dotnetfx.exe'
          stream_name              : NULL
          id: struct file_id
              devid                    : 0x0000000000000811 (2065)
              inode                    : 0x000000000474001d (74711069)
              extid                    : 0x0000000000000000 (0)
          num_share_modes          : 0x00000001 (1)
          share_modes: ARRAY(1)
              share_modes: struct share_mode_entry
                  pid: struct server_id
                      pid                      : 0x0000000000004546 (17734)
                      task_id                  : 0x00000000 (0)
                      vnn                      : 0xffffffff (4294967295)
                      unique_id                : 0x499ebb0e6710dfab (5304883081622118315)
                  op_mid                   : 0x000000000000038b (907)
                  op_type                  : 0x0000 (0)
                  access_mask              : 0x00100180 (1048960)
                  share_access             : 0x00000007 (7)
                  private_options          : 0x00000000 (0)
                  time                     : Sun Sep 13 09:48:24 2015 GMT-10.351694
                  id: struct file_id
                      devid                    : 0x0000000000000811 (2065)
                      inode                    : 0x000000000474001d (74711069)
                      extid                    : 0x0000000000000000 (0)
                  share_file_id            : 0x0000000017b92c31 (398011441)
                  uid                      : 0x000003e8 (1000)
                  flags                    : 0x0000 (0)
                  name_hash                : 0x1d0ca454 (487367764)
                  stale                    : 0x00 (0)
          num_delete_tokens        : 0x00000000 (0)
          delete_tokens: ARRAY(0)
          old_write_time           : Sat Aug 15 13:40:29 2015 GMT-10.567621470
          changed_write_time       : Thu Jan  1 10:00:00 1970 GMT-10.0
          fresh                    : 0x01 (1)
          modified                 : 0x01 (1)
          record                   : *
[2015/09/13 09:48:24.383801, 10, pid=17734, effective(1000, 1000), real(1000, 0), class=acls] ../source3/smbd/posix_acls.c:3529(posix_get_nt_acl)
  posix_get_nt_acl: called for file public/soft/dotnetfx.exe
[2015/09/13 09:48:24.383974,  5, pid=17734, effective(1000, 1000), real(1000, 0)] ../source3/passdb/lookup_sid.c:1163(uid_to_sid)
  uid_to_sid: winbind failed to find a sid for uid 1003
[2015/09/13 09:48:24.445353,  8, pid=17734, effective(1000, 1000), real(1000, 0)] ../source3/smbd/dosmode.c:642(dos_mode)
  dos_mode: public/soft/dotnetfx.exe
[2015/09/13 09:48:24.447088, 10, pid=17734, effective(1000, 1000), real(1000, 0)] ../source3/smbd/smb2_create.c:1053(smbd_smb2_create_send)
  smbd_smb2_create_send: public/soft/dotnetfx.exe - fnum 811532052
[2015/09/13 09:48:24.447189, 10, pid=17734, effective(1000, 1000), real(1000, 0)] ../source3/smbd/smb2_server.c:2494(smbd_smb2_request_done_ex)
  smbd_smb2_request_done_ex: idx[1] status[NT_STATUS_OK] body[88] dyn[yes:88] at ../source3/smbd/smb2_create.c:374
[2015/09/13 09:48:24.451763,  3, pid=17734, effective(1000, 1000), real(1000, 0)] ../source3/smbd/dosmode.c:163(unix_mode)
  unix_mode(public/soft/dotnetfx.exe) returning 0544
[2015/09/13 09:48:24.451859, 10, pid=17734, effective(1000, 1000), real(1000, 0)] ../source3/modules/vfs_posixacl.c:92(posixacl_sys_acl_set_file)
  Calling acl_set_file: public/soft/dotnetfx.exe, 0
[2015/09/13 09:48:24.451959, 10, pid=17734, effective(1000, 1000), real(1000, 0)] ../source3/modules/vfs_posixacl.c:111(posixacl_sys_acl_set_file)
  acl_set_file failed: Operation not permitted
[2015/09/13 09:48:24.452056,  2, pid=17734, effective(1000, 1000), real(1000, 0)] ../source3/smbd/trans2.c:5810(smb_set_file_dosmode)
  smb_set_file_dosmode: file_set_dosmode of public/soft/dotnetfx.exe failed (Operation not permitted)
McMerph
() автор топика
Ответ на: комментарий от McMerph

Курим man acl_set_file

The effective user ID of the process must match the owner of the file or directory or the process must have the CAP_FOWNER capability for the request to succeed.

От клиента по какой-то причине вместо запроса на удаление сначала приходит запрос на установку ACL(и обламывается по причине, указанной выше). Из под кого запущен корневой smbd? Из под root?

Покажи весь smb.conf. Настроен ли он согласно рекомендациям отсюда?

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от Pinkbyte

В линуксе я плохо разбираюсь. Вроде из под рута запущен.

root@deb-server:~# ps -ef | fgrep smbd
root      6251 24565  0 21:51 ?        00:00:00 /usr/sbin/smbd -D
root      7352  7288  0 22:32 pts/0    00:00:00 grep -F smbd
root     24565     1  0 14:54 ?        00:00:01 /usr/sbin/smbd -D
root     24566 24565  0 14:54 ?        00:00:00 /usr/sbin/smbd -D

smb.conf:


[global]
   workgroup = WORKGROUP
#   wins support = no
;   wins server = w.x.y.z

   dns proxy = no
   security = user

;   interfaces = 127.0.0.0/8 eth0
;   bind interfaces only = yes

   log file = /var/log/samba/log.%m
   max log size = 1000

#   syslog only = no
   syslog = 0
   log level = 0

   panic action = /usr/share/samba/panic-action %d
   server role = standalone server

   passdb backend = tdbsam
   obey pam restrictions = yes

   unix password sync = yes


   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .

   pam password change = yes

   map to guest = bad user

;   logon path = \\%N\profiles\%U
;   idmap uid = 10000-20000
;   idmap gid = 10000-20000
;   template shell = /bin/bash

;   usershare max shares = 100

[homes]
   comment = Home Directories
   browseable = no
   valid users = %S
   read only = yes
   create mask = 0700
   directory mask = 0700
   valid users = %S

[printers]
   comment = All Printers
   browseable = no
   path = /var/spool/samba
   printable = yes
   guest ok = no
   read only = yes
   create mask = 0700

[print$]
   comment = Printer Drivers
   path = /var/lib/samba/printers
   browseable = yes
   read only = yes
   guest ok = no

[data]
  path =/data
#  create mask = 770
#  directory mask = 770
  browseable = yes
  read only = no
  guest ok = no
  
[public]
  path =/data/public
#  create mask = 770
#  directory mask = 770
  nt acl support = yes
  browseable = yes
  read only = no
  guest ok = no

McMerph
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.