关于Linux下s、t、i、a权限

原文地址:关于Linux下s、t、i、a权限 作者:wdrain

文件权限除了r、w、x外还有s、t、i、a权限:

s:文件属主和组设置SUID和GUID,文件在被设置了s权限后将以root身份执行。在设置s权限时文件属主、属组必须先设置相应的x权限,否则s权限并不能正真生效(c h m o d命令不进行必要的完整性检查,即使不设置x权限就设置s权限,chmod也不会报错,当我们ls -l时看到rwS,大写S说明s权限未生效)。Linux修改密码的passwd便是个设置了SUID的程序,普通用户无读写/etc/shadow文件的权限确可以修改自己的密码。

ls -al /usr/bin/passwd
-rwsr-xr-x 1 root root 32988 2008-12-08 17:17 /usr/bin/passwd

我们可以通过字符模式设置s权限:chmod a+s filename,也可以使用绝对模式进行设置:

设置s u i d:将相应的权限位之前的那一位设置为4;
设置g u i d:将相应的权限位之前的那一位设置为2;
两者都置位:将相应的权限位之前的那一位设置为4+2=6。

如:chmod 4764 filename   //设置SUID

t :设置粘着位,一个文件可读写的用户并一定相让他有删除此文件的权限,如果文件设置了t权限则只用属主和root有删除文件的权限,通过chmod +t filename 来设置t权限。

i:不可修改权限  例:chattr u+i filename 则filename文件就不可修改,无论任何人,如果需要修改需要先删除i权限,用chattr -i filename就可以了。查看文件是否设置了i权限用lsattr filename。

a:只追加权限, 对于日志系统很好用,这个权限让目标文件只能追加,不能删除,而且不能通过编辑器追加。可以使用chattr +a设置追加权限。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
lstat是一个Linux下的C语言函数,用于获取文件的状态信息。它与stat函数的功能类似,但是lstat函数可以获取符号链接文件本身的状态信息,而不是符号链接所指向的文件的状态信息。 lstat函数的原型如下: ```c int lstat(const char *pathname, struct stat *statbuf); ``` 其中,pathname参数为要获取状态信息的文件路径,statbuf参数为存储获取到的状态信息的结构体指针。 struct stat结构体是用于存储文件状态信息的,其定义如下: ```c struct stat { mode_t st_mode; /* 文件类型和权限 */ ino_t st_ino; /* i-node 号 */ dev_t st_dev; /* 设备号 */ dev_t st_rdev; /* 特殊设备号 */ nlink_t st_nlink; /* 硬链接数量 */ uid_t st_uid; /* 用户ID */ gid_t st_gid; /* 组ID */ off_t st_size; /* 文件大小(字节) */ time_t st_atime; /* 最后访问时间 */ time_t st_mtime; /* 最后修改时间 */ time_t st_ctime; /* 最后状态改变时间 */ blksize_t st_blksize; /* 文件系统 I/O 缓冲区大小 */ blkcnt_t st_blocks; /* 文件所占块数 */ }; ``` 其中,st_mode成员用于存储文件类型和权限信息,常用的文件类型有: - S_IFREG:普通文件 - S_IFDIR:目录文件 - S_IFLNK:符号链接文件 - S_IFBLK:块设备文件 - S_IFCHR:字符设备文件 - S_IFIFO:FIFO文件 - S_IFSOCK:套接字文件 在获取文件类型时,可以使用位运算符&和S_IFMT常量进行掩码操作,如下所示: ```c switch (sb.st_mode & S_IFMT) { case S_IFREG: // 普通文件处理逻辑 break; case S_IFDIR: // 目录文件处理逻辑 break; case S_IFLNK: // 符号链接文件处理逻辑 break; // 其他文件类型处理逻辑 } ``` 除了文件类型,stat结构体中还包含了文件的其他状态信息,如文件大小、拥有者、访问时间等等。可以根据实际需要获取相应的信息。 总之,lstat函数是一个用于获取文件状态信息的重要函数,可以在Linux下进行C语言编程时使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值