Linux中普通用户如何在root管理权限下创建文件

Linux中普通用户如何在root管理权限下创建文件

如果直接使用普通用户在root拥有的权限目录下直接创建目录,系统会报“权限不够” 的错误

drwxr--r--. 4 root     root    4096 10月 14 20:50 test
[zhangsan@node02 home]$ mkdir test/666.txt
mkdir: 无法创建目录"test/666.txt": 权限不够

普通用户使用sudo 创建 sudo mkdir 文件名时 提示错误“用户名 不在 sudoers 文件中”

drwxr--r--. 4 root     root    4096 10月 14 20:50 test
[zhangsan@node02 home]$ sudo mkdir test/666.txt
[sudo] password for zhangsan: 
Sorry, try again.
[sudo] password for zhangsan: 
zhangsan 不在 sudoers 文件中。此事将被报告。
如果遇见上述问题以下方式可以解决:
-r--r-----. 1 root root 3729 10月 14 20:52 sudoers

1.使用root用户将 /etc/sudoers文件权限改为:

-rwxrwxrwx. 1 root root 3729 10月 14 20:52 sudoers

操作命令是:chmod 777 /etc/sudoers

2.进入sudoers文件中进行修改。
进入sudoers文件修改命令:vim /etc/sudoers
进入文件后 /root 查找到有root的地方

## Allow root to run any commands anywhere 
root    ALL=(ALL)       ALL

/root   

在下方添加你需要给权限的用户名 在这我用zhangsan代替

## Allow root to run any commands anywhere 
root    ALL=(ALL)       ALL
zhangsan        ALL=(ALL)       ALL

写完后 shift+:wq保存

3.因为sudoers文件只能在权限为-r–r-----.时生效,所以保存完毕后需要将sudoers文件权限改回为原来权限。修改命令为: chmod 440 /etc/sudoers

如果觉得修改sudoers文件权限很麻烦 可直接进入第二步 在修改后保存时输入:shift+:wq!
如果不懂上述命令中的 777 或 440代表什么意思的 可以点击下方链接: Linux权限管理
好的,这是一个比较复杂的任务,需要几个步骤来完成。下面是一个基本的算法: 1. 使用os.walk()函数遍历目标文件夹下的所有子文件夹。 2. 找到每个子文件夹的名为"samples"和"sweeps"的文件夹,并将它们的路径记录下来。 3. 对于每个"samples"和"sweeps"文件夹,找到其所有的子文件夹,并将它们的名称记录下来。 4. 对于每个文件夹名称,检查它是否已经在目标文件夹创建。如果没有,则创建一个新的文件夹。 5. 将每个子文件夹的样本文件复制到新创建的文件夹。在复制文件时,需要检查目标文件夹是否已经存在相同的文件,如果存在,则不复制。 下面是一个Python代码实现上述算法: ``` import os import shutil # 定义目标文件夹路径和子文件夹名称 data_dir = "/media/root1/D/Workspace/paper/data/nuscenes-all/train" subdirs = ["samples", "sweeps"] # 记录所有子文件夹的文件夹名称 all_dirs = [] for subdir in subdirs: subdir_path = os.path.join(data_dir, "v1.0-trainval01_blobs", subdir) for root, dirs, files in os.walk(subdir_path): for dir in dirs: all_dirs.append(os.path.join(subdir_path, dir)) # 处理每个文件夹 for dir in all_dirs: # 获取文件夹名称 dir_name = os.path.basename(dir) # 检查目标文件夹是否已经创建了该文件夹 new_dir_path = os.path.join(data_dir, dir_name) if not os.path.exists(new_dir_path): os.makedirs(new_dir_path) # 复制文件到新文件夹 for subdir in subdirs: subdir_path = os.path.join(dir, subdir) for root, dirs, files in os.walk(subdir_path): for file in files: # 检查目标文件夹是否已经存在相同的文件 if not os.path.exists(os.path.join(new_dir_path, subdir, file)): shutil.copy(os.path.join(subdir_path, file), os.path.join(new_dir_path, subdir)) ``` 希望这个代码可以满足您的需求。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值