没有写权限

本文介绍了解决Spring框架中出现的Writeoperationsarenotallowedinread-onlymode异常的方法。通过配置事务拦截器和自动代理,可以有效避免该异常的发生。
org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.NEVER) - turn your Session into FlushMode.AUTO or remove 'readOnly' marker from transaction definition

出现这种异常,我的解决方法是:

在ApplicationContext.xml中配置
<!--配置事务拦截器-->
<bean id="transactionInterceptor"
class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionManager" ref="transactionManager" />
<property name="transactionAttributes">
<props>
<prop key="add*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
第一个bean的prop是dao中的方法名首单词,如:
public void addLinkMan() {...}中的add。

<!-- 配置事物自动代理 -->
<bean
class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames">
<list>
<value>linkManDAOImpl</value>
</list>
</property>
<property name="interceptorNames">
<list>
<value>transactionInterceptor</value>
</list>
</property>
</bean>

第二个bean中第一个property中的value定义Spring中bean的id,如
<bean id="linkManDAOImpl" class="com.shortmassage.dao.LinkManDAOImpl">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
中的id="linkManDAOImpl"。
第二个property中value定义定义第一个bean的id,关联起来。
SFTP(Secure File Transfer Protocol)是通过SSH(Secure Shell)协议实现的一种安全文件传输方式。在SFTP中,文件和目录的权限控制依赖于底层操作系统的文件系统权限,通常是Linux或Unix系统。因此,如果一个用户尝试在一个没有权限的目录中入文件,通常会遇到权限被拒绝的错误。 ### SFTP目录无权限是否可以入文件 1. **一般情况下无法入** 如果一个用户对某个目录没有权限,则无法在该目录中创建、修改或删除文件。这是由Linux/Unix文件系统的权限机制决定的。例如,若目录权限设置为 `755`,则只有所有者具有权限,其他用户只能读和执行。[^3] 2. **特殊权限设置可能允许入** 在某些特殊配置下,用户可能通过其他方式获得权限。例如: - 使用 `setfacl` 命令为特定用户或组设置访问控制列表(ACL),从而绕过默认的权限限制。 - 系统管理员可以通过修改 `ChrootDirectory` 配置项,将用户的SFTP会话限制在特定目录,并为该目录分配适当的权限。[^1] 3. **SFTP服务器配置影响权限行为** OpenSSH 的 SFTP 子系统可以通过配置文件(如 `/etc/ssh/sshd_config`)进行精细的权限控制。例如,使用 `Match User` 和 `ForceCommand internal-sftp` 可以将用户限制在特定目录中,并通过 `ChrootDirectory` 设置根目录。如果目录权限配置不当,可能导致用户无法入文件。 4. **用户权限和组权限的交互作用** 文件和目录的权限由三部分组成:所有者(user)、组(group)和其他(others)。如果用户属于某个组,并且该组对目录具有权限,则即使所有者没有权限,用户仍然可以入文件。[^4] 5. **使用特殊工具或脚本进行权限修改** 在某些情况下,用户可能通过执行脚本或使用工具(如 `chmod` 或 `chown`)来修改目录权限。然而,这通常需要管理员权限,普通用户无法直接执行此类操作。[^5] ### 示例:检查目录权限 可以通过以下命令查看目录的权限: ```bash ls -ld /path/to/directory ``` 输出示例: ```bash drwxr-xr-x 2 user group 4096 Oct 10 10:00 /path/to/directory ``` - `drwxr-xr-x` 表示目录权限: - `d` 表示这是一个目录。 - `rwx` 表示所有者(user)有读、、执行权限。 - `r-x` 表示组(group)有读和执行权限,但没有权限。 - `r-x` 表示其他(others)也有读和执行权限。 如果用户不是所有者,并且不属于该组,则无法入该目录。[^4] ### 总结 在大多数情况下,如果SFTP用户对某个目录没有权限,则无法入文件。然而,通过合理的权限配置(如ACL或特殊组权限),可以在一定程度上绕过这一限制。此外,SFTP服务器的配置也会影响用户的权限行为。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值