jjzjj

linux - 如何获得唯一的 `uid` ?

我正在制作一个应该创建ftp用户的bash脚本。ftpasswd--passwd--file=/usr/local/etc/ftpd/passwd--name=$USER--uid=[xxx]--home=/media/part1/ftp/users/$USER--shell=/bin/false唯一提供给脚本的参数是用户名。但是ftpasswd还需要uid。我如何获得这个号码?有没有一种简单的方法来扫描passwd文件并获取最大数量,增加它并使用它?也许可以从系统中获取该号码? 最佳答案 除了读取/etc/passwd,您还可以使

c - 确保系统调用中的 UID/GID 检查在 RCU 临界区中执行

任务我有一个我为我的RaspBerryPi2编写的小内核模块,它实现了一个额外的系统调用来生成功耗指标。我想修改系统调用,以便只有在特殊用户(例如“root”或用户“pi”)发出时才会调用它。否则,调用将跳过其主体部分并返回成功。背景工作我已经详细阅读了这个问题,I'vefoundasimilarquestiononSO,但从我的角度来看,它存在很多问题(如下所述)。问题链接的问题指出structtask_struct包含指向structcred的指针元素,如linux/sched.h中所定义和linux/cred.h。我的系统上不存在这两个header中的后者,而前者未显示指向str

Linux 伪代码中有效的、真实的、保存的、文件系统 UID 操作

我花了一些时间在Groovy中编写一些小代码,以使LinuxUID操作对我自己来说不那么困惑,因为手册页很乱。结果是一个TestCase,旨在显示在setuid、seteuid、setfsuid、setreuid和setresuid调用的幕后发生了什么。未考虑有关返回错误代码(或未返回)的详细信息。问题基本上是:我错过了什么吗?/***ThisissomeGroovycodetoexplainLinuxprivilegehandling*Themanipulabledatastructureis"PermVector",anditismanipulatedthrougha*TestCa

c - 在 linux 系统上打印文件的 uid

我正在学习C编程。我正在尝试使我自己的程序类似于ls命令,但选项较少。我正在做的是将输入目录/文件名作为参数,然后使用dirent结构(如果是目录)。之后,我使用stat()获取文件的所有信息,但是当我使用write()打印这些值时,这是我的问题,但是当我想使用printf()打印这些值时,我收到警告:格式“%ld”需要类型“longint”,但参数2的类型为“__uid_t”。我不知道应该用什么代替%ld以及其他特殊数据类型。 最佳答案 __uid_t没有格式说明符,因为这种类型是系统特定的,不是C标准的一部分,因此printf不

linux -/proc/pid/loginuid 中的某些 uid 很奇怪

我正在分析unix/linux中的procfs,一些进程的loginuid真的很奇怪。一些pid作为loginuid有一个很大的数字:4294967295。它们是守护进程还是系统事件还是怎么回事?#cat/proc/11071/loginuid4294967295 最佳答案 4294967295只是(unsignedlong)-1。-1表示未设置loginuid。对于不是由任何登录进程(例如守护进程)生成的进程,这是正常行为。loginuid默认为-1;每当您登录时(在tty中/在DM中/通过ssh),pam_loginuid模块会

linux - 有没有办法获取unix套接字连接另一端的uid

有没有办法让UNIX域套接字监听器只接受来自特定用户的连接(chmod/chown不适用于抽象套接字afaik),或者在另一个word,获取传入连接的uid(在Linux上)?在Linux上使用抽象unix套接字的Dbus有一个函数GetConnectionUnixUser,polkit使用它来确定调用者。所以我想dbus-daemon一定有办法做到这一点。有谁知道它是如何工作的? 最佳答案 检查对等凭据的最简单方法是使用SO_PEERCRED.对套接字sock执行此操作:intlen;structucreducred;len=si

linux - 在 Linux 中仅更改一个线程的 UID/GID

有没有办法在多线程进程中只更改一个线程的UID/GID?这样做的原因是编写文件服务应用程序-除非调用者的uid/gid设置为正确的用户,否则不会强制执行ACL和配额,新文件/目录不会使用正确的uid/gid等创建.网络应用程序通常可以在开始时自行fork()并在单独的进程中处理每个用户请求。如果需要共享数据,就必须经过某种共享内存。然而,例如默认情况下,FUSE(linux用户文件系统)使用多线程,并且与python绑定(bind)结合使用,尝试使用fork模型是不切实际的。整个进程的“一致”UID似乎符合POSIX标准,但是旧的Linux并没有遵循POSIX并且允许不同线程使用不同的

android - 如何在 Android 上使用 UID 获取用户名?

我有几个像这样的UID:10022,10011,1000其实我知道他们的用户名是u0_a22,u0_a11,system。但问题是,如何使用UID获取用户名?根本没有/etc/passwd文件。 最佳答案 我编写了一个实用程序类,通过对android_filesystem_config.h中的值进行硬编码来获取UID/GID名称.用法:Stringuid=AndroidFilesystemConfig.getNameForId(1000);AndroidFilesystemConfig.javaimportandroid.os.Bu

c - 在保留 CAP_SYS_NICE 的同时删除根 UID

我正在尝试编写一个守护进程,它将使用setuid位以root身份启动,然后快速恢复到运行该进程的用户。然而,守护进程需要保留将新线程设置为“实时”优先级的能力。我用来设置优先级的代码如下(一旦创建就在线程中运行):structsched_paramsched_param;memset(&sched_param,0,sizeof(sched_param));sched_param.sched_priority=90;if(-1==sched_setscheduler(0,SCHED_FIFO,&sched_param)){//Ifwegethere,wehaveanerror,forex

linux - EUID 和 UID 之间的区别?

EUID与UID不同。脚本中在什么上下文中使用了这两个?我试图通过echo"UIDis$UIDandEUIDis$EUID"获取值,但只有空格作为输出。我的机器运行Ubuntu12.04LTS。在一些网站上看到,这通常用于检查是否是root用户,但无法正确区分。 最佳答案 当程序运行set-uid时它们是不同的。有效UID是你改成的用户,UID是原来的用户。 关于linux-EUID和UID之间的区别?,我们在StackOverflow上找到一个类似的问题: