Linux下修改文件及目录的权限和用户
修改用户和用户组
Linux下修改文件属主可以通过如下函数进行:
#include <unistd.h> int chown(const char *path, uid_t owner, gid_t group); int fchown(int fd, uid_t owner, gid_t group); int lchown(const char *path, uid_t owner, gid_t group);
各函数描述如下:
chown:修改文件的属主,文件通过路径path指定,对于符号链接会进行解析,即如果指定的为符号链接的话,该函数会修改实际文件的属性。
fchown:修改文件的属主,文件通过文件描述符fd指定。
lchown:和chown一样,不同是它不解析符号链接,即如果指定的为符号链接的话,该函数会修改链接的属性,而不是文件的。
修改权限
Linux修改文件权限可以通过如下函数进行:
#include <sys/stat.h> int chmod(const char *path, mode_t mode); int fchmod(int fd, mode_t mode);
chmod:修改文件的权限,文件通过path参数指定的路径名指定,对于符号链接会进行解析,即如果指定的式链接的话,会修改文件的权限。
fchmod:修改文件的权限,文件通过文件描述符fd参数指定。
示例代码
#include <sys/types.h> #include <sys/stat.h> #include <time.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> #include <libgen.h> #include <pwd.h> #include <string.h> #include <fcntl.h> void print_file_info(const char *filename) { struct stat sb; if (lstat(filename, &sb) == -1) { printf("lstat failed. errno: %d, failed reason: %s.\n", errno, strerror(errno)); perror("stat"); exit(EXIT_SUCCESS); } printf("File type: "); switch (sb.st_mode & S_IFMT) { case S_IFBLK: printf("block device\n"); break; case S_IFCHR: printf("character device\n"); break; case S_IFDIR: printf("directory\n"); break; case S_IFIFO: printf("FIFO/pipe\n"); break; case S_IFLNK: printf("symlink\n"); break; case S_IFREG: printf("regular file\n"); break; case S_IFSOCK: printf("socket\n"); break; default: printf("unknown?\n"); break; } printf("I-node number: %ld\n", (long) sb.st_ino); printf("Mode: %lo (octal)\n", (unsigned long) sb.st_mode); printf("Link count: %ld\n", (long) sb.st_nlink); printf("Ownership: UID=%ld GID=%ld\n", (long) sb.st_uid, (long) sb.st_gid); printf("Preferred I/O block size: %ld bytes\n", (long) sb.st_blksize); printf("File size: %lld bytes\n", (long long) sb.st_size); printf("Blocks allocated: %lld\n", (long long) sb.st_blocks); printf("Last status change: %s", ctime(&sb.st_ctime)); printf("Last file access: %s", ctime(&sb.st_atime)); printf("Last file modification: %s", ctime(&sb.st_mtime)); return; } int main(int argc, char *argv[]) { int ret; int fd; struct passwd *pwd; if (argc != 3) { printf("usage: create a symbolic link from second file to first file. \n%s <source_file_name> <dest_file_name>.\n", basename(argv[0])); return -1; } pwd = getpwuid(getuid()); if (NULL == pwd) { printf("getpwnam failed, errno: %d, fail reason: %s.\n", errno, strerror(errno)); return -1; } printf("user info: \n"); printf("user name: %s.\n", pwd->pw_name); printf("user password: %s.\n", pwd->pw_passwd); printf("user uid: %d.\n", pwd->pw_uid); printf("user group id %d.\n", pwd->pw_gid); printf("real user name: %s.\n", pwd->pw_gecos); printf("home directory: %s.\n", pwd->pw_dir); printf("shell program: %s.\n", pwd->pw_shell); ret = symlink(argv[1], argv[2]); if (0 != ret) { printf("symlink failed. errno: %d, fail reason: %s.\n", errno, strerror(errno)); //return -1; } printf("========after symlink======\n"); print_file_info(argv[2]); ret = chmod(argv[2], 0644); if (0 != ret) { printf("chmod failed. errno: %d, fail reason: %s.\n", errno, strerror(errno)); //return -1; } printf("========after chmod======\n"); print_file_info(argv[2]); fd = open(argv[2], O_RDONLY); if (fd < 0) { printf("open failed. errno: %d, fail reason: %s.\n", errno, strerror(errno)); return -1; } ret = fchmod(fd, 0755); if (0 != ret) { printf("fchmod failed. errno: %d, fail reason: %s.\n", errno, strerror(errno)); return -1; } printf("========after fchmod======\n"); print_file_info(argv[2]); ret = chown(argv[2], pwd->pw_uid, pwd->pw_gid); if (0 != ret) { printf("chown failed. errno: %d, fail reason: %s.\n", errno, strerror(errno)); //return -1; } printf("========after chown======\n"); print_file_info(argv[2]); //unlink(argv[2]); return 0; }
相关推荐
实验目的 1、掌握Linux文件系统权限的设置 2、掌握linux用户帐号与组管理 3、掌握linux 文件共享的设置方法 4、掌握linux 文件共享的权限设置方法
Linux 是一个多用户操作系统,它允许多个用户同时登录和工作。因此 Linux 将一个文件或目录与一个用户或组联系起来。访问控制列表(ACL:Access Control List)为计算机提供更好的访问控制,它的作用是限制包括root...
Linux文件权限详解,Linux系统中不仅是对用户与组根据UID,GID进行了管理,还对Linux系统中的文件,按照用户与组进行分类,针对不同的群体进行了权限管理,用他来确定谁能通过何种方式对文件和目录进行访问和操作。
今天遇到的问题,如何一个用户如www的权限复制给我的用户? 目录的权限表示:dwrxr–r– ... 您可能感兴趣的文章:Linux中改变文件权限的chmod命令详析修改linux文件权限命令:chmod命令详解Linux 下目录文件权限(命
1.2 linux文件系统介绍 2.更改目录/文件权限 2.1 用户和用户组的相关指令 2.2 chgrp命令 2.3 chown命令 2.4 chmod命令 2.5 umask命令 1.文件属性 1.1 ls命令 ls命令是我们最常用的命令之一,用来查看当前目录下的...
Linux文件管理; Linux文件和目录的权限管理和区别; Linux文件和目录的内容操作; Linux文件系统EXT2的详解
Linux操作系统是现在流行的一种免费的...在研究了Linux文件系统及网络传输的原理基础上系统主要实现了对文件的管理,包括创建、删除、重命名、复制、移动和文件权限的修改的功能,以及对字符的搜索和对文件的网络传输。
Linux操作系统试题及答案.pdfLinux操作系统试题及答案.pdfLinux操作系统试题及答案.pdfLinux操作系统试题及答案.pdfLinux操作系统试题及答案.pdfLinux操作系统试题及答案.pdf
Linux 是一个多用户操作系统,它允许多个用户同时登录和工作。因此 Linux 将一个文件或目录与一个用户或组联系起来。访问控制列表(ACL:Access Control List)为计算机提供更好的访问控制,它的作用是限制包括root...
模拟Linux文件系统,实现了基本的文件操作和用户管理系统,加上了权限管理。 默认用户名root 默认密码xiaox 使用说明登陆后键入help即可见
这个文件记录了Linux系统中每个用户的一些基本属性,并且对所有用户可读。/etc/passwd中每一行记录对应一个用户,每行记录又被冒号分割,其格式和具体含义如下: 用户名:口令:用户标识号:组标识号:注释性描述:主目录...
1、 通过实验了解和熟悉Linux文件系统 2、 掌握文件操作命令 3、 了解文件与目录的默认权限,掌握文件权限的设置 4、 掌握文件的链接 二、 开发工具和运行环境 1、虚拟机VMware 2、Linux操作系统 三、 实验内容 ...
小白课,总结得很好、很容易看懂,看完一遍你就入门了! 讲得都是精华,IT大佬当年... Linux 文件权限与目录权限:chmod chown bash、shell 查找、比较、统计、甄别文件:grep find tee等 makefile ssh、samba、 gcc
在Linux操作系统中,root的权限是最高的,也被称为超级权限的拥有者。普通用户无法执行的操作,root用户都能完成,所以也被称之为超级管理用户。在系统中,每个文件、目录和进程,都归属于某一个用户,没有用户许可...
用户和组管理、第八章Linux文件系统权限、第九章管理Linux的联网、第十章管理Linux软件包和进程、第十一章 磁盘管理。 2、适合人群:目前学习Linux的人群(属于Linux学习的基础,所必要了解的东西) 3、能学到什么?...
Linux系统每个文件都有三种类型用户ID:文件拥有者ID、同组用户ID、所有剩下用户ID。并且每种类型用户都有三种类型的访问权限:读、写、执行。文中还介了进程的分类及进程读/写/执行文件的过程。
《Mysql 最后程序的总结—— Linux系统C语言编程连接MySql数据库实现的用户角色权限管理系统》 修改的问题: 1、新增 添加用户组模块; 2、新增 显示用户组模块; 3、修改 新增用户模块 选择 其所属用户组 并把...
在工作或者学习的时候,我们常常会遇到这样的需求,限制一个Linux用户,让他只能在指定的目录下进行添加、修改、删除操作,并且只能使用sftp登录服务器,不能用ssh操作。这些可以通过配置sftp服务实现。 方法如下 ...
3、Linux操作系统文件目录 4、Xshel1和Xftp的安装 5、Vi和Vim编辑器的使用 6、Linux用户管理相关操作 7、Linux运行级别和帮助指令 8、Linux指令之文件目录、时间日期、搜索查找、压缩和解压 9、Linux组管理和...
用户数字修改文件权限:chmod chmod 665 syge.txt修改目录的权限:chmod –R 递归修改文件权限修改权限的字符表示法:chmod [用户