精华内容
下载资源
问答
  • 可是因为操做系统的安全限制,会禁止经过匿名方式访问共享文件的,这种状况下只须要进行简单设置便可实现共享文件匿名访问、不须要密码便可访问服务器共享文件了。具体设置以下: 一、启用访客帐户: 启用本地...

    在企业局域网咱们设置了共享文件的状况下,经常须要匿名访问,也就是不须要输入密码便可访问电脑共享文件。可是因为操做系统的安全限制,会禁止经过匿名方式访问共享文件的,这种状况下只须要进行简单设置便可实现共享文件的匿名访问、不须要密码便可访问服务器共享文件了。具体设置以下:

     
    一、启用访客帐户: 启用本地guest账户,默认它是禁用的。(若是不启用guest账户,而使用第4步,将会出现访问时出现对话框,要求输入用户名和密码,而且Guest用户名呈灰色不可选状态,只能输入密码)。方法:右键点击计算机-管理-本地用户和组-用户-右键点击“guest”,而后取消勾选“帐户已停用”这里的对勾,并点击“应用”、“肯定”便可。以下图所示:


    二、开始-运行-gpedit.msc,回车,打开组策略编辑器。

    三、设置guest访问策略: 依次展开:计算机配置-Windows设置-安全设置-本地策略-用户权限分配-在拒绝从网络访问这台计算机设置中删除guest帐户若是有的话),并点击“肯定”。以下图所示:

    四、设置本地共享和安全模式: 依次展开:计算机配置-Windows设置-安全设置-本地策略-安全选项-将“网络访问:本地账户的共享和安全模式”,修改成“仅来宾-本地账户以来宾身份验证”,将“账户:使用空白密码的本地账户只容许经过控制台登陆”,设置为已禁用。以下图所示:

    五、更新策略: gpupdate /force,以下图所示:


    六、共享文件夹: 设置“共享权限”中 添加everyone 用户(重复前面所述步骤便可)。方法:选择共享文件,而后点击共享,再点击“高级共享”等。


        而后勾选“共享此文件夹”,并点击下面的“权限”,在弹出的对话框中点击“添加”,而后在弹出的对话框中输入“everyone”,并点击“肯定”,这样就成功添加了“everyone”帐户,以下图所示:

    至此,咱们就成功实现了访问共享文件不须要密码、实现了匿名访问共享文件、访问共享不输入密码的操做。

    展开全文
  • 前言:讲道理来smaba作为一个简单的服务,而且不经常用到,是没必要写成一片博客的。不过在此过程中还是遇到...基于用户认证的samba服务暂且不提,主要讲讲如何实现匿名共享,也就是无论windows访问共享还是其他linu...

    前言:

    讲道理来smaba作为一个简单的服务,而且不经常用到,是没必要写成一片博客的。不过在此过程中还是遇到不少坑,全部踩过之后,记录下来反而感觉还有有那么一丝丝必要的,

    正文:

    说道文件共享,nfs也基本满足需求了,不过如果想实现linux与windows之间的文件共享,nfs就满足不了了。基于用户认证的samba服务暂且不提,主要讲讲如何实现匿名共享,也就是无论windows访问共享还是其他linux访问共享都不用密码,话不多说开整!

    第一步肯定是先安装必要的服了咯~yum install samba samba-client samba-comm

    smaba就是我们要用到的服务端程序,samba-client字面意思很明显就是客户端程序,samba-comm主要用到的是testparm语法检查指令。

    接着启动服务service smb start                 #很明显centos6系统哈

    然后就是写配置文件了,我们配置文件分为两大部分[global]标识下的是全局配置,对samba本身的配置,[共享资源名] 特定的共享资源名下的就是专有的共享配置。我们先来修改全局配置。[global]

    workgroup=xiaofengfeng            #工作组名

    security = share                  #以匿名的方式共享

    map to quest = Bad User           #这很重要!!!!下面详细说明

    map to quest = Bad User这条配置非常重要,有了这条配置,windows才能匿名访问samba共享,且不会提示你输入密码!!!!非常重要哦。不过如果你用testparm会提示Unknown parameter encountered: "map to quest",不用管它!接下来就是共享配置了![project]

    comment = smbuser's project

    path    = /home/project                   #要共享的目录路径

    browseable = yes              #是否能查看到此共享,如果设置为no就不能在客户端显示

    read only = yes    #设置为只读,与writable不要同时存在,如果同时存在以最后的最主

    writable = yes                #是否可以在共享目录写入文件

    guest ok = yes

    我们可以用testparm命令来确保配置没问题。博主共享配置测试配置文件测试输出如下:[project]

    comment = smbuser's project

    path = /home/project

    read only = No

    guest ok = Yes

    接下来接是重启服务,并且确保/home/project的权限能让nobody读或写,确保iptables放行samba的端口,确保已经关闭了selinux。这些都是坑!!!!!!!!为了确保能访问就做如下配置:service restart smb

    iptables -F

    setenforce 0

    chomd 777 /home/project

    根据自己的能力可对上面的权限进行限制。到此就实现了windows与linux之间的共享啦~~~

    我们可以用smbclient -L \\127.0.0.1来测试samba服务是否可访问。提示输入密码直接按回车键就好~输出信息如下:Domain=[XIAOFENGFENG] OS=[Unix] Server=[Samba 3.6.23-33.el6]

    Sharename       Type      Comment

    ---------       ----      -------

    IPC$            IPC       IPC Service (Samba Server Version 3.6.23-33.el6)

    project         Disk      smbuser's project

    Domain=[XIAOFENGFENG] OS=[Unix] Server=[Samba 3.6.23-33.el6]

    Server               Comment

    ---------            -------

    Workgroup            Master

    ---------            -------

    在linux端可以把共享文件挂载到某个目录下,比如mount -t cifs //172.16.254.182/project /mnt    #172.16.254.182为samba服务器主机

    在windows中可以win+r调出"运行" 输入\\172.16.254.182,就可访问linux共享啦~~~

    win键就是那个开始键~~

    dfee9b0d948fb120ffc9e18aca523309.png

    50148499b710056325aff62e0ce7976b.png

    展开全文
  • Android匿名共享内存

    2021-03-01 18:15:51
    1.ashmem_create_region创建匿名共享内存区域,本质是调用open系统调用 2.ioctl设置共享内存的名字和大小,设置的名字为/dev/ashmem/,名字的存在就为了能够让其他人找到目标 3.mmap映射文件中的虚拟内存以及物理...

    ashmem的使用流程如下:

    1.ashmem_create_region创建匿名共享内存区域,本质是调用open系统调用
    2.ioctl设置共享内存的名字和大小,设置的名字为/dev/ashmem/,名字的存在就为了能够让其他人找到目标
    3.mmap映射文件中的虚拟内存以及物理内存
    4.直接对着这一块地址区域读写。
    其中ioctl必须设置名字和大小,不然没办法进行映射,因为在映射之前进行了校验。

    那么ashmem和Binder有什么区别呢?
    Binder的mmap时候已经通过伙伴系统绑定了物理页和虚拟内存之间的联系,而Ashmem则是通过缺页中断,调用相关的函数才进行绑定。换句话说Ashmem是按需加载,而Binder则是一开始就通过mmap就分配好。

    Ashmem就是打通一块大的内存通道方便进程之间通信大数据。而Binder更加倾向小规模的指令,并且这种指令有明确的方向和顺序,保证每一个指令的可靠性。Binder为了保证每一个指令的可靠做了极其复杂的数据结构进行管理。

    展开全文
  • [Android系统匿名共享内存Ashmem(Anonymous Shared Memory)在进程间共享的原理分析](http://blog.csdn.net/luoshengyang/article/details/6666491)在前面一篇文章Android系统匿名共享内存Ashmem(Anonymous Shared ...

    原文出处——>[Android系统匿名共享内存Ashmem(Anonymous Shared Memory)在进程间共享的原理分析](http://blog.csdn.net/luoshengyang/article/details/6666491)

    在前面一篇文章Android系统匿名共享内存Ashmem(Anonymous Shared Memory)驱动程序源代码分析中,我们系统地介绍了Android系统匿名共享内存的实现原理,其中着重介绍了它是如何辅助内存管理系统来有效地管理内存的,在再前面一篇文章Android系统匿名共享内存Ashmem(Anonymous Shared Memory)简要介绍和学习计划中,我们还提到,Android系统匿名共享内存的另外一特点是通过Binder进程间通信机制来实现进程间共享的,本文中,将详细介绍Android系统匿名共享内存是如何使用Binder进程间通信机制来实现进程间共享的。

    由于Android系统匿名共享内存在进程间共享的原理涉及到Binder进程间通信机制的相关知识,所以希望读者在继续阅读本文之前,最好对Android系统的Binder进程间通信机制有一定的了解,具体可以参考Android进程间通信(IPC)机制Binder简要介绍和学习计划这篇文章。

    在Android系统匿名共享内存Ashmem(Anonymous Shared Memory)简要介绍和学习计划这篇文章中,我们举了一个例子来简要地介绍了Android系统的匿名共享内存机制及其使用方法,在这篇文章中,我们继续以这个实例来说明Android系统的匿名共享内存是如何使用Binder进程间通信机制来实现进程间共享的。为了方便描述,结合前面的Binder进程间通信机制知识,我们通过下面这个序列图来总结这个实例中的匿名共享内存文件的文件描述符在进程间传输的过程:

    ![](http://hi.csdn.net/attachment/201108/7/0_1312688202Zh8N.gif)

    这里, 我们需要关注的便是虚线框部分了,它在Binder驱动程序中实现了在两个进程中共享同一个打开文件的方法。我们知道,在Linux系统中,文件描述符其实就是一个整数。每一个进程在内核空间都有一个打开文件的数组,这个文件描述符的整数值就是用来索引这个数组的,而且,这个文件描述符只是在本进程内有效,也就是说,在不同的进程中,相同的文件描述符的值,代表的可能是不同的打开文件。因此,在进程间传输文件描述符时,不能简要地把一个文件描述符从一个进程传给另外一个进程,中间必须做一过转换,使得这个文件描述在目标进程中是有效的,并且它和源进程的文件描述符所对应的打开文件是一致的,这样才能保证共享。

    在浅谈Service Manager成为Android进程间通信(IPC)机制Binder守护进程之路一文中,我们介绍了用来传输的Binder对象的数据结构struct flat_binder_object,它定义在**kernel/common/drivers/staging/android/binder.h** 文件中:

    ~~~

    /*

    * This is the flattened representation of a Binder object for transfer

    * between processes. The 'offsets' supplied as part of a binder transaction

    * contains offsets into the data where these structures occur. The Binder

    * driver takes care of re-writing the structure type and data as it moves

    * between processes.

    */

    struct flat_binder_object {

    /* 8 bytes for large_flat_header. */

    unsigned long type;

    unsigned long flags;

    /* 8 bytes of data. */

    union {

    void *binder; /* local object */

    signed long handle; /* remote object */

    };

    /* extra data associated with local object */

    void *cookie;

    };

    ~~~

    域type是一个枚举类型,它的取值范围是:

    ~~~

    enum {

    BINDER_TYPE_BINDER = B_PACK_CHARS('s', 'b', '*', B_TYPE_LARGE),

    BINDER_TYPE_WEAK_BINDER = B_PACK_CHARS('w', 'b', '*', B_TYPE_LARGE),

    BINDER_TYPE_HANDLE = B_PACK_CHARS('s', 'h', '*', B_TYPE_LARGE),

    BINDER_TYPE_WEAK_HANDLE = B_PACK_CHARS('w', 'h', '*', B_TYPE_LARGE),

    BINDER_TYPE_FD = B_PACK_CHARS('f', 'd', '*', B_TYPE_LARGE),

    };

    ~~~

    这里我们要介绍的Binder对象的type便是BINDER_TYPE_FD了,要传输的文件描述符的值保存在handle域中。

    在Android系统进程间通信(IPC)机制Binder中的Server启动过程源代码分析一文中,我们详细介绍了Binder对象在进程间通信传输的完整过程,这里就不再详述了,有兴趣的读都可以回过头去参考一下。这里,我们只关注文件描述符类型的Binder对象在Binder驱动程序中的相关处理逻辑。

    文件描述符类型的Binder对象在Binder驱动程序中的相关处理逻辑实现在binder_transact函数,这个函数定义在**kernel/common/drivers/staging/android/binder.c**文件中:

    ~~~

    static void

    binder_transaction(struct binder_proc *proc, struct binder_thread *thread,

    struct binder_transaction_data *tr, int reply)

    {

    struct binder_transaction *t;

    struct binder_work *tcomplete;

    size_t *offp, *off_end;

    struct binder_proc *target_proc;

    struct binder_thread *target_thread = NULL;

    struct binder_node *target_node = NULL;

    struct list_head *target_list;

    wait_queue_head_t *target_wait;

    struct binder_transaction *in_reply_to = NULL;

    struct binder_transaction_log_entry *e;

    uint32_t return_error;

    ......

    offp = (size_t *)(t->buffer->data + ALIGN(tr->data_size, sizeof(void *)));

    ......

    off_end = (void *)offp + tr->offsets_size;

    for (; offp < off_end; offp++) {

    struct flat_binder_object *fp;

    ......

    fp = (struct flat_binder_object *)(t->buffer->data + *offp);

    switch (fp->type) {

    ......

    case BINDER_TYPE_FD: {

    int target_fd;

    struct file *file;

    if (reply) {

    if (!(in_reply_to->flags & TF_ACCEPT_FDS)) {

    binder_user_error("binder: %d:%d got reply with fd, %ld, but target does not allow fds\n",

    proc->pid, thread->pid, fp->handle);

    return_error = BR_FAILED_REPLY;

    goto err_fd_not_allowed;

    }

    } else if (!target_node->accept_fds) {

    binder_user_error("binder: %d:%d got transaction with fd, %ld, but target does not allow fds\n",

    proc->pid, thread->pid, fp->handle);

    return_error = BR_FAILED_REPLY;

    goto err_fd_not_allowed;

    }

    file = fget(fp->handle);

    if (file == NULL) {

    binder_user_error("binder: %d:%d got transaction with invalid fd, %ld\n",

    proc->pid, thread->pid, fp->handle);

    return_error = BR_FAILED_REPLY;

    goto err_fget_failed;

    }

    target_fd = task_get_unused_fd_flags(target_proc, O_CLOEXEC);

    if (target_fd < 0) {

    fput(file);

    return_error = BR_FAILED_REPLY;

    goto err_get_unused_fd_failed;

    }

    task_fd_install(target_proc, target_fd, file);

    if (binder_debug_mask & BINDER_DEBUG_TRANSACTION)

    printk(KERN_INFO " fd %ld -> %d\n", fp->handle, target_fd);

    /* TODO: fput? */

    fp->handle = target_fd;

    } break;

    ......

    }

    }

    ......

    }

    ~~~

    这里,我们先明确一下在Android系统匿名共享内存Ashmem(Anonymous Shared Memory)简要介绍和学习计划这篇文章中所举的例子获取匿名共享内存文件的文件描述符的场景。匿名共享内存文件是在Server进程创建的,Client通过IMemoryService.getFileDescriptor去获取Server进程所创建的匿名共享内存文件的文件描述符,Server进程在返回这个文件描述符的过程中进入到Binder驱动程序,即这里的binder_transact函数。因此,这里的当前执行binder_transact函数的进程是Server进程,即源进程是Server进程,而目标进程是Client进程,就是这里的target_proc所表示的进程了。

    函数binder_transaction处理文件描述符类型的Binder对象就在中间的for循环里面。

    首先是获得Binder对象,并保存在本地变量fp中:

    ~~~

    fp = (struct flat_binder_object *)(t->buffer->data + *offp);

    ~~~

    文件描述符的值就保存在fp->handle中,通过fget函数取回这个文件描述符所对应的打开文件结构:

    ~~~

    file = fget(fp->handle);

    ~~~

    这里的file是一个struct file指针,它表示一个打开文件结构。注间,在Linux系统中,打开文件结构struct file是可以在进程间共享的,它与文件描述符不一样。

    接着在目标进程中获得一个空闲的文件描述符:

    ~~~

    target_fd = task_get_unused_fd_flags(target_proc, O_CLOEXEC);

    ~~~

    现在,在目标进程中,打开文件结构有了,文件描述符也有了,接下来就可以把这个文件描述符和这个打开文件结构关联起来就可以了:

    ~~~

    task_fd_install(target_proc, target_fd, file);

    ~~~

    由于这个Binder对象最终是要返回给目标进程的,所以还要修改fp->handle的值,它原来表示的是在源进程中的文件描述符,现在要改成目标进程的文件描述符:

    ~~~

    fp->handle = target_fd;

    ~~~

    这样,对文件描述符类型的Binder对象的处理就完成了。目标进程拿到这个文件描述符后,就可以和源进程一起共享打开文件了。

    至此,Android系统匿名共享内存利用Binder进程间通信机制来实现进程间共享的学习就结束了,整个Android系统匿名共享内存机制的学习也完成了,希望对读者有所帮助,重新学习Android系统匿名共享内存机制请回到Android系统匿名共享内存Ashmem(Anonymous Shared Memory)简要介绍和学习计划一文。

    展开全文
  • 总结Android匿名共享内存多个进程实现共享, 那么每个进程都要拿到这个/dev/ashmem打开的文件描述符 通过msghdr这个结构体加上sendmsg和recvmsg实现文件描述符的进程间传递 之所以要进程间传递文件描述符,是因为...
  • 匿名共享内存(Ashmem)是个不错的选择,它不仅可以减少内存复制的次数,还没有内存大小的限制。这篇文章介绍在 Java 层如何使用匿名共享内存在进程间传递数据。1. 简述Android 的 匿名共享内存(Ashmem) 基于 Linux ...
  • 匿名共享内存匿名共享内存的实现是已Ashmem驱动程序为基础所构建起来的一套方案,基于linux的临时文件系统tmpfs.ashmem系统大概分成三层,如下: 最下方的是kernel层,也就是我们即将介绍的ashmem驱动程序,在启动时...
  • samaba:使用smb协议的应用程序 主要用于文件共享 区别: nfs实现同系统之间的共享 linux--linux samba服务实现的是不同系统 linux--windows 使用tcp或者udp传输 采用C/S架构 nfs 自动 文件系统类型 nfs samaba ...
  • Android提供了一个高效的共享内存机制。如果应用中涉及到在多个进程间交换数据时使用Android提高的共享内存机制将会大大的提高效率。但是也许是出于安全考虑,在应用层使用共享内存机制将会遇到很多障碍,这篇文章...
  • 从MemoryFile字面上看出,共享内存被抽象成了文件,不过本质也是如此,就是在tmpfs临时文件系统中创建一个临时文件,(只是创建了节点,而没有看到实际的文件)该文件与Ashmem驱动程序创建的匿名共享内存对应,可以...
  • 在Android系统中,提供了独特的匿名共享内存子系统Ashmem(Anonymous Shared Memory),它以驱动程序的形式实现在内核空间中。它有两个特点,一是能够辅助内存管理系统来有效地管理不再使用的内存块,二是它通过Binder...
  • 本文介绍深度Deepin系统下访问Windows共享资料的脚本,前提是以Windows共享匿名访问。前言网上的有些Deepin下访问Windows共享文件的指导操作有些麻烦,所以需要下面这个小脚本来处理类似的问题。这里是以Windows...
  • 设置不需要密码验证的共享文件访问权限,也即匿名访问共享文件,方法如下:默认情况,在同一工作组模式下,访问Windows 2003 server机器中共享的文件夹时,由于本地安全策略的限制,在输入UNC路径后会提示输入具有...
  • 必须关闭防火墙(systemctl stop firewalld....2、进入samba配置文件目录 [root@ljh ~]# cd /etc/samba/ 3、将smb.conf备份到smb.conf.bak [root@ljh samba]# mv smb.conf smb.conf.bak 4、去除注释 [root@lj.
  • 网络访问: 限制对命名管道和共享匿名访问04/01/2016本文内容介绍了有关“网络访问: 限制对命名管道和共享匿名访问”安全策略设置的最佳做法、位置、值、策略管理和安全注意事项。参考此策略设置启用或禁用限制...
  • 安装Sambayuminstall samba samba-client samba-common -y备份原始的Samba配置文件:mv/etc/samba/smb.conf/etc/samba/smb.conf.bak編輯conf文件:vim /etc/samba/smb.conf[global]workgroup = WORKGROUPserver ...
  • 1. 简述Android 的 匿名共享内存(Ashmem) 基于 Linux 的共享内存,都是在临时文件系统(tmpfs)上创建虚拟文件,再映射到不同的进程。它可以让多个进程操作同一块内存区域,并且除了物理内存限制,没有其他大小限制。...
  • 如果你想在共享文件的时候方便一点(只要互相设置信任就不用先进行身份验证)就禁用,如果为了安全还是启用吧。但是你说重起之后又还原了,那你的XP系统有问题。以下是微软官方的说明(比较罗嗦):...
  • public MemoryFile(String name, int length) throws ...//打开"/dev/ashmem"设备文件mFD = native_open(name, length);if (length > 0) {//将打开的"/dev/ashmem"设备文件映射到进程虚拟地址空间中mAddress = n...
  • 进程间通信进程间通信的作用管道匿名管道命令感受匿名管道从内核角度去解释匿名管道代码创建匿名管道从PCB角度分析命名管道共享内存消息队列&信号量 进程间通信的作用 由于进程独立性的存在,两个进程想要直接...
  • win10 无法匿名访问SMB 共享文件夹 亲测有效一、 RS3或以上,需要用这个注册表,才能使win10像win7一样匿名访问其他电脑。 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\...
  • 一个简单的例子,匿名用户可读可写的实现;第一步: 更改smb.conf我们来实现一个最简单的功能,让所有用户可以读写一个Samba 服务器共享的一个文件夹;我们要改动一下smb.conf;首先要备份一下smb.conf文件;[root@...
  • Samba是开源软件项目之一,可以解决不同系统之间的文件访问问题,从而使得跨平台的文件共享更加容易实现。实验目的:安装samba服务,使得linux和windows不同平台可以进行文件共享。实验环境:一台redhat6.5、一台win...
  • openwrt设置网络共享

    千次阅读 2021-05-04 14:09:05
    装一下图的顺序即可 先看下磁盘的... 如果要匿名用户也拥有可读写权限,在ttyd或者ssh连接下,把文件夹的权限再提高下 chmod 777 /mnt/sda3 Note:其他一些命令: ls 显示所有文件, ll 显示文件夹权限 mkdir 新建文件夹
  • WindowsServer2012是微软新一代的文件服务器操作系统,各项功能大大增强,很多企业也纷纷用Server2012做文件服务器,共享文件供局域网用户访问。那么,具体如何发挥Server2012在文件共享方面的功能呢,这就需要详细...
  • 共享匿名映射实例 mmap_negtivefd.c 当使用参数 fd = -1 且 flags = MAP_ANONYMOUS | MAP_SHARED 时,创建的mmap 映射是共享匿名映射. 共享匿名映射让相关进程共享一块内存区域,通常用于父子进程之间的通信. 创建...
  • 源码位置:./system/core/libcutils/ashmem-dev.cpp 主要方法 ashmem_create_region :向ashmem驱动程序请求为应用程序创建一块匿名共享内存,并且放回它的文件描述符。 ashmem_set_prot_region:用来设置匿名共享...
  • Android 匿名共享内存 Ashmem(c 库接口)AshmemAndroid 系统的匿名共享内存 Ashmem 驱动程序利用了 Linux 的共享内存子系统导出的接口来实现.在 Android 系统中, 匿名共享内存也是进程间通信方式的一种.相比于 malloc...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 98,730
精华内容 39,492
关键字:

匿名共享文档